diff options
Diffstat (limited to 'src/platform/tests/test-link.c')
-rw-r--r-- | src/platform/tests/test-link.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/platform/tests/test-link.c b/src/platform/tests/test-link.c index 024ecf0e92..b222721ef0 100644 --- a/src/platform/tests/test-link.c +++ b/src/platform/tests/test-link.c @@ -1442,6 +1442,52 @@ out: /*****************************************************************************/ +static void +test_nl_bugs_spuroius_newlink (void) +{ + const char *IFACE_BOND0 = "nm-test-bond0"; + const char *IFACE_DUMMY0 = "nm-test-dummy0"; + int ifindex_bond0, ifindex_dummy0; + const NMPlatformLink *pllink; + + /* create veth pair. */ + nmtstp_run_command_check ("ip link add %s type dummy", IFACE_DUMMY0); + ifindex_dummy0 = nmtstp_assert_wait_for_link (IFACE_DUMMY0, NM_LINK_TYPE_DUMMY, 100)->ifindex; + + nmtstp_run_command_check ("ip link add %s type bond", IFACE_BOND0); + ifindex_bond0 = nmtstp_assert_wait_for_link (IFACE_BOND0, NM_LINK_TYPE_BOND, 100)->ifindex; + + nmtstp_link_set_updown (-1, ifindex_bond0, TRUE); + + nmtstp_run_command_check ("ip link set %s master %s", IFACE_DUMMY0, IFACE_BOND0); + NMTST_WAIT_ASSERT (100, { + nmtstp_wait_for_signal (50); + + pllink = nm_platform_link_get (NM_PLATFORM_GET, ifindex_dummy0); + g_assert (pllink); + if (pllink->master == ifindex_bond0) { + break; + } + }); + + nmtstp_run_command_check ("ip link del %s", IFACE_BOND0); + nmtstp_wait_for_signal (50); + nm_platform_process_events (NM_PLATFORM_GET); + pllink = nm_platform_link_get (NM_PLATFORM_GET, ifindex_bond0); + g_assert (!pllink); + + NMTST_WAIT (100, { + nmtstp_wait_for_signal (50); + }); + pllink = nm_platform_link_get (NM_PLATFORM_GET, ifindex_bond0); + g_assert (!pllink); + + nm_platform_link_delete (NM_PLATFORM_GET, ifindex_bond0); + nm_platform_link_delete (NM_PLATFORM_GET, ifindex_dummy0); +} + +/*****************************************************************************/ + void init_tests (int *argc, char ***argv) { @@ -1479,5 +1525,6 @@ setup_tests (void) g_test_add_func ("/link/software/vlan/set-xgress", test_vlan_set_xgress); g_test_add_func ("/link/nl-bugs/veth", test_nl_bugs_veth); + g_test_add_func ("/link/nl-bugs/spurious-newlink", test_nl_bugs_spuroius_newlink); } } |