From 17202beb0ab51a65000a4a3e59a16445304fb760 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 22 Jul 2026 08:47:56 +0300 Subject: [PATCH] test_ntp: use compat headers instead of arpa/inet.h, add rule to AGENTS.md --- AGENTS.md | 1 + tests/test_ntp.c | 29 ++++++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4506d3be..87aae62d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -421,6 +421,7 @@ KEEPALIVE=21, ETCPROUTE=22, BBR=23, ETCP_DUMP=24 - Не делай функций-посредников: лучше сразу вызывать target функцию без вложенных вызовов - Нельзя ничего восстанавливать из репозитория не спрашивая - Для отладки не printf а DEBUG_* +- Запрещено прямое включение arpa/inet.h, sys/time.h, unistd.h — использовать ../lib/platform_compat.h + socket_compat.h - Перед сборкой всегда make clean - Все лишнее что менял при отладке - строго вернуть назад в состояние до вмешательства diff --git a/tests/test_ntp.c b/tests/test_ntp.c index 7a307b2f..773704f3 100644 --- a/tests/test_ntp.c +++ b/tests/test_ntp.c @@ -9,10 +9,9 @@ #include #include #include -#include #include -#include -#include +#include "../lib/platform_compat.h" +#include "../lib/socket_compat.h" #include "../lib/debug_config.h" #include "../lib/u_async.h" #include "../src/utun_instance.h" @@ -55,8 +54,8 @@ static uint64_t timeval_to_ntp(struct timeval *tv) { static void* test_server_thread(void* arg) { (void)arg; - int sock = socket(AF_INET, SOCK_DGRAM, 0); - if (sock < 0) { g_server_running = 0; return NULL; } + socket_t sock = socket_create_udp(AF_INET); + if (sock == SOCKET_INVALID) { g_server_running = 0; return NULL; } struct sockaddr_in addr; memset(&addr, 0, sizeof(addr)); @@ -64,7 +63,7 @@ static void* test_server_thread(void* arg) { addr.sin_addr.s_addr = inet_addr("127.0.0.1"); addr.sin_port = 0; - if (bind(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) { close(sock); g_server_running = 0; return NULL; } + if (bind(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) { socket_close_wrapper(sock); g_server_running = 0; return NULL; } socklen_t addr_len = sizeof(addr); getsockname(sock, (struct sockaddr*)&addr, &addr_len); @@ -76,7 +75,7 @@ static void* test_server_thread(void* arg) { FD_ZERO(&fds); FD_SET(sock, &fds); tv.tv_sec = 1; tv.tv_usec = 0; - int r = select(sock + 1, &fds, NULL, NULL, &tv); + int r = select((int)(sock + 1), &fds, NULL, NULL, &tv); if (r <= 0) continue; struct ntp_packet request; @@ -89,7 +88,7 @@ static void* test_server_thread(void* arg) { if (mode != 3) continue; // only respond to client-mode struct timeval now; - gettimeofday(&now, NULL); + utun_gettimeofday(&now, NULL); now.tv_sec += TEST_KNOWN_OFFSET_SEC; uint64_t fake_ntp = timeval_to_ntp(&now); @@ -104,14 +103,22 @@ static void* test_server_thread(void* arg) { sendto(sock, (const char*)&reply, sizeof(reply), 0, (struct sockaddr*)&client, sizeof(client)); } - close(sock); + socket_close_wrapper(sock); return NULL; } +static void platform_sleep_ms(int ms) { +#ifdef _WIN32 + Sleep(ms); +#else + usleep(ms * 1000); +#endif +} + static int wait_for_port(void) { for (int i = 0; i < 200; i++) { if (g_server_port != 0) return 0; - usleep(5000); + platform_sleep_ms(5); } return -1; } @@ -226,7 +233,7 @@ int main(void) { // Check ntp_time_get_us internal consistency { struct timeval tv; - gettimeofday(&tv, NULL); + utun_gettimeofday(&tv, NULL); int64_t raw_us = (int64_t)tv.tv_sec * 1000000LL + tv.tv_usec; int64_t corrected_us = ntp_time_get_us(inst); int64_t expected_us = raw_us - inst->ntp.offset_us;