diff options
author | Thomas Haller <thaller@redhat.com> | 2022-11-30 14:44:57 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2023-01-19 08:56:22 +0100 |
commit | d5e33bf660d76a4c0ff6a0735fdce57692bb9755 (patch) | |
tree | 2ff34b243d50b4bb1a71256a260c942c55bfe3ed | |
parent | 5579fca9163edc72cec443e2e6102015eda0743a (diff) |
platform/tests: extend nmtstp_env1_add_test_func() to create more interfaces
nmtstp_env1_add_test_func() prepares a certain environment (with dummy
interface) that is used by some tests. Extend it, to allow creating more
than one interface (currently up to two).
-rw-r--r-- | src/core/platform/tests/test-address.c | 2 | ||||
-rw-r--r-- | src/core/platform/tests/test-common.c | 10 | ||||
-rw-r--r-- | src/core/platform/tests/test-common.h | 129 | ||||
-rw-r--r-- | src/core/platform/tests/test-route.c | 4 | ||||
-rw-r--r-- | src/core/platform/tests/test-tc.c | 8 |
5 files changed, 93 insertions, 60 deletions
diff --git a/src/core/platform/tests/test-address.c b/src/core/platform/tests/test-address.c index 8e5ad13b43..0bce00c421 100644 --- a/src/core/platform/tests/test-address.c +++ b/src/core/platform/tests/test-address.c @@ -453,7 +453,7 @@ _nmtstp_init_tests(int *argc, char ***argv) void _nmtstp_setup_tests(void) { -#define add_test_func(testpath, test_func) nmtstp_env1_add_test_func(testpath, test_func, FALSE) +#define add_test_func(testpath, test_func) nmtstp_env1_add_test_func(testpath, test_func, 1, FALSE) add_test_func("/address/ipv4/general", test_ip4_address_general); add_test_func("/address/ipv6/general", test_ip6_address_general); diff --git a/src/core/platform/tests/test-common.c b/src/core/platform/tests/test-common.c index 6427071b8f..4348323cbb 100644 --- a/src/core/platform/tests/test-common.c +++ b/src/core/platform/tests/test-common.c @@ -22,8 +22,14 @@ (data)->ifname ? " ifname '" : "", (data)->ifname ?: "", (data)->ifname ? "'" : "", \ (data)->received_count -int NMTSTP_ENV1_IFINDEX = -1; -int NMTSTP_ENV1_EX = -1; +int NMTSTP_ENV1_IFINDEXES[]; + +const char *const NMTSTP_ENV1_DEVICE_NAME[] = { + "nm-test-device0", + "nm-test-device1", +}; + +int NMTSTP_ENV1_EX = -1; /*****************************************************************************/ diff --git a/src/core/platform/tests/test-common.h b/src/core/platform/tests/test-common.h index 9319c79b8d..825d3a4817 100644 --- a/src/core/platform/tests/test-common.h +++ b/src/core/platform/tests/test-common.h @@ -18,8 +18,6 @@ #include "nm-test-utils-core.h" -#define DEVICE_NAME "nm-test-device" - /*****************************************************************************/ #define nmtstp_normalize_jiffies_time(requested_value, kernel_value) \ @@ -535,36 +533,47 @@ void nmtstp_link_delete(NMPlatform *platform, /*****************************************************************************/ -extern int NMTSTP_ENV1_IFINDEX; +extern int NMTSTP_ENV1_IFINDEXES[2]; +extern const char *const NMTSTP_ENV1_DEVICE_NAME[G_N_ELEMENTS(NMTSTP_ENV1_IFINDEXES)]; + +#define DEVICE_NAME "nm-test-device0" +#define NMTSTP_ENV1_IFINDEX (NMTSTP_ENV1_IFINDEXES[0]) + extern int NMTSTP_ENV1_EX; static inline void _nmtstp_env1_wrapper_setup(const NmtstTestData *test_data) { - int *p_ifindex; + int *p_ifindexes; + gpointer p_n_ifaces; gpointer p_ifup; - - nmtst_test_data_unpack(test_data, &p_ifindex, NULL, NULL, NULL, &p_ifup); - - g_assert(p_ifindex && *p_ifindex == -1); + int n_ifaces; + int i; _LOGT("TEST[%s]: setup", test_data->testpath); - nmtstp_link_delete(NM_PLATFORM_GET, -1, -1, DEVICE_NAME, FALSE); + nmtst_test_data_unpack(test_data, &p_ifindexes, &p_n_ifaces, NULL, NULL, NULL, &p_ifup); - g_assert(NMTST_NM_ERR_SUCCESS(nm_platform_link_dummy_add(NM_PLATFORM_GET, DEVICE_NAME, NULL))); + n_ifaces = GPOINTER_TO_UINT(p_n_ifaces); + g_assert_cmpint(n_ifaces, >=, 1); + g_assert_cmpint(n_ifaces, <=, (int) G_N_ELEMENTS(NMTSTP_ENV1_IFINDEXES)); - *p_ifindex = nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME); - g_assert_cmpint(*p_ifindex, >, 0); - g_assert_cmpint(NMTSTP_ENV1_IFINDEX, ==, -1); + for (i = 0; i < (int) G_N_ELEMENTS(NMTSTP_ENV1_IFINDEXES); i++) { + g_assert_cmpint(NMTSTP_ENV1_IFINDEXES[i], ==, 0); + g_assert_cmpint(p_ifindexes[i], ==, 0); + } - if (GPOINTER_TO_INT(p_ifup)) - g_assert(nm_platform_link_change_flags(NM_PLATFORM_GET, *p_ifindex, IFF_UP, TRUE) >= 0); + for (i = 0; i < n_ifaces; i++) { + p_ifindexes[i] = nmtstp_link_dummy_add(NULL, -1, NMTSTP_ENV1_DEVICE_NAME[i])->ifindex; + if (GPOINTER_TO_INT(p_ifup)) + nmtstp_link_set_updown(NULL, -1, p_ifindexes[i], TRUE); + } nm_platform_process_events(NM_PLATFORM_GET); - NMTSTP_ENV1_IFINDEX = *p_ifindex; - NMTSTP_ENV1_EX = nmtstp_run_command_check_external_global(); + for (i = 0; i < n_ifaces; i++) + NMTSTP_ENV1_IFINDEXES[i] = p_ifindexes[i]; + NMTSTP_ENV1_EX = nmtstp_run_command_check_external_global(); } static inline void @@ -575,7 +584,7 @@ _nmtstp_env1_wrapper_run(gconstpointer user_data) GTestFunc test_func; gconstpointer d; - nmtst_test_data_unpack(test_data, NULL, &test_func, &test_func_data, &d, NULL); + nmtst_test_data_unpack(test_data, NULL, NULL, &test_func, &test_func_data, &d, NULL); _LOGT("TEST[%s]: run", test_data->testpath); if (test_func) @@ -587,55 +596,73 @@ _nmtstp_env1_wrapper_run(gconstpointer user_data) static inline void _nmtstp_env1_wrapper_teardown(const NmtstTestData *test_data) { - int *p_ifindex; + int *p_ifindexes; + gpointer p_n_ifaces; + int n_ifaces; + int i; - nmtst_test_data_unpack(test_data, &p_ifindex, NULL, NULL, NULL, NULL); + _LOGT("TEST[%s]: teardown", test_data->testpath); - g_assert_cmpint(NMTSTP_ENV1_IFINDEX, ==, *p_ifindex); - NMTSTP_ENV1_IFINDEX = -1; + nmtst_test_data_unpack(test_data, &p_ifindexes, &p_n_ifaces, NULL, NULL, NULL, NULL); - _LOGT("TEST[%s]: teardown", test_data->testpath); + n_ifaces = GPOINTER_TO_UINT(p_n_ifaces); + g_assert_cmpint(n_ifaces, >=, 1); + g_assert_cmpint(n_ifaces, <=, (int) G_N_ELEMENTS(NMTSTP_ENV1_IFINDEXES)); + + for (i = 0; i < (int) G_N_ELEMENTS(NMTSTP_ENV1_IFINDEXES); i++) { + if (i < n_ifaces) + g_assert_cmpint(p_ifindexes[i], >, 0); + else + g_assert_cmpint(p_ifindexes[i], ==, 0); + g_assert_cmpint(NMTSTP_ENV1_IFINDEXES[i], ==, p_ifindexes[i]); + NMTSTP_ENV1_IFINDEXES[i] = 0; + } - g_assert_cmpint(*p_ifindex, ==, nm_platform_link_get_ifindex(NM_PLATFORM_GET, DEVICE_NAME)); - g_assert(nm_platform_link_delete(NM_PLATFORM_GET, *p_ifindex)); + for (i = 0; i < n_ifaces; i++) + nmtstp_link_delete(NULL, -1, p_ifindexes[i], NMTSTP_ENV1_DEVICE_NAME[i], TRUE); nm_platform_process_events(NM_PLATFORM_GET); _LOGT("TEST[%s]: finished", test_data->testpath); - *p_ifindex = -1; + for (i = 0; i < (int) G_N_ELEMENTS(NMTSTP_ENV1_IFINDEXES); i++) + p_ifindexes[i] = 0; } /* add test function, that set's up a particular environment, consisting * of a dummy device with ifindex NMTSTP_ENV1_IFINDEX. */ -#define _nmtstp_env1_add_test_func_full(testpath, test_func, test_data_func, arg, ifup) \ - nmtst_add_test_func_full(testpath, \ - _nmtstp_env1_wrapper_run, \ - _nmtstp_env1_wrapper_setup, \ - _nmtstp_env1_wrapper_teardown, \ - ({ \ - static int _ifindex = -1; \ - &_ifindex; \ - }), \ - ({ \ - GTestFunc _test_func = (test_func); \ - _test_func; \ - }), \ - ({ \ - GTestDataFunc _test_func = (test_data_func); \ - _test_func; \ - }), \ - (arg), \ - ({ \ - gboolean _ifup = (ifup); \ - GINT_TO_POINTER(_ifup); \ +#define _nmtstp_env1_add_test_func_full(testpath, test_func, test_data_func, arg, n_ifaces, ifup) \ + nmtst_add_test_func_full(testpath, \ + _nmtstp_env1_wrapper_run, \ + _nmtstp_env1_wrapper_setup, \ + _nmtstp_env1_wrapper_teardown, \ + ({ \ + static int _ifindexes[G_N_ELEMENTS(NMTSTP_ENV1_IFINDEXES)] = {0}; \ + _ifindexes; \ + }), \ + ({ \ + guint _n_ifaces = (n_ifaces); \ + GUINT_TO_POINTER(_n_ifaces); \ + }), \ + ({ \ + GTestFunc _test_func = (test_func); \ + _test_func; \ + }), \ + ({ \ + GTestDataFunc _test_func = (test_data_func); \ + _test_func; \ + }), \ + (arg), \ + ({ \ + gboolean _ifup = (ifup); \ + GINT_TO_POINTER(!!_ifup); \ })) -#define nmtstp_env1_add_test_func_data(testpath, test_func, arg, ifup) \ - _nmtstp_env1_add_test_func_full(testpath, NULL, test_func, arg, ifup) +#define nmtstp_env1_add_test_func_data(testpath, test_func, arg, n_ifaces, ifup) \ + _nmtstp_env1_add_test_func_full(testpath, NULL, test_func, arg, n_ifaces, ifup) -#define nmtstp_env1_add_test_func(testpath, test_func, ifup) \ - _nmtstp_env1_add_test_func_full(testpath, test_func, NULL, NULL, ifup) +#define nmtstp_env1_add_test_func(testpath, test_func, n_ifaces, ifup) \ + _nmtstp_env1_add_test_func_full(testpath, test_func, NULL, NULL, n_ifaces, ifup) /*****************************************************************************/ diff --git a/src/core/platform/tests/test-route.c b/src/core/platform/tests/test-route.c index de34cfaef1..9939ccdc95 100644 --- a/src/core/platform/tests/test-route.c +++ b/src/core/platform/tests/test-route.c @@ -2171,9 +2171,9 @@ _nmtstp_init_tests(int *argc, char ***argv) void _nmtstp_setup_tests(void) { -#define add_test_func(testpath, test_func) nmtstp_env1_add_test_func(testpath, test_func, TRUE) +#define add_test_func(testpath, test_func) nmtstp_env1_add_test_func(testpath, test_func, 1, TRUE) #define add_test_func_data(testpath, test_func, arg) \ - nmtstp_env1_add_test_func_data(testpath, test_func, arg, TRUE) + nmtstp_env1_add_test_func_data(testpath, test_func, arg, 1, TRUE) add_test_func("/route/ip4", test_ip4_route); add_test_func("/route/ip6", test_ip6_route); diff --git a/src/core/platform/tests/test-tc.c b/src/core/platform/tests/test-tc.c index 6a2019c84a..832fbea6bb 100644 --- a/src/core/platform/tests/test-tc.c +++ b/src/core/platform/tests/test-tc.c @@ -214,8 +214,8 @@ _nmtstp_init_tests(int *argc, char ***argv) void _nmtstp_setup_tests(void) { - nmtstp_env1_add_test_func("/link/qdisc/1", test_qdisc1, TRUE); - nmtstp_env1_add_test_func("/link/qdisc/fq_codel", test_qdisc_fq_codel, TRUE); - nmtstp_env1_add_test_func("/link/qdisc/sfq", test_qdisc_sfq, TRUE); - nmtstp_env1_add_test_func("/link/qdisc/tbf", test_qdisc_tbf, TRUE); + nmtstp_env1_add_test_func("/link/qdisc/1", test_qdisc1, 1, TRUE); + nmtstp_env1_add_test_func("/link/qdisc/fq_codel", test_qdisc_fq_codel, 1, TRUE); + nmtstp_env1_add_test_func("/link/qdisc/sfq", test_qdisc_sfq, 1, TRUE); + nmtstp_env1_add_test_func("/link/qdisc/tbf", test_qdisc_tbf, 1, TRUE); } |