summary refs log tree commit diff
path: root/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/Makefile.am1
-rw-r--r--src/tests/Makefile.in1
-rw-r--r--src/tests/config/test-config.c16
-rw-r--r--src/tests/test-general-with-expect.c8
-rw-r--r--src/tests/test-general.c27
-rw-r--r--src/tests/test-route-manager.c36
-rw-r--r--src/tests/test-systemd.c87
7 files changed, 146 insertions, 30 deletions
diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
index a3447fbf..597f477f 100644
--- a/src/tests/Makefile.am
+++ b/src/tests/Makefile.am
@@ -117,6 +117,7 @@ test_wired_defname_LDADD = \
 test_systemd_CFLAGS = \
 	"-I$(srcdir)/../" \
 	"-I$(srcdir)/../platform" \
+	"-I$(srcdir)/../systemd" \
 	"-I$(srcdir)/../systemd/src/systemd"
 
 test_systemd_SOURCES = \
diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in
index 9d67063e..8be2e8ce 100644
--- a/src/tests/Makefile.in
+++ b/src/tests/Makefile.in
@@ -867,6 +867,7 @@ test_wired_defname_LDADD = \
 test_systemd_CFLAGS = \
 	"-I$(srcdir)/../" \
 	"-I$(srcdir)/../platform" \
+	"-I$(srcdir)/../systemd" \
 	"-I$(srcdir)/../systemd/src/systemd"
 
 test_systemd_SOURCES = \
diff --git a/src/tests/config/test-config.c b/src/tests/config/test-config.c
index 19306df7..d83ff4b5 100644
--- a/src/tests/config/test-config.c
+++ b/src/tests/config/test-config.c
@@ -343,7 +343,7 @@ test_config_no_auto_default (void)
 	g_assert (!nm_config_get_no_auto_default_for_device (config, dev3));
 	g_assert (nm_config_get_no_auto_default_for_device (config, dev4));
 
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: update * (no-auto-default)*");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: update * (no-auto-default)*");
 	nm_config_set_no_auto_default_for_device (config, dev3);
 	g_test_assert_expected_messages ();
 
@@ -556,9 +556,9 @@ _set_values_user (NMConfig *config,
 	config_data_before = g_object_ref (nm_config_get_data (config));
 
 	if (expected_changes != NM_CONFIG_CHANGE_NONE)
-		g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: update *");
+		g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: update *");
 	else
-		g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: signal SIGHUP (no changes from disk)*");
+		g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: signal SIGHUP (no changes from disk)*");
 
 	nm_config_reload (config, SIGHUP);
 
@@ -600,7 +600,7 @@ _set_values_intern (NMConfig *config,
 	                  &config_changed_data);
 
 	if (expected_changes != NM_CONFIG_CHANGE_NONE)
-		g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: update *");
+		g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: update *");
 
 	nm_config_set_values (config, keyfile_intern, TRUE, FALSE);
 
@@ -863,15 +863,15 @@ test_config_signal (void)
 	                  &expected);
 
 	expected = NM_CONFIG_CHANGE_SIGUSR1;
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: signal SIGUSR1");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: signal SIGUSR1");
 	nm_config_reload (config, SIGUSR1);
 
 	expected = NM_CONFIG_CHANGE_SIGUSR2;
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: signal SIGUSR2");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: signal SIGUSR2");
 	nm_config_reload (config, SIGUSR2);
 
 	expected = NM_CONFIG_CHANGE_SIGHUP;
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: signal SIGHUP (no changes from disk)*");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: signal SIGHUP (no changes from disk)*");
 	nm_config_reload (config, SIGHUP);
 
 
@@ -884,7 +884,7 @@ test_config_signal (void)
 	                  G_CALLBACK (_test_signal_config_changed_cb2),
 	                  &expected);
 	expected = NM_CONFIG_CHANGE_SIGUSR2;
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*config: signal SIGUSR2");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_INFO, "*config: signal SIGUSR2");
 	nm_config_reload (config, SIGUSR2);
 	g_signal_handlers_disconnect_by_func (config, _test_signal_config_changed_cb2, &expected);
 
diff --git a/src/tests/test-general-with-expect.c b/src/tests/test-general-with-expect.c
index 43595c8d..64b47bd3 100644
--- a/src/tests/test-general-with-expect.c
+++ b/src/tests/test-general-with-expect.c
@@ -304,7 +304,7 @@ test_nm_utils_kill_child (void)
 	test_nm_utils_kill_child_sync_do ("test-s-2", pid2s, SIGTERM, 3000, TRUE,  &expected_exit_47);
 
 	/* send invalid signal. */
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, "*kill child process 'test-s-3-0' (*): failed to send Unexpected signal: Invalid argument (22)");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*kill child process 'test-s-3-0' (*): failed to send Unexpected signal: Invalid argument (22)");
 	test_nm_utils_kill_child_sync_do ("test-s-3-0", pid3s, -1, 0, FALSE, NULL);
 
 	/* really kill pid3s */
@@ -314,7 +314,7 @@ test_nm_utils_kill_child (void)
 
 	/* pid3s should not be a valid process, hence the call should fail. Note, that there
 	 * is a race here. */
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, "*kill child process 'test-s-3-2' (*): failed due to unexpected return value -1 by waitpid (No child processes, 10) after sending no signal (0)");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*kill child process 'test-s-3-2' (*): failed due to unexpected return value -1 by waitpid (No child processes, 10) after sending no signal (0)");
 	test_nm_utils_kill_child_sync_do ("test-s-3-2", pid3s, 0, 0, FALSE, NULL);
 
 	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_DEBUG, "*kill child process 'test-s-4' (*): waiting up to 1 milliseconds for process to terminate normally after sending SIGTERM (15)...");
@@ -340,7 +340,7 @@ test_nm_utils_kill_child (void)
 	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_DEBUG, "*kill child process 'test-a-2' (*): invoke callback: terminated normally with status 47");
 	test_nm_utils_kill_child_async_do ("test-a-2", pid2a, SIGTERM, 3000, TRUE, &expected_exit_47);
 
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, "*kill child process 'test-a-3-0' (*): unexpected error sending Unexpected signal: Invalid argument (22)");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*kill child process 'test-a-3-0' (*): unexpected error sending Unexpected signal: Invalid argument (22)");
 	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_DEBUG, "*kill child process 'test-a-3-0' (*): invoke callback: killing child failed");
 	/* coverity[negative_returns] */
 	test_nm_utils_kill_child_async_do ("test-a-3-0", pid3a, -1, 1000 / 2, FALSE, NULL);
@@ -351,7 +351,7 @@ test_nm_utils_kill_child (void)
 
 	/* pid3a should not be a valid process, hence the call should fail. Note, that there
 	 * is a race here. */
-	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_WARNING, "*kill child process 'test-a-3-2' (*): failed due to unexpected return value -1 by waitpid (No child processes, 10) after sending no signal (0)");
+	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*kill child process 'test-a-3-2' (*): failed due to unexpected return value -1 by waitpid (No child processes, 10) after sending no signal (0)");
 	g_test_expect_message ("NetworkManager", G_LOG_LEVEL_DEBUG, "*kill child process 'test-a-3-2' (*): invoke callback: killing child failed");
 	test_nm_utils_kill_child_async_do ("test-a-3-2", pid3a, 0, 0, FALSE, NULL);
 
diff --git a/src/tests/test-general.c b/src/tests/test-general.c
index b8a51f2a..b2512590 100644
--- a/src/tests/test-general.c
+++ b/src/tests/test-general.c
@@ -1221,7 +1221,31 @@ test_nm_utils_strbuf_append (void)
 	}
 }
 
-/*******************************************/
+/*****************************************************************************/
+
+static void
+test_duplicate_decl_specifier (void)
+{
+	/* have some static variables, so that the result is certainly not optimized out. */
+	static const int v_const[1] = { 1 };
+	static int v_result[1] = { };
+	const const int v2 = 3;
+
+	/* Test that we don't get a compiler warning about duplicate const specifier.
+	 * C99 allows that and it can easily happen in macros. */
+
+#define TEST_MAX(a, b) \
+	({ \
+		const typeof(a) _a = (a); \
+		const typeof(b) _b = (b); \
+		\
+		(_a > _b ? _a : _b); \
+	})
+
+	v_result[0] = TEST_MAX (v_const[0], nmtst_get_rand_int () % 5) + v2;
+}
+
+/*****************************************************************************/
 
 NMTST_DEFINE ();
 
@@ -1254,6 +1278,7 @@ main (int argc, char **argv)
 
 	g_test_add_func ("/general/nm_match_spec_interface_name", test_nm_match_spec_interface_name);
 	g_test_add_func ("/general/nm_match_spec_match_config", test_nm_match_spec_match_config);
+	g_test_add_func ("/general/duplicate_decl_specifier", test_duplicate_decl_specifier);
 
 	return g_test_run ();
 }
diff --git a/src/tests/test-route-manager.c b/src/tests/test-route-manager.c
index 742f4ee5..b32775da 100644
--- a/src/tests/test-route-manager.c
+++ b/src/tests/test-route-manager.c
@@ -76,15 +76,16 @@ setup_dev1_ip4 (int ifindex)
 
 	/* Add some route outside of route manager. The route manager
 	 * should get rid of it upon sync. */
-	nm_platform_ip4_route_add (NM_PLATFORM_GET,
-	                           route.ifindex,
-	                           NM_IP_CONFIG_SOURCE_USER,
-	                           nmtst_inet4_from_string ("9.0.0.0"),
-	                           8,
-	                           INADDR_ANY,
-	                           0,
-	                           10,
-	                           route.mss);
+	if (!nm_platform_ip4_route_add (NM_PLATFORM_GET,
+	                                route.ifindex,
+	                                NM_IP_CONFIG_SOURCE_USER,
+	                                nmtst_inet4_from_string ("9.0.0.0"),
+	                                8,
+	                                INADDR_ANY,
+	                                0,
+	                                10,
+	                                route.mss))
+		g_assert_not_reached ();
 
 	route.source = NM_IP_CONFIG_SOURCE_USER;
 	inet_pton (AF_INET, "6.6.6.0", &route.network);
@@ -421,14 +422,15 @@ setup_dev1_ip6 (int ifindex)
 
 	/* Add some route outside of route manager. The route manager
 	 * should get rid of it upon sync. */
-	nm_platform_ip6_route_add (NM_PLATFORM_GET,
-	                           ifindex,
-	                           NM_IP_CONFIG_SOURCE_USER,
-	                           *nmtst_inet6_from_string ("2001:db8:8088::"),
-	                           48,
-	                           in6addr_any,
-	                           10,
-	                           0);
+	if (!nm_platform_ip6_route_add (NM_PLATFORM_GET,
+	                                ifindex,
+	                                NM_IP_CONFIG_SOURCE_USER,
+	                                *nmtst_inet6_from_string ("2001:db8:8088::"),
+	                                48,
+	                                in6addr_any,
+	                                10,
+	                                0))
+		g_assert_not_reached ();
 
 	route = nmtst_platform_ip6_route_full ("2001:db8:8086::",
 	                                       48,
diff --git a/src/tests/test-systemd.c b/src/tests/test-systemd.c
index 84ad95ba..936bff20 100644
--- a/src/tests/test-systemd.c
+++ b/src/tests/test-systemd.c
@@ -19,7 +19,11 @@
 
 #include "nm-default.h"
 
+#include "nm-sd.h"
+
 #include "sd-dhcp-client.h"
+#include "sd-lldp.h"
+#include "sd-event.h"
 
 #include "nm-test-utils.h"
 
@@ -40,6 +44,87 @@ test_dhcp_create (void)
 
 /*****************************************************************************/
 
+static void
+test_lldp_create (void)
+{
+	sd_lldp *lldp = NULL;
+	int ifindex = 1;
+	int r;
+
+	r = sd_lldp_new (&lldp, ifindex);
+	g_assert (r == 0);
+	g_assert (lldp);
+
+	sd_lldp_unref (lldp);
+}
+
+/*****************************************************************************/
+
+typedef struct {
+	GMainLoop *mainloop;
+	sd_event_source *event_source;
+} TestSdEventData;
+
+static int
+_test_sd_event_timeout_cb (sd_event_source *s, uint64_t usec, void *userdata)
+{
+	TestSdEventData *user_data = userdata;
+
+	g_assert (user_data);
+	g_assert (user_data->mainloop);
+	g_assert (user_data->event_source);
+
+	user_data->event_source = sd_event_source_unref (user_data->event_source);
+	g_main_loop_quit (user_data->mainloop);
+	return 0;
+}
+
+static void
+test_sd_event (void)
+{
+	int repeat;
+
+	for (repeat = 0; repeat < 2; repeat++) {
+		guint sd_id = 0;
+		int r;
+		int i, n;
+		sd_event *other_events[3] = { NULL }, *event = NULL;
+		TestSdEventData user_data = { 0 };
+
+		g_assert_cmpint (sd_event_default (NULL), ==, 0);
+
+		for (i = 0, n = (nmtst_get_rand_int () % (G_N_ELEMENTS (other_events) + 1)); i < n; i++) {
+			r = sd_event_default (&other_events[i]);
+			g_assert (r >= 0 && other_events[i]);
+		}
+
+		sd_id = nm_sd_event_attach_default ();
+
+		r = sd_event_default (&event);
+		g_assert (r >= 0 && event);
+
+		r = sd_event_add_time (event, &user_data.event_source, CLOCK_MONOTONIC, 1, 0, _test_sd_event_timeout_cb, &user_data);
+		g_assert (r >= 0 && user_data.event_source);
+
+		user_data.mainloop = g_main_loop_new (NULL, FALSE);
+		g_main_loop_run (user_data.mainloop);
+		g_main_loop_unref (user_data.mainloop);
+
+		g_assert (!user_data.event_source);
+
+		event = sd_event_unref (event);
+		for (i = 0, n = (nmtst_get_rand_int () % (G_N_ELEMENTS (other_events) + 1)); i < n; i++)
+			other_events[i] = sd_event_unref (other_events[i]);
+		nm_clear_g_source (&sd_id);
+		for (i = 0, n = G_N_ELEMENTS (other_events); i < n; i++)
+			other_events[i] = sd_event_unref (other_events[i]);
+
+		g_assert_cmpint (sd_event_default (NULL), ==, 0);
+	}
+}
+
+/*****************************************************************************/
+
 NMTST_DEFINE ();
 
 int
@@ -48,6 +133,8 @@ main (int argc, char **argv)
 	nmtst_init_assert_logging (&argc, &argv, "INFO", "ALL");
 
 	g_test_add_func ("/systemd/dhcp/create", test_dhcp_create);
+	g_test_add_func ("/systemd/lldp/create", test_lldp_create);
+	g_test_add_func ("/systemd/sd-event", test_sd_event);
 
 	return g_test_run ();
 }