summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2019-04-21 10:28:53 +0200
committerThomas Haller <thaller@redhat.com>2019-04-25 07:49:56 +0200
commit2aa81edeaf6a5cfb6925604de7a68315f5815962 (patch)
tree277c4e32863dfa8db9a7a711cf72e2b6dadfc96b
parent7a25f67af79c1732e3b450e4e274630327832e09 (diff)
downloadNetworkManager-2aa81edeaf6a5cfb6925604de7a68315f5815962.tar.gz
shared/tests: add test for NMTeamLinkWatcher to/from string
-rw-r--r--clients/common/tests/test-libnm-core-aux.c220
1 files changed, 220 insertions, 0 deletions
diff --git a/clients/common/tests/test-libnm-core-aux.c b/clients/common/tests/test-libnm-core-aux.c
index cc016a5a8a..e773300bf9 100644
--- a/clients/common/tests/test-libnm-core-aux.c
+++ b/clients/common/tests/test-libnm-core-aux.c
@@ -20,16 +20,236 @@
#include "nm-default.h"
#include "nm-libnm-core-aux/nm-libnm-core-aux.h"
+#include "nm-libnm-core-intern/nm-libnm-core-utils.h"
#include "nm-utils/nm-test-utils.h"
/*****************************************************************************/
+static NMTeamLinkWatcher *
+_team_link_watcher_from_string_impl (const char *str, gsize nextra, const char *const*vextra)
+{
+ NMTeamLinkWatcher *watcher;
+ gs_free char *str1_free = NULL;
+ gs_free_error GError *error = NULL;
+ gsize i;
+
+ g_assert (str);
+
+ watcher = nm_utils_team_link_watcher_from_string (str, &error);
+ nmtst_assert_success (watcher, error);
+
+ for (i = 0; i < 1 + nextra; i++) {
+ nm_auto_unref_team_link_watcher NMTeamLinkWatcher *watcher1 = NULL;
+ const char *str1;
+
+ if (i == 0) {
+ str1_free = nm_utils_team_link_watcher_to_string (watcher);
+ g_assert (str1_free);
+ str1 = str1_free;
+ g_assert_cmpstr (str, ==, str1);
+ } else
+ str1 = vextra[i - 1];
+
+ watcher1 = nm_utils_team_link_watcher_from_string (str1, &error);
+ nmtst_assert_success (watcher1, error);
+ if (!nm_team_link_watcher_equal (watcher, watcher1)) {
+ gs_free char *ss1 = NULL;
+ gs_free char *ss2 = NULL;
+
+ g_print (">>> watcher differs: \"%s\" vs. \"%s\"",
+ (ss1 = nm_utils_team_link_watcher_to_string (watcher)),
+ (ss2 = nm_utils_team_link_watcher_to_string (watcher1)));
+ g_print (">>> ORIG: \"%s\" vs. \"%s\"", str, str1);
+ g_assert_not_reached ();
+ }
+ g_assert (nm_team_link_watcher_equal (watcher1, watcher));
+ }
+
+ return watcher;
+}
+#define _team_link_watcher_from_string(str, ...) \
+ _team_link_watcher_from_string_impl ((str), NM_NARG (__VA_ARGS__), NM_MAKE_STRV (__VA_ARGS__))
+
+/*****************************************************************************/
+
+static void
+test_team_link_watcher_tofro_string (void)
+{
+ nm_auto_unref_team_link_watcher NMTeamLinkWatcher *w = NULL;
+
+#define _team_link_watcher_cmp(watcher, \
+ name, \
+ delay_down, \
+ delay_up, \
+ init_wait, \
+ interval, \
+ missed_max, \
+ target_host, \
+ source_host, \
+ vlanid, \
+ arping_flags) \
+ G_STMT_START { \
+ nm_auto_unref_team_link_watcher NMTeamLinkWatcher *_w = g_steal_pointer (watcher); \
+ \
+ g_assert_cmpstr ((name), ==, nm_team_link_watcher_get_name (_w)); \
+ g_assert_cmpint ((delay_down), ==, nm_team_link_watcher_get_delay_down (_w)); \
+ g_assert_cmpint ((delay_up), ==, nm_team_link_watcher_get_delay_up (_w)); \
+ g_assert_cmpint ((init_wait), ==, nm_team_link_watcher_get_init_wait (_w)); \
+ g_assert_cmpint ((interval), ==, nm_team_link_watcher_get_interval (_w)); \
+ g_assert_cmpint ((missed_max), ==, nm_team_link_watcher_get_missed_max (_w)); \
+ g_assert_cmpstr ((target_host), ==, nm_team_link_watcher_get_target_host (_w)); \
+ g_assert_cmpstr ((source_host), ==, nm_team_link_watcher_get_source_host (_w)); \
+ g_assert_cmpint ((vlanid), ==, nm_team_link_watcher_get_vlanid (_w)); \
+ g_assert_cmpint ((arping_flags), ==, nm_team_link_watcher_get_flags (_w)); \
+ } G_STMT_END
+
+ w = _team_link_watcher_from_string ("name=ethtool",
+ "delay-up=0 name=ethtool",
+ "delay-down=0 name=ethtool source-host=x",
+ " delay-down=0 name=ethtool ");
+ _team_link_watcher_cmp (&w,
+ "ethtool",
+ 0,
+ 0,
+ -1,
+ -1,
+ -1,
+ NULL,
+ NULL,
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE);
+
+ w = _team_link_watcher_from_string ("name=ethtool delay-up=10",
+ " delay-down=0 delay-up=10 name=ethtool");
+ _team_link_watcher_cmp (&w,
+ "ethtool",
+ 0,
+ 10,
+ -1,
+ -1,
+ -1,
+ NULL,
+ NULL,
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE);
+
+ w = _team_link_watcher_from_string ("name=ethtool delay-up=10 delay-down=11",
+ " delay-down=11 delay-up=10 name=ethtool");
+ _team_link_watcher_cmp (&w,
+ "ethtool",
+ 11,
+ 10,
+ -1,
+ -1,
+ -1,
+ NULL,
+ NULL,
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE);
+
+ w = _team_link_watcher_from_string ("name=nsna_ping missed-max=3 target-host=xxx",
+ "name=nsna_ping target-host=xxx",
+ "target-host=x1 target-host=xxx name=nsna_ping",
+ " missed-max=3 target-host=xxx name=nsna_ping ");
+ _team_link_watcher_cmp (&w,
+ "nsna_ping",
+ -1,
+ -1,
+ 0,
+ 0,
+ 3,
+ "xxx",
+ NULL,
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE);
+
+ w = _team_link_watcher_from_string ("name=arp_ping missed-max=3 target-host=xxx vlanid=-1 source-host=yzd",
+ "source-host=yzd name=arp_ping target-host=xxx",
+ "source-host=yz source-host=yzd target-host=x1 target-host=xxx name=arp_ping",
+ " source-host=yzd target-host=xxx name=arp_ping ");
+ _team_link_watcher_cmp (&w,
+ "arp_ping",
+ -1,
+ -1,
+ 0,
+ 0,
+ 3,
+ "xxx",
+ "yzd",
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE);
+
+ w = _team_link_watcher_from_string ("name=arp_ping missed-max=1 target-host=xxx vlanid=-1 source-host=yzd");
+ _team_link_watcher_cmp (&w,
+ "arp_ping",
+ -1,
+ -1,
+ 0,
+ 0,
+ 1,
+ "xxx",
+ "yzd",
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE);
+
+ w = _team_link_watcher_from_string ("name=arp_ping missed-max=3 target-host=xxx vlanid=-1 source-host=yzd validate-active=true",
+ "source-host=yzd send-always=false name=arp_ping validate-active=true validate-inactive=false target-host=xxx",
+ "source-host=yz validate-active=true source-host=yzd target-host=x1 target-host=xxx name=arp_ping",
+ " source-host=yzd target-host=xxx validate-active=true name=arp_ping ");
+ _team_link_watcher_cmp (&w,
+ "arp_ping",
+ -1,
+ -1,
+ 0,
+ 0,
+ 3,
+ "xxx",
+ "yzd",
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_VALIDATE_ACTIVE);
+
+ w = _team_link_watcher_from_string ("name=arp_ping missed-max=3 target-host=xxx vlanid=-1 source-host=yzd validate-active=true validate-inactive=true send-always=true",
+ "source-host=yzd send-always=true name=arp_ping validate-active=true validate-inactive=true target-host=xxx",
+ "source-host=yz validate-active=true source-host=yzd target-host=x1 target-host=xxx name=arp_ping send-always=true validate-inactive=true",
+ " source-host=yzd target-host=xxx validate-inactive=true send-always=true validate-active=true name=arp_ping ");
+ _team_link_watcher_cmp (&w,
+ "arp_ping",
+ -1,
+ -1,
+ 0,
+ 0,
+ 3,
+ "xxx",
+ "yzd",
+ -1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_VALIDATE_ACTIVE
+ | NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_VALIDATE_INACTIVE
+ | NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_SEND_ALWAYS);
+
+ w = _team_link_watcher_from_string ("name=arp_ping missed-max=1 target-host=xxx vlanid=1 source-host=yzd");
+ _team_link_watcher_cmp (&w,
+ "arp_ping",
+ -1,
+ -1,
+ 0,
+ 0,
+ 1,
+ "xxx",
+ "yzd",
+ 1,
+ NM_TEAM_LINK_WATCHER_ARP_PING_FLAG_NONE);
+}
+
+/*****************************************************************************/
+
NMTST_DEFINE ();
int main (int argc, char **argv)
{
nmtst_init (&argc, &argv, TRUE);
+ g_test_add_func ("/libnm-core-aux/test_team_link_watcher_tofro_string", test_team_link_watcher_tofro_string);
+
return g_test_run ();
}