diff options
-rw-r--r-- | tests/cksuite-all-attr.c | 40 | ||||
-rw-r--r-- | tests/cksuite-all-netns.c | 32 |
2 files changed, 72 insertions, 0 deletions
diff --git a/tests/cksuite-all-attr.c b/tests/cksuite-all-attr.c index 6b1fdf9..4929937 100644 --- a/tests/cksuite-all-attr.c +++ b/tests/cksuite-all-attr.c @@ -141,6 +141,45 @@ START_TEST(test_nltst_strtok) /*****************************************************************************/ +START_TEST(test_nltst_expected_routes_parse) +{ + /* This is a unit test for testing the unit-test helper function + * _nltst_expected_routes_parse(). */ + +#define _check_erp(str, exp_addr_family, exp_addr_pattern, exp_plen) \ + do { \ + const char *_str = (str); \ + const int _exp_addr_family = (exp_addr_family); \ + const char *const _exp_addr_pattern = (exp_addr_pattern); \ + const int _exp_plen = (exp_plen); \ + _nltst_auto_clear_select_route NLTstSelectRoute \ + _select_route = { 0 }; \ + \ + _nltst_expected_routes_parse(_str, &_select_route); \ + ck_assert_int_eq(_exp_addr_family, _select_route.addr_family); \ + if (_nltst_inet_valid(AF_UNSPEC, _exp_addr_pattern)) { \ + ck_assert_str_eq(_exp_addr_pattern, \ + _select_route.addr); \ + ck_assert_ptr_null(_select_route.addr_pattern); \ + } else { \ + ck_assert_str_eq(_exp_addr_pattern, \ + _select_route.addr_pattern); \ + ck_assert_ptr_null(_select_route.addr); \ + } \ + ck_assert_int_eq(_exp_plen, _select_route.plen); \ + } while (0) + + _check_erp("0.0.0.0", AF_INET, "0.0.0.0", -1); + _check_erp("4 0.0.0.0/0", AF_INET, "0.0.0.0", 0); + _check_erp(" 6\n 0:0::/0", AF_INET6, "::", 0); + _check_erp(" \n 0:0::/100", AF_INET6, "::", 100); + _check_erp("6 0:0::*/0 ", AF_INET6, "0:0::*", 0); + _check_erp("6 0:0::*/128 ", AF_INET6, "0:0::*", 128); + _check_erp("6 0:0::* ", AF_INET6, "0:0::*", -1); +} + +/*****************************************************************************/ + Suite *make_nl_attr_suite(void) { Suite *suite = suite_create("Netlink attributes"); @@ -150,6 +189,7 @@ Suite *make_nl_attr_suite(void) tcase_add_test(tc, msg_construct); tcase_add_test(tc, clone_cls_u32); tcase_add_test(tc, test_nltst_strtok); + tcase_add_test(tc, test_nltst_expected_routes_parse); suite_add_tcase(suite, tc); return suite; diff --git a/tests/cksuite-all-netns.c b/tests/cksuite-all-netns.c index 872c54e..a31ea07 100644 --- a/tests/cksuite-all-netns.c +++ b/tests/cksuite-all-netns.c @@ -6,6 +6,7 @@ #include "netlink-private/utils.h" #include "netlink/route/link.h" +#include "netlink/route/route.h" #include "cksuite-all.h" @@ -91,6 +92,36 @@ START_TEST(cache_and_clone) } END_TEST +/*****************************************************************************/ + +static void _route_init(int addr_family, struct nl_sock **sk, + struct nl_cache **cache) +{ + ck_assert(sk && !*sk); + ck_assert(cache && !*cache); + + *sk = _nltst_socket(NETLINK_ROUTE); + *cache = _nltst_rtnl_route_alloc_cache(*sk, addr_family); +} + +START_TEST(route_1) +{ + _nl_auto_nl_socket struct nl_sock *sk = NULL; + _nl_auto_nl_cache struct nl_cache *cache = NULL; + + _nltst_add_link(NULL, "v1", "dummy"); + //system("ip -d link set v1 up"); + //system("ip -d link"); + //system("ip -d route show table all"); + + _route_init(AF_INET6, &sk, &cache); + + //_nltst_assert_route_cache(cache, "0.0.0.0/0", "", ""); +} +END_TEST + +/*****************************************************************************/ + Suite *make_nl_netns_suite(void) { Suite *suite = suite_create("netns"); @@ -99,6 +130,7 @@ Suite *make_nl_netns_suite(void) tcase_add_checked_fixture(tc, nltst_netns_fixture_setup, nltst_netns_fixture_teardown); tcase_add_test(tc, cache_and_clone); + tcase_add_test(tc, route_1); suite_add_tcase(suite, tc); return suite; |