From 3460ad7f31fb1daa529662a1b2ac4d4b0f5e9a7e Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Wed, 26 Apr 2017 16:00:03 +0200 Subject: [PATCH] osmux: Use osmo_gettimeofday for testing puroposes This way we can use fake time and osmux_test take 700ms instead of >2sec to run. Change-Id: Ic39cab74400aca8262a00c0d06884230b1a15ca3 --- src/osmux.c | 4 ++-- tests/osmux/osmux_test.c | 28 ++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/osmux.c b/src/osmux.c index 4d12427..d12a39a 100644 --- a/src/osmux.c +++ b/src/osmux.c @@ -777,7 +777,7 @@ static void osmux_tx_cb(void *data) #ifdef DEBUG_TIMING struct timeval now, diff; - gettimeofday(&now, NULL); + osmo_gettimeofday(&now, NULL); timersub(&now, &h->start, &diff); timersub(&diff,&h->when, &diff); LOGP(DLMIB, LOGL_DEBUG, "we are lagging %lu.%.6lu in scheduled " @@ -806,7 +806,7 @@ osmux_tx(struct msgb *msg, struct timeval *when, h->timer.data = h; #ifdef DEBUG_TIMING - gettimeofday(&h->start, NULL); + osmo_gettimeofday(&h->start, NULL); h->when.tv_sec = when->tv_sec; h->when.tv_usec = when->tv_usec; #endif diff --git a/tests/osmux/osmux_test.c b/tests/osmux/osmux_test.c index 9941ce3..63f89f1 100644 --- a/tests/osmux/osmux_test.c +++ b/tests/osmux/osmux_test.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include @@ -54,6 +55,8 @@ static uint8_t rtp_pkt[] = { 0xf2, 0x26, 0x33, 0x65, 0x54, }; +#define PKT_TIME_USEC 20*1000 + static int rtp_pkts; static int mark_pkts; #if OSMUX_TEST_USE_TIMING @@ -67,7 +70,7 @@ static void tx_cb(struct msgb *msg, void *data) #if OSMUX_TEST_USE_TIMING struct timeval now, diff; - gettimeofday(&now, NULL); + osmo_gettimeofday(&now, NULL); timersub(&now, &last, &diff); last = now; @@ -159,10 +162,17 @@ static void osmux_test_marker(int ccid) { osmux_xfrm_input_deliver(&h_input); } } +#if !OSMUX_TEST_USE_TIMING + osmo_gettimeofday_override_add(0, PKT_TIME_USEC); +#endif } - while (rtp_pkts) + while (rtp_pkts) { +#if !OSMUX_TEST_USE_TIMING + osmo_gettimeofday_override_add(1, 0); +#endif osmo_select_main(0); + } if (mark_pkts) { fprintf(stdout, "RTP M bit (marker) mismatch! %d\n", mark_pkts); @@ -204,7 +214,7 @@ static void osmux_test_loop(int ccid) if (i % 4 == 0) { #if OSMUX_TEST_USE_TIMING - gettimeofday(&last, NULL); + osmo_gettimeofday(&last, NULL); #endif /* After four RTP messages, squash them into the OSMUX @@ -217,8 +227,12 @@ static void osmux_test_loop(int ccid) * messages that are extracted from OSMUX has been * delivered. */ - for (j = 0; j < k-2; j++) + for (j = 0; j < k-2; j++) { osmo_select_main(0); +#if !OSMUX_TEST_USE_TIMING + osmo_gettimeofday_override_add(0, PKT_TIME_USEC); +#endif + } k = 0; } @@ -239,6 +253,12 @@ int main(void) exit(EXIT_FAILURE); } +#if !OSMUX_TEST_USE_TIMING + /* This test uses fake time to speedup the run, unless we want to manually + * test time specific stuff */ + osmo_gettimeofday_override = true; +#endif + /* This test doesn't use it, but osmux requires it internally. */ osmo_init_logging(&osmux_test_log_info); log_set_log_level(osmo_stderr_target, LOGL_DEBUG);