test_plugin: use env. var. instead of global symbol because G_MODULE_BIND_LOCAL
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 7 Jul 2017 21:13:14 +0000 (17:13 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 7 Jul 2017 21:25:16 +0000 (17:25 -0400)
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 <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
tests/lib/test-plugin-plugins/minimal.c
tests/lib/test-plugin-plugins/sfs.c
tests/lib/test_plugin.c

index ddde63b010320a74565adeed467b7cd973af35b5..c78862b0fcaa7247efe6d2f48616b93f91d204eb 100644 (file)
  */
 
 #include <babeltrace/plugin/plugin-dev.h>
-
-extern int test_plugin_init_called;
-extern int test_plugin_exit_called;
+#include <stdlib.h>
 
 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");
index 735bf2ae19a84047d3c09afe51d9a96ceccf3314..c17f078b8fd172494e9aa0bb143cdf0bb8a1c5f8 100644 (file)
@@ -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");
index ad8489e88a27a60ea605886a269168f5eaace91c..874a11dbcd7843f3c724a76224faf5287cbab440 100644 (file)
 #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);
 }
This page took 0.027181 seconds and 4 git commands to generate.