summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-04-14 07:35:08 (GMT)
committerThomas Haller <thaller@redhat.com>2022-05-06 11:01:25 (GMT)
commita0d79711366286344e476b1fd44594edd1b773e0 (patch)
treec2794d46554107e6e0c546e7c17388cd2eeb6761
parent3497cf3c59e5a071189ebc1ef4b30435c778451a (diff)
downloadlibnl-th/test-routes.zip
libnl-th/test-routes.tar.gz
libnl-th/test-routes.tar.bz2
-rw-r--r--tests/cksuite-all-attr.c40
-rw-r--r--tests/cksuite-all-netns.c32
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;