X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fdatastore%2Ftest_plugin_datastore.c;h=96a5aebe50fc97aa434b4dd6a181b57d91c3766b;hb=67bbd4de1105d5afe7aec48d1ecd7a7da9d1043a;hp=15cca61f1ae382e2a083fea7b001fc01763737e6;hpb=502af2167f7c218366666ca4944bd7cc54b5b19a;p=oweals%2Fgnunet.git diff --git a/src/datastore/test_plugin_datastore.c b/src/datastore/test_plugin_datastore.c index 15cca61f1..96a5aebe5 100644 --- a/src/datastore/test_plugin_datastore.c +++ b/src/datastore/test_plugin_datastore.c @@ -27,8 +27,7 @@ #include "gnunet_util_lib.h" #include "gnunet_protocols.h" #include "gnunet_datastore_plugin.h" - -#define VERBOSE GNUNET_NO +#include "gnunet_testing_lib-new.h" /** * Number of put operations to perform. @@ -74,7 +73,7 @@ struct CpsRunContext * change in their disk utilization. * * @param cls closure (NULL) - * @param delta change in disk utilization, + * @param delta change in disk utilization, * 0 for "reset to empty" */ static void @@ -85,11 +84,11 @@ disk_utilization_change_cb (void *cls, int delta) static void -gen_key (int i, GNUNET_HashCode * key) +gen_key (int i, struct GNUNET_HashCode * key) { - memset (key, 0, sizeof (GNUNET_HashCode)); + memset (key, 0, sizeof (struct GNUNET_HashCode)); key->bits[0] = (unsigned int) i; - GNUNET_CRYPTO_hash (key, sizeof (GNUNET_HashCode), key); + GNUNET_CRYPTO_hash (key, sizeof (struct GNUNET_HashCode), key); } @@ -98,7 +97,7 @@ put_value (struct GNUNET_DATASTORE_PluginFunctions *api, int i, int k) { char value[65536]; size_t size; - GNUNET_HashCode key; + struct GNUNET_HashCode key; char *msg; unsigned int prio; @@ -117,11 +116,9 @@ put_value (struct GNUNET_DATASTORE_PluginFunctions *api, int i, int k) value[0] = k; msg = NULL; prio = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 100); -#if VERBOSE - fprintf (stderr, - "putting type %u, anon %u under key %s\n", - i + 1, i, GNUNET_h2s (&key)); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "putting type %u, anon %u under key %s\n", i + 1, i, + GNUNET_h2s (&key)); if (GNUNET_OK != api->put (api->cls, &key, size, value, i + 1 /* type */ , prio, i /* anonymity */ , 0 /* replication */ , @@ -132,7 +129,7 @@ put_value (struct GNUNET_DATASTORE_PluginFunctions *api, int i, int k) GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 1000))), &msg)) { - fprintf (stderr, "ERROR: `%s'\n", msg); + FPRINTF (stderr, "ERROR: `%s'\n", msg); GNUNET_free_non_null (msg); return; } @@ -142,20 +139,17 @@ put_value (struct GNUNET_DATASTORE_PluginFunctions *api, int i, int k) } -static void test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc); +static void +test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc); static uint64_t guid; static int -iterate_one_shot (void *cls, - const GNUNET_HashCode * key, - uint32_t size, - const void *data, - enum GNUNET_BLOCK_Type type, - uint32_t priority, - uint32_t anonymity, +iterate_one_shot (void *cls, const struct GNUNET_HashCode * key, uint32_t size, + const void *data, enum GNUNET_BLOCK_Type type, + uint32_t priority, uint32_t anonymity, struct GNUNET_TIME_Absolute expiration, uint64_t uid) { struct CpsRunContext *crc = cls; @@ -163,12 +157,10 @@ iterate_one_shot (void *cls, GNUNET_assert (key != NULL); guid = uid; crc->phase++; -#if VERBOSE - fprintf (stderr, - "Found result type=%u, priority=%u, size=%u, expire=%llu, key %s\n", - type, priority, size, - (unsigned long long) expiration.abs_value, GNUNET_h2s (key)); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Found result type=%u, priority=%u, size=%u, expire=%llu, key %s\n", + type, priority, size, (unsigned long long) expiration.abs_value, + GNUNET_h2s (key)); GNUNET_SCHEDULER_add_now (&test, crc); return GNUNET_OK; } @@ -189,12 +181,12 @@ unload_plugin (struct GNUNET_DATASTORE_PluginFunctions *api, char *libname; if (GNUNET_OK != - GNUNET_CONFIGURATION_get_value_string (cfg, - "DATASTORE", "DATABASE", &name)) + GNUNET_CONFIGURATION_get_value_string (cfg, "DATASTORE", "DATABASE", + &name)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - _("No `%s' specified for `%s' in configuration!\n"), - "DATABASE", "DATASTORE"); + _("No `%s' specified for `%s' in configuration!\n"), "DATABASE", + "DATASTORE"); return; } GNUNET_asprintf (&libname, "libgnunet_plugin_datastore_%s", name); @@ -226,16 +218,15 @@ test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) int j; unsigned long long os; unsigned long long cs; - GNUNET_HashCode key; + struct GNUNET_HashCode key; if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN)) { GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Test aborted.\n"); crc->phase = RP_ERROR; } -#if VERBOSE - fprintf (stderr, "In phase %d, iteration %u\n", crc->phase, crc->cnt); -#endif + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "In phase %d, iteration %u\n", crc->phase, crc->cnt); switch (crc->phase) { case RP_ERROR: @@ -265,15 +256,13 @@ test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) break; } gen_key (5, &key); - crc->api->get_key (crc->api->cls, - crc->offset++, - &key, NULL, + crc->api->get_key (crc->api->cls, crc->offset++, &key, NULL, GNUNET_BLOCK_TYPE_ANY, &iterate_one_shot, crc); break; case RP_UPDATE: GNUNET_assert (GNUNET_OK == - crc->api->update (crc->api->cls, - guid, 1, GNUNET_TIME_UNIT_ZERO_ABS, NULL)); + crc->api->update (crc->api->cls, guid, 1, + GNUNET_TIME_UNIT_ZERO_ABS, NULL)); crc->phase++; GNUNET_SCHEDULER_add_now (&test, crc); break; @@ -314,23 +303,23 @@ load_plugin (const struct GNUNET_CONFIGURATION_Handle *cfg) char *libname; if (GNUNET_OK != - GNUNET_CONFIGURATION_get_value_string (cfg, - "DATASTORE", "DATABASE", &name)) + GNUNET_CONFIGURATION_get_value_string (cfg, "DATASTORE", "DATABASE", + &name)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - _("No `%s' specified for `%s' in configuration!\n"), - "DATABASE", "DATASTORE"); + _("No `%s' specified for `%s' in configuration!\n"), "DATABASE", + "DATASTORE"); return NULL; } env.cfg = cfg; env.duc = &disk_utilization_change_cb; env.cls = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - _("Loading `%s' datastore plugin\n"), name); + GNUNET_log (GNUNET_ERROR_TYPE_INFO, _("Loading `%s' datastore plugin\n"), + name); GNUNET_asprintf (&libname, "libgnunet_plugin_datastore_%s", name); if (NULL == (ret = GNUNET_PLUGIN_load (libname, &env))) { - fprintf (stderr, "Failed to load plugin `%s'!\n", name); + FPRINTF (stderr, "Failed to load plugin `%s'!\n", name); return NULL; } GNUNET_free (libname); @@ -340,9 +329,8 @@ load_plugin (const struct GNUNET_CONFIGURATION_Handle *cfg) static void -run (void *cls, - char *const *args, - const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *c) +run (void *cls, char *const *args, const char *cfgfile, + const struct GNUNET_CONFIGURATION_Handle *c) { struct GNUNET_DATASTORE_PluginFunctions *api; struct CpsRunContext *crc; @@ -350,8 +338,8 @@ run (void *cls, api = load_plugin (c); if (api == NULL) { - fprintf (stderr, - "Could not initialize plugin, assuming database not configured. Test not run!\n"); + FPRINTF (stderr, + "%s", "Could not initialize plugin, assuming database not configured. Test not run!\n"); return; } crc = GNUNET_malloc (sizeof (struct CpsRunContext)); @@ -362,70 +350,37 @@ run (void *cls, } -static int -check () +int +main (int argc, char *argv[]) { + char dir_name[128]; char cfg_name[128]; - - char *const argv[] = { + char *const xargv[] = { "test-plugin-datastore", "-c", cfg_name, -#if VERBOSE - "-L", "DEBUG", -#endif NULL }; - struct GNUNET_GETOPT_CommandLineOption options[] = { + static struct GNUNET_GETOPT_CommandLineOption options[] = { GNUNET_GETOPT_OPTION_END }; - GNUNET_snprintf (cfg_name, - sizeof (cfg_name), - "test_plugin_datastore_data_%s.conf", plugin_name); - GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, - argv, "test-plugin-datastore", "nohelp", - options, &run, NULL); - if (ok != 0) - fprintf (stderr, "Missed some testcases: %u\n", ok); - return ok; -} - - -int -main (int argc, char *argv[]) -{ - int ret; - char *pos; - char dir_name[128]; - - sleep (1); /* determine name of plugin to use */ - plugin_name = argv[0]; - while (NULL != (pos = strstr (plugin_name, "_"))) - plugin_name = pos + 1; - if (NULL != (pos = strstr (plugin_name, "."))) - pos[0] = 0; - else - pos = (char *) plugin_name; - - GNUNET_snprintf (dir_name, - sizeof (dir_name), + plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); + GNUNET_snprintf (dir_name, sizeof (dir_name), "/tmp/test-gnunet-datastore-plugin-%s", plugin_name); GNUNET_DISK_directory_remove (dir_name); GNUNET_log_setup ("test-plugin-datastore", -#if VERBOSE - "DEBUG", -#else "WARNING", -#endif NULL); - ret = check (); - if (pos != plugin_name) - pos[0] = '.'; + GNUNET_snprintf (cfg_name, sizeof (cfg_name), + "test_plugin_datastore_data_%s.conf", plugin_name); + GNUNET_PROGRAM_run ((sizeof (xargv) / sizeof (char *)) - 1, xargv, + "test-plugin-datastore", "nohelp", options, &run, NULL); + if (0 != ok) + FPRINTF (stderr, "Missed some testcases: %u\n", ok); GNUNET_DISK_directory_remove (dir_name); - - return ret; + return ok; } /* end of test_plugin_datastore.c */