From 728ca4fb953992be7100a33c5720496ae5fef5c1 Mon Sep 17 00:00:00 2001 From: "Fabio M. Di Nitto" Date: Thu, 26 Sep 2019 07:18:46 +0200 Subject: [PATCH] [tests] add common function to sleep based on how the test suite is running Address issue while waiting for host to be up and PMTUd first run. Signed-off-by: Fabio M. Di Nitto --- libknet/tests/api_knet_handle_pmtud_set.c | 6 +++--- libknet/tests/api_knet_link_set_enable.c | 2 +- libknet/tests/test-common.c | 11 +++++++++++ libknet/tests/test-common.h | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/libknet/tests/api_knet_handle_pmtud_set.c b/libknet/tests/api_knet_handle_pmtud_set.c index 440436884..15b1dddee 100644 --- a/libknet/tests/api_knet_handle_pmtud_set.c +++ b/libknet/tests/api_knet_handle_pmtud_set.c @@ -167,7 +167,7 @@ static void test(void) /* * wait for PMTUd to pick up the change */ - sleep(1); + test_sleep(knet_h, 1); flush_logs(logfds[0], stdout); if (knet_h->data_mtu != data_mtu - 64) { @@ -196,11 +196,11 @@ static void test(void) /* * wait for PMTUd to pick up the change */ - sleep(2); + test_sleep(knet_h, 1); flush_logs(logfds[0], stdout); if (knet_h->data_mtu != data_mtu) { - printf("knet_handle_pmtud_set failed to redetect MTU\n"); + printf("knet_handle_pmtud_set failed to redetect MTU: detected mtu: %u data_mtu: %u \n", knet_h->data_mtu, data_mtu); knet_link_set_enable(knet_h, 1, 0, 0); knet_link_clear_config(knet_h, 1, 0); knet_host_remove(knet_h, 1); diff --git a/libknet/tests/api_knet_link_set_enable.c b/libknet/tests/api_knet_link_set_enable.c index 17e6e031c..fc233ea37 100644 --- a/libknet/tests/api_knet_link_set_enable.c +++ b/libknet/tests/api_knet_link_set_enable.c @@ -293,7 +293,7 @@ static void test_sctp(void) } printf("Wait 2 seconds for sockets to connect\n"); - sleep(2); + test_sleep(knet_h, 2); printf("Test knet_link_set_enable with correct values (0)\n"); diff --git a/libknet/tests/test-common.c b/libknet/tests/test-common.c index 58216083a..8ebb29c4a 100644 --- a/libknet/tests/test-common.c +++ b/libknet/tests/test-common.c @@ -478,6 +478,15 @@ int make_local_sockaddr6(struct sockaddr_storage *lo, uint16_t offset) return _make_local_sockaddr(lo, offset, AF_INET6); } +void test_sleep(knet_handle_t knet_h, int seconds) +{ + if (is_memcheck() || is_helgrind()) { + printf("Test suite is running under valgrind, adjusting sleep timers\n"); + seconds = seconds * 16; + } + sleep(seconds); +} + int wait_for_host(knet_handle_t knet_h, uint16_t host_id, int seconds, int logfd, FILE *std) { int i = 0; @@ -490,6 +499,8 @@ int wait_for_host(knet_handle_t knet_h, uint16_t host_id, int seconds, int logfd while (i < seconds) { flush_logs(logfd, std); if (knet_h->host_index[host_id]->status.reachable == 1) { + printf("Waiting for host to settle\n"); + test_sleep(knet_h, 1); return 0; } printf("waiting host %u to be reachable for %d more seconds\n", host_id, seconds - i); diff --git a/libknet/tests/test-common.h b/libknet/tests/test-common.h index f1375ab8c..963c43826 100644 --- a/libknet/tests/test-common.h +++ b/libknet/tests/test-common.h @@ -71,5 +71,6 @@ int make_local_sockaddr(struct sockaddr_storage *lo, uint16_t offset); int make_local_sockaddr6(struct sockaddr_storage *lo, uint16_t offset); int wait_for_host(knet_handle_t knet_h, uint16_t host_id, int seconds, int logfd, FILE *std); int wait_for_packet(knet_handle_t knet_h, int seconds, int datafd, int logfd, FILE *std); +void test_sleep(knet_handle_t knet_h, int seconds); #endif