From b6ff26fb2fb5af77b338718f7902ecf551f73beb Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Wed, 20 Jun 2018 14:11:15 +0200 Subject: [PATCH] platform/tests: fix race in tests Otherwise, we easily get a failure test:ERROR:src/platform/tests/test-cleanup.c:78:test_cleanup_internal: assertion failed (addresses6->len == 2): (1 == 2) Avoid that by waiting for kernel to add the link-local address. (cherry picked from commit fb63d8d7068e6c1575b255dc2a962c5bcc1036cf) --- src/platform/tests/test-cleanup.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/platform/tests/test-cleanup.c b/src/platform/tests/test-cleanup.c index a213b31ff0..8b8c87d833 100644 --- a/src/platform/tests/test-cleanup.c +++ b/src/platform/tests/test-cleanup.c @@ -59,6 +59,22 @@ test_cleanup_internal (void) ifindex = nm_platform_link_get_ifindex (NM_PLATFORM_GET, DEVICE_NAME); g_assert (ifindex > 0); + /* wait for kernel to add the IPv6 link local address... it takes a bit. */ + NMTST_WAIT_ASSERT (100, { + gs_unref_array GArray *addrs = NULL; + const NMPlatformIP6Address *a; + + if (nmtst_wait_iteration > 0) { + nmtstp_wait_for_signal (NM_PLATFORM_GET, nmtst_wait_remaining_us / 1000); + nm_platform_process_events (NM_PLATFORM_GET); + } + addrs = nmtstp_platform_ip6_address_get_all (NM_PLATFORM_GET, ifindex); + if ( addrs->len == 1 + && (a = &g_array_index (addrs, NMPlatformIP6Address, 0)) + && IN6_IS_ADDR_LINKLOCAL (&a->address)) + break; + }); + /* Add routes and addresses */ g_assert (nm_platform_ip4_address_add (NM_PLATFORM_GET, ifindex, addr4, plen4, addr4, lifetime, preferred, 0, NULL)); g_assert (nm_platform_ip6_address_add (NM_PLATFORM_GET, ifindex, addr6, plen6, in6addr_any, lifetime, preferred, flags));