summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2022-11-30 14:44:57 +0100
committerThomas Haller <thaller@redhat.com>2023-01-19 08:56:22 +0100
commitd5e33bf660d76a4c0ff6a0735fdce57692bb9755 (patch)
tree2ff34b243d50b4bb1a71256a260c942c55bfe3ed
parent5579fca9163edc72cec443e2e6102015eda0743a (diff)
downloadNetworkManager-d5e33bf660d76a4c0ff6a0735fdce57692bb9755.tar.gz
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.c2
-rw-r--r--src/core/platform/tests/test-common.c10
-rw-r--r--src/core/platform/tests/test-common.h129
-rw-r--r--src/core/platform/tests/test-route.c4
-rw-r--r--src/core/platform/tests/test-tc.c8
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);
}