X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdatastore%2Ftest_datastore_api_management.c;h=5e536d6c5f3e729babf0b75a58b06d2e9f14e0e5;hb=0945dcf2c250dea65d520ef26f9917e9be3ac4ac;hp=954e61becb9bafba79ae6bb2d4283e6745692fc2;hpb=3140154d46212e08e0d73ed891a66213a6813075;p=oweals%2Fgnunet.git diff --git a/src/datastore/test_datastore_api_management.c b/src/datastore/test_datastore_api_management.c index 954e61bec..5e536d6c5 100644 --- a/src/datastore/test_datastore_api_management.c +++ b/src/datastore/test_datastore_api_management.c @@ -26,6 +26,7 @@ #include "gnunet_util_lib.h" #include "gnunet_protocols.h" #include "gnunet_datastore_service.h" +#include "gnunet_datastore_plugin.h" #include "gnunet_testing_lib.h" @@ -296,14 +297,63 @@ run (void *cls, } +/** + * check if plugin is actually working + */ +static int +test_plugin (const char *cfg_name) +{ + char libname[128]; + struct GNUNET_CONFIGURATION_Handle *cfg; + struct GNUNET_DATASTORE_PluginFunctions *api; + struct GNUNET_DATASTORE_PluginEnvironment env; + + cfg = GNUNET_CONFIGURATION_create (); + if (GNUNET_OK != + GNUNET_CONFIGURATION_load (cfg, + cfg_name)) + { + GNUNET_CONFIGURATION_destroy (cfg); + fprintf (stderr, + "Failed to load configuration %s\n", + cfg_name); + return 1; + } + memset (&env, 0, sizeof (env)); + env.cfg = cfg; + GNUNET_snprintf (libname, + sizeof (libname), + "libgnunet_plugin_datastore_%s", + plugin_name); + api = GNUNET_PLUGIN_load (libname, &env); + if (NULL == api) + { + GNUNET_CONFIGURATION_destroy (cfg); + fprintf (stderr, + "Failed to load plugin `%s'\n", + libname); + return 77; + } + GNUNET_PLUGIN_unload (libname, api); + GNUNET_CONFIGURATION_destroy (cfg); + return 0; +} + + int main (int argc, char *argv[]) { char cfg_name[128]; + int ret; plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); - GNUNET_snprintf (cfg_name, sizeof (cfg_name), - "test_datastore_api_data_%s.conf", plugin_name); + GNUNET_snprintf (cfg_name, + sizeof (cfg_name), + "test_datastore_api_data_%s.conf", + plugin_name); + ret = test_plugin (cfg_name); + if (0 != ret) + return ret; if (0 != GNUNET_TESTING_peer_run ("test-gnunet-datastore-management", cfg_name,