summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2015-01-25 20:03:56 +0100
committerLubomir Rintel <lkundrak@v3.sk>2015-01-26 13:30:51 +0100
commit85e27e29374fc9844fc1512a20cd1be552e8e02f (patch)
tree19e30b2678e6300692d78f202f78e61cd91d07b8
parent24f1067a3c5be1b491ded4de38c897909c1fe4ee (diff)
downloadNetworkManager-lr/route-manager-rh740064-v3.tar.gz
fixup! route-manager: add testlr/route-manager-rh740064-v3
This modifies the test for the clash resolution logic after the previous commit modified it; improves the test cases to test the changed behavior.
-rw-r--r--src/tests/test-route-manager.c126
1 files changed, 85 insertions, 41 deletions
diff --git a/src/tests/test-route-manager.c b/src/tests/test-route-manager.c
index 2637abe536..5867dc7df0 100644
--- a/src/tests/test-route-manager.c
+++ b/src/tests/test-route-manager.c
@@ -92,7 +92,7 @@ setup_dev1_ip4 (int ifindex)
route.source = NM_IP_CONFIG_SOURCE_USER;
inet_pton (AF_INET, "7.0.0.0", &route.network);
route.plen = 8;
- route.gateway = INADDR_ANY;
+ inet_pton (AF_INET, "6.6.6.1", &route.gateway);
route.metric = 22;
g_array_append_val (routes, route);
@@ -119,6 +119,27 @@ test_ip4 (test_fixture *fixture, gconstpointer user_data)
{
GArray *routes;
+ NMPlatformIP4Route state0[] = {
+ {
+ .source = NM_IP_CONFIG_SOURCE_USER,
+ .network = nmtst_inet4_from_string ("6.6.6.0"),
+ .plen = 24,
+ .ifindex = fixture->ifindex0,
+ .gateway = INADDR_ANY,
+ .metric = 20,
+ .mss = 0,
+ },
+ {
+ .source = NM_IP_CONFIG_SOURCE_USER,
+ .network = nmtst_inet4_from_string ("7.0.0.0"),
+ .plen = 8,
+ .ifindex = fixture->ifindex0,
+ .gateway = nmtst_inet4_from_string ("6.6.6.1"),
+ .metric = 21,
+ .mss = 0,
+ },
+ };
+
NMPlatformIP4Route state1[] = {
{
.source = NM_IP_CONFIG_SOURCE_USER,
@@ -133,7 +154,7 @@ test_ip4 (test_fixture *fixture, gconstpointer user_data)
.source = NM_IP_CONFIG_SOURCE_USER,
.network = nmtst_inet4_from_string ("6.6.6.0"),
.plen = 24,
- .ifindex = fixture->ifindex0,
+ .ifindex = fixture->ifindex1,
.gateway = INADDR_ANY,
.metric = 20,
.mss = 0,
@@ -143,7 +164,7 @@ test_ip4 (test_fixture *fixture, gconstpointer user_data)
.network = nmtst_inet4_from_string ("7.0.0.0"),
.plen = 8,
.ifindex = fixture->ifindex1,
- .gateway = INADDR_ANY,
+ .gateway = nmtst_inet4_from_string ("6.6.6.1"),
.metric = 22,
.mss = 0,
},
@@ -154,16 +175,16 @@ test_ip4 (test_fixture *fixture, gconstpointer user_data)
.source = NM_IP_CONFIG_SOURCE_USER,
.network = nmtst_inet4_from_string ("7.0.0.0"),
.plen = 8,
- .ifindex = fixture->ifindex1,
- .gateway = INADDR_ANY,
- .metric = 22,
+ .ifindex = fixture->ifindex0,
+ .gateway = nmtst_inet4_from_string ("6.6.6.1"),
+ .metric = 21,
.mss = 0,
},
{
.source = NM_IP_CONFIG_SOURCE_USER,
.network = nmtst_inet4_from_string ("6.6.6.0"),
.plen = 24,
- .ifindex = fixture->ifindex1,
+ .ifindex = fixture->ifindex0,
.gateway = INADDR_ANY,
.metric = 20,
.mss = 0,
@@ -171,33 +192,30 @@ test_ip4 (test_fixture *fixture, gconstpointer user_data)
};
setup_dev0_ip4 (fixture->ifindex0);
- setup_dev1_ip4 (fixture->ifindex1);
- /* Check that the 6.6.6.0/24 didn't clash and everything else is fine too. */
+ /* Assert dev0 got configured as requested. */
routes = ip4_routes (fixture);
-
- g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state1));
- nmtst_platform_ip4_routes_equal ((NMPlatformIP4Route *) routes->data, state1, routes->len);
+ g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state0));
+ nmtst_platform_ip4_routes_equal ((NMPlatformIP4Route *) routes->data, state0, routes->len);
g_array_free (routes, TRUE);
setup_dev1_ip4 (fixture->ifindex1);
- setup_dev0_ip4 (fixture->ifindex0);
- /* Ensure nothing changed. */
+ /* Check that clashing routes got overriden. */
routes = ip4_routes (fixture);
g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state1));
nmtst_platform_ip4_routes_equal ((NMPlatformIP4Route *) routes->data, state1, routes->len);
g_array_free (routes, TRUE);
- nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex0);
+ nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex1);
- /* Check that the 6.6.6.0/24 is now on dev1 and other dev0 routes went away. */
+ /* Assert that routes got back after dev1 was removed. */
routes = ip4_routes (fixture);
g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state2));
nmtst_platform_ip4_routes_equal ((NMPlatformIP4Route *) routes->data, state2, routes->len);
g_array_free (routes, TRUE);
- nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex1);
+ nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex0);
/* No routes left. */
routes = ip4_routes (fixture);
@@ -287,7 +305,7 @@ setup_dev1_ip6 (int ifindex)
route = nmtst_platform_ip6_route_full ("2001:db8:abad:c0de::",
64,
- NULL,
+ "2001:db8:8086::1",
ifindex,
NM_IP_CONFIG_SOURCE_USER,
22,
@@ -317,6 +335,36 @@ test_ip6 (test_fixture *fixture, gconstpointer user_data)
{
GArray *routes;
+ NMPlatformIP6Route state0[] = {
+ {
+ .source = NM_IP_CONFIG_SOURCE_USER,
+ .network = *nmtst_inet6_from_string ("2001:db8:8086::"),
+ .plen = 48,
+ .ifindex = fixture->ifindex0,
+ .gateway = in6addr_any,
+ .metric = 20,
+ .mss = 0,
+ },
+ {
+ .source = NM_IP_CONFIG_SOURCE_USER,
+ .network = *nmtst_inet6_from_string ("2001:db8:1337::"),
+ .plen = 48,
+ .ifindex = fixture->ifindex0,
+ .gateway = in6addr_any,
+ .metric = 1024,
+ .mss = 0,
+ },
+ {
+ .source = NM_IP_CONFIG_SOURCE_USER,
+ .network = *nmtst_inet6_from_string ("2001:db8:abad:c0de::"),
+ .plen = 64,
+ .ifindex = fixture->ifindex0,
+ .gateway = *nmtst_inet6_from_string ("2001:db8:8086::1"),
+ .metric = 21,
+ .mss = 0,
+ },
+ };
+
NMPlatformIP6Route state1[] = {
{
.source = NM_IP_CONFIG_SOURCE_USER,
@@ -331,7 +379,7 @@ test_ip6 (test_fixture *fixture, gconstpointer user_data)
.source = NM_IP_CONFIG_SOURCE_USER,
.network = *nmtst_inet6_from_string ("2001:db8:8086::"),
.plen = 48,
- .ifindex = fixture->ifindex0,
+ .ifindex = fixture->ifindex1,
.gateway = in6addr_any,
.metric = 20,
.mss = 0,
@@ -340,7 +388,7 @@ test_ip6 (test_fixture *fixture, gconstpointer user_data)
.source = NM_IP_CONFIG_SOURCE_USER,
.network = *nmtst_inet6_from_string ("2001:db8:1337::"),
.plen = 48,
- .ifindex = fixture->ifindex0,
+ .ifindex = fixture->ifindex1,
.gateway = in6addr_any,
.metric = 1024,
.mss = 0,
@@ -350,7 +398,7 @@ test_ip6 (test_fixture *fixture, gconstpointer user_data)
.network = *nmtst_inet6_from_string ("2001:db8:abad:c0de::"),
.plen = 64,
.ifindex = fixture->ifindex1,
- .gateway = in6addr_any,
+ .gateway = *nmtst_inet6_from_string ("2001:db8:8086::1"),
.metric = 22,
.mss = 0,
},
@@ -361,61 +409,57 @@ test_ip6 (test_fixture *fixture, gconstpointer user_data)
.source = NM_IP_CONFIG_SOURCE_USER,
.network = *nmtst_inet6_from_string ("2001:db8:abad:c0de::"),
.plen = 64,
- .ifindex = fixture->ifindex1,
- .gateway = in6addr_any,
- .metric = 22,
+ .ifindex = fixture->ifindex0,
+ .gateway = *nmtst_inet6_from_string ("2001:db8:8086::1"),
+ .metric = 21,
.mss = 0,
},
{
.source = NM_IP_CONFIG_SOURCE_USER,
- .network = *nmtst_inet6_from_string ("2001:db8:8086::"),
+ .network = *nmtst_inet6_from_string ("2001:db8:1337::"),
.plen = 48,
- .ifindex = fixture->ifindex1,
+ .ifindex = fixture->ifindex0,
.gateway = in6addr_any,
- .metric = 20,
+ .metric = 1024,
.mss = 0,
},
{
.source = NM_IP_CONFIG_SOURCE_USER,
- .network = *nmtst_inet6_from_string ("2001:db8:1337::"),
+ .network = *nmtst_inet6_from_string ("2001:db8:8086::"),
.plen = 48,
- .ifindex = fixture->ifindex1,
+ .ifindex = fixture->ifindex0,
.gateway = in6addr_any,
- .metric = 1024,
+ .metric = 20,
.mss = 0,
},
};
setup_dev0_ip6 (fixture->ifindex0);
- setup_dev1_ip6 (fixture->ifindex1);
- /* Check that the 2001:db8:8086::/48 didn't clash and everything else is fine too. */
+ /* Assert dev0 got configured as requested. */
routes = ip6_routes (fixture);
- g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state1));
- nmtst_platform_ip6_routes_equal ((NMPlatformIP6Route *) routes->data, state1, routes->len);
+ g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state0));
+ nmtst_platform_ip6_routes_equal ((NMPlatformIP6Route *) routes->data, state0, routes->len);
g_array_free (routes, TRUE);
setup_dev1_ip6 (fixture->ifindex1);
- setup_dev0_ip6 (fixture->ifindex0);
- /* Ensure nothing changed. */
+ /* Check that clashing routes got overriden. */
routes = ip6_routes (fixture);
g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state1));
nmtst_platform_ip6_routes_equal ((NMPlatformIP6Route *) routes->data, state1, routes->len);
g_array_free (routes, TRUE);
- nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex0);
+ nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex1);
- /* Check that the 2001:db8:8086::/48 is now on dev1 and other dev0 routes went away. */
+ /* Assert that routes got back after dev1 was removed. */
routes = ip6_routes (fixture);
g_assert_cmpint (routes->len, ==, G_N_ELEMENTS (state2));
-
-
nmtst_platform_ip6_routes_equal ((NMPlatformIP6Route *) routes->data, state2, routes->len);
g_array_free (routes, TRUE);
- nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex1);
+ nm_route_manager_route_flush (nm_route_manager_get (), fixture->ifindex0);
/* No routes left. */
routes = ip6_routes (fixture);