diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-07-20 22:37:09 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-07-20 22:37:09 +0000 |
commit | ae9918852bed2d822c12e110d6b754520e601388 (patch) | |
tree | d7226f4d590fb9d456231469c075c11b41ce0cb3 /src/datastore/test_datastore_api.c | |
parent | 90c70e8315c4a366996da379f839dc84d21d5f38 (diff) |
-skip mysql tests properly if mysql is not configured correctly
Diffstat (limited to 'src/datastore/test_datastore_api.c')
-rw-r--r-- | src/datastore/test_datastore_api.c | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/src/datastore/test_datastore_api.c b/src/datastore/test_datastore_api.c index 43f6e9fa6a..9f89d4087c 100644 --- a/src/datastore/test_datastore_api.c +++ b/src/datastore/test_datastore_api.c @@ -30,6 +30,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" @@ -651,6 +652,66 @@ run (void *cls, /** + * Function invoked to notify service of disk utilization + * changes. + * + * @param cls closure + * @param delta change in disk utilization, + * 0 for "reset to empty" + */ +static void +duc_dummy (void *cls, + int delta) +{ + /* intentionally empty */ +} + + +/** + * 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; + env.duc = &duc_dummy; + 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; +} + + +/** * Entry point into the test. Determines which configuration / plugin * we are running with based on the name of the binary and starts * the peer. @@ -664,12 +725,17 @@ 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); + ret = test_plugin (cfg_name); + if (0 != ret) + return ret; + /* run actual test */ if (0 != GNUNET_TESTING_peer_run ("test-gnunet-datastore", cfg_name, |