diff options
Diffstat (limited to 'src/tests/config')
| -rw-r--r-- | src/tests/config/Makefile.am | 1 | ||||
| -rw-r--r-- | src/tests/config/Makefile.in | 2 | ||||
| -rw-r--r-- | src/tests/config/test-config.c | 87 |
3 files changed, 89 insertions, 1 deletions
diff --git a/src/tests/config/Makefile.am b/src/tests/config/Makefile.am index 42c6b9a1..a5e068e4 100644 --- a/src/tests/config/Makefile.am +++ b/src/tests/config/Makefile.am @@ -1,5 +1,6 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/include \ + -I$(top_builddir)/include \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -I$(top_srcdir)/src/ \ diff --git a/src/tests/config/Makefile.in b/src/tests/config/Makefile.in index 6d1dd4bc..20bbe60a 100644 --- a/src/tests/config/Makefile.in +++ b/src/tests/config/Makefile.in @@ -510,6 +510,7 @@ LOG_DRIVER = @LOG_DRIVER@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ @@ -652,6 +653,7 @@ with_resolvconf = @with_resolvconf@ with_valgrind = @with_valgrind@ AM_CPPFLAGS = \ -I$(top_srcdir)/include \ + -I$(top_builddir)/include \ -I$(top_srcdir)/libnm-core \ -I$(top_builddir)/libnm-core \ -I$(top_srcdir)/src/ \ diff --git a/src/tests/config/test-config.c b/src/tests/config/test-config.c index 8b8028e6..6dad8216 100644 --- a/src/tests/config/test-config.c +++ b/src/tests/config/test-config.c @@ -380,7 +380,7 @@ test_config_confdir (void) g_assert_cmpstr (value, ==, "VAL5"); g_free (value); - nm_config_data_log (nm_config_get_data_orig (config), ">>> TEST: "); + nm_config_data_log (nm_config_get_data_orig (config), ">>> TEST: ", " ", NULL); g_object_unref (config); } @@ -396,6 +396,89 @@ test_config_confdir_parse_error (void) g_clear_error (&error); } +/*****************************************************************************/ + +static void +_test_signal_config_changed_cb (NMConfig *config, + NMConfigData *config_data, + NMConfigChangeFlags changes, + NMConfigData *old_data, + gpointer user_data) +{ + const NMConfigChangeFlags *expected = user_data; + + g_assert (changes); + g_assert_cmpint (changes, ==, *expected); + g_assert (NM_IS_CONFIG (config)); + g_assert (NM_IS_CONFIG_DATA (config_data)); + + g_assert (config_data == old_data); + g_assert (config_data == nm_config_get_data (config)); +} + +static void +_test_signal_config_changed_cb2 (NMConfig *config, + NMConfigData *config_data, + NMConfigChangeFlags changes, + NMConfigData *old_data, + gpointer user_data) +{ + const NMConfigChangeFlags *expected = user_data; + + g_assert (changes); + g_assert_cmpint (changes, ==, *expected); +} + +static void +test_config_signal (void) +{ + gs_unref_object NMConfig *config = NULL; + NMConfigChangeFlags expected; + gs_unref_object NMConfigData *config_data_orig = NULL; + + config = setup_config (NULL, SRCDIR "/NetworkManager.conf", "/no/such/dir", NULL); + + config_data_orig = g_object_ref (nm_config_get_data_orig (config)); + + g_signal_connect (G_OBJECT (config), + NM_CONFIG_SIGNAL_CONFIG_CHANGED, + G_CALLBACK (_test_signal_config_changed_cb), + &expected); + + expected = NM_CONFIG_CHANGE_SIGUSR1; + g_test_expect_message ("NetworkManager", G_LOG_LEVEL_MESSAGE, "*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"); + 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)*"); + nm_config_reload (config, SIGHUP); + + + /* test with subscribing two signals... + * + * This test exposes glib bug https://bugzilla.redhat.com/show_bug.cgi?id=1260577 + * for which we however have a workaround in 'nm-config.c' */ + g_signal_connect (G_OBJECT (config), + NM_CONFIG_SIGNAL_CONFIG_CHANGED, + 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"); + nm_config_reload (config, SIGUSR2); + g_signal_handlers_disconnect_by_func (config, _test_signal_config_changed_cb2, &expected); + + + g_signal_handlers_disconnect_by_func (config, _test_signal_config_changed_cb, &expected); + + g_assert (config_data_orig == nm_config_get_data (config)); +} + +/*****************************************************************************/ + NMTST_DEFINE (); int @@ -419,6 +502,8 @@ main (int argc, char **argv) g_test_add_func ("/config/confdir", test_config_confdir); g_test_add_func ("/config/confdir-parse-error", test_config_confdir_parse_error); + g_test_add_func ("/config/signal", test_config_signal); + /* This one has to come last, because it leaves its values in * nm-config.c's global variables, and there's no way to reset * those to NULL. |