From df5b5d012b03816543787074651198426cc9d795 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Fri, 7 Jul 2017 17:13:14 -0400 Subject: [PATCH] test_plugin: use env. var. instead of global symbol because G_MODULE_BIND_LOCAL MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Share data between test plugins and the plugin test with environment variables instead of using global symbols because shared objects are opened with G_MODULE_BIND_LOCAL now. Also add BT_PLUGIN_MODULE() to test plugins so that their special sections exist and contain entries. Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- tests/lib/test-plugin-plugins/minimal.c | 11 ++++------- tests/lib/test-plugin-plugins/sfs.c | 1 + tests/lib/test_plugin.c | 26 +++++++++++++++++-------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/tests/lib/test-plugin-plugins/minimal.c b/tests/lib/test-plugin-plugins/minimal.c index ddde63b0..c78862b0 100644 --- a/tests/lib/test-plugin-plugins/minimal.c +++ b/tests/lib/test-plugin-plugins/minimal.c @@ -16,24 +16,21 @@ */ #include - -extern int test_plugin_init_called; -extern int test_plugin_exit_called; +#include static enum bt_plugin_status plugin_init(struct bt_plugin *plugin) { - test_plugin_init_called = 1; - + setenv("BT_TEST_PLUGIN_INIT_CALLED", "1", 1); return BT_PLUGIN_STATUS_OK; } static enum bt_plugin_status plugin_exit(void) { - test_plugin_exit_called = 1; - + setenv("BT_TEST_PLUGIN_EXIT_CALLED", "1", 1); return BT_PLUGIN_STATUS_OK; } +BT_PLUGIN_MODULE(); BT_PLUGIN(test_minimal); BT_PLUGIN_DESCRIPTION("Minimal Babeltrace plugin with no component classes"); BT_PLUGIN_AUTHOR("Janine Sutto"); diff --git a/tests/lib/test-plugin-plugins/sfs.c b/tests/lib/test-plugin-plugins/sfs.c index 735bf2ae..c17f078b 100644 --- a/tests/lib/test-plugin-plugins/sfs.c +++ b/tests/lib/test-plugin-plugins/sfs.c @@ -72,6 +72,7 @@ static struct bt_value *query_method( return results; } +BT_PLUGIN_MODULE(); BT_PLUGIN(test_sfs); BT_PLUGIN_DESCRIPTION("Babeltrace plugin with source, sink, and filter component classes"); BT_PLUGIN_AUTHOR("Janine Sutto"); diff --git a/tests/lib/test_plugin.c b/tests/lib/test_plugin.c index ad8489e8..874a11db 100644 --- a/tests/lib/test_plugin.c +++ b/tests/lib/test_plugin.c @@ -36,13 +36,21 @@ #define NON_EXISTING_PATH "/this/hopefully/does/not/exist/5bc75f8d-0dba-4043-a509-d7984b97e42b.so" /* Those symbols are written to by some test plugins */ -int test_plugin_init_called; -int test_plugin_exit_called; +static int check_env_var(const char *name) +{ + const char *val = getenv(name); + + if (!val) { + return -1; + } + + return atoi(val); +} -static void reset_test_plugin_symbols(void) +static void reset_test_plugin_env_vars(void) { - test_plugin_init_called = 0; - test_plugin_exit_called = 0; + setenv("BT_TEST_PLUGIN_INIT_CALLED", "0", 1); + setenv("BT_TEST_PLUGIN_EXIT_CALLED", "0", 1); } static char *get_test_plugin_path(const char *plugin_dir, @@ -102,11 +110,12 @@ static void test_minimal(const char *plugin_dir) assert(minimal_path); diag("minimal plugin test below"); - reset_test_plugin_symbols(); + reset_test_plugin_env_vars(); plugin_set = bt_plugin_create_all_from_file(minimal_path); ok(plugin_set && bt_plugin_set_get_plugin_count(plugin_set) == 1, "bt_plugin_create_all_from_file() succeeds with a valid file"); - ok(test_plugin_init_called, "plugin's initialization function is called during bt_plugin_create_all_from_file()"); + ok(check_env_var("BT_TEST_PLUGIN_INIT_CALLED") == 1, + "plugin's initialization function is called during bt_plugin_create_all_from_file()"); ok(bt_plugin_set_get_plugin_count(plugin_set) == 1, "bt_plugin_create_all_from_file() returns the expected number of plugins"); plugin = bt_plugin_set_get_plugin(plugin_set, 0); @@ -128,7 +137,8 @@ static void test_minimal(const char *plugin_dir) "bt_plugin_get_component_class_count() returns the expected value"); bt_put(plugin); bt_put(plugin_set); - ok(test_plugin_exit_called, "plugin's exit function is called when the plugin is destroyed"); + ok(check_env_var("BT_TEST_PLUGIN_EXIT_CALLED") == 1, + "plugin's exit function is called when the plugin is destroyed"); free(minimal_path); } -- 2.34.1