fixing reconnect issues
[oweals/gnunet.git] / src / datastore / perf_plugin_datastore.c
index 85659f06a980194faac90a871827c5b46f5dc208..ea1df5efa12dedc61461dadc874f8132948fb005 100644 (file)
@@ -71,7 +71,7 @@ struct CpsRunContext
   struct GNUNET_TIME_Absolute start;
   struct GNUNET_TIME_Absolute end;
   struct GNUNET_SCHEDULER_Handle *sched;
-  struct GNUNET_CONFIGURATION_Handle *cfg;
+  const struct GNUNET_CONFIGURATION_Handle *cfg;
   struct GNUNET_DATASTORE_PluginFunctions * api;
   const char *msg;
   enum RunPhase phase;
@@ -88,6 +88,7 @@ putValue (struct GNUNET_DATASTORE_PluginFunctions * api, int i, int k)
   static GNUNET_HashCode key;
   static int ic;
   char *msg;
+  unsigned int prio;
 
   /* most content is 32k */
   size = 32 * 1024;
@@ -104,12 +105,13 @@ putValue (struct GNUNET_DATASTORE_PluginFunctions * api, int i, int k)
     memset (value, i - 255, size / 2);
   value[0] = k;
   msg = NULL;
+  prio = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 100);
   if (GNUNET_OK != api->put (api->cls,
                             &key, 
                             size,
                             value,
                             i,
-                            GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 100),
+                            prio,
                             i,
                             GNUNET_TIME_relative_to_absolute 
                             (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS,
@@ -138,7 +140,7 @@ iterateDummy (void *cls,
              const GNUNET_HashCode * key,
              uint32_t size,
              const void *data,
-             uint32_t type,
+             enum GNUNET_BLOCK_Type type,
              uint32_t priority,
              uint32_t anonymity,
              struct GNUNET_TIME_Absolute
@@ -166,12 +168,15 @@ iterateDummy (void *cls,
            crc->phase = RP_PUT;
        }
       GNUNET_SCHEDULER_add_after (crc->sched,
-                                 GNUNET_NO,
-                                 GNUNET_SCHEDULER_PRIORITY_KEEP,
-                                 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK,
+                                 GNUNET_SCHEDULER_NO_TASK,
                                  &test, crc);
       return GNUNET_OK;
     }
+#if VERBOSE
+  fprintf (stderr, "Found result type=%u, priority=%u, size=%u, expire=%llu\n",
+          type, priority, size,
+          (unsigned long long) expiration.value);
+#endif
   crc->cnt++;
   crc->api->next_request (next_cls,
                          GNUNET_NO);
@@ -185,10 +190,11 @@ iterateDummy (void *cls,
  * down.  Unloads our datastore plugin.
  *
  * @param api api to unload
+ * @param cfg configuration to use
  */
 static void
 unload_plugin (struct GNUNET_DATASTORE_PluginFunctions * api,
-              struct GNUNET_CONFIGURATION_Handle *cfg)
+              const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
   char *name;
   char *libname;
@@ -246,9 +252,7 @@ test (void *cls,
       crc->i++;
       crc->phase = RP_LP_GET;
       GNUNET_SCHEDULER_add_after (crc->sched,
-                                 GNUNET_NO,
-                                 GNUNET_SCHEDULER_PRIORITY_KEEP,
-                                 GNUNET_SCHEDULER_NO_PREREQUISITE_TASK,
+                                 GNUNET_SCHEDULER_NO_TASK,
                                  &test, crc);
       break;
     case RP_LP_GET:
@@ -293,11 +297,8 @@ test (void *cls,
       break;
     case RP_DONE:
       crc->api->drop (crc->api->cls);
-      GNUNET_SCHEDULER_add_delayed (crc->sched,
-                                   GNUNET_YES,
+      GNUNET_SCHEDULER_add_with_priority (crc->sched,
                                    GNUNET_SCHEDULER_PRIORITY_IDLE,
-                                   GNUNET_SCHEDULER_NO_PREREQUISITE_TASK,
-                                   GNUNET_TIME_UNIT_ZERO,
                                    &cleaning_task, crc);
       break;
     }
@@ -308,7 +309,7 @@ test (void *cls,
  * Load the datastore plugin.
  */
 static struct GNUNET_DATASTORE_PluginFunctions *
-load_plugin (struct GNUNET_CONFIGURATION_Handle *cfg,
+load_plugin (const struct GNUNET_CONFIGURATION_Handle *cfg,
             struct GNUNET_SCHEDULER_Handle *sched)
 {
   static struct GNUNET_DATASTORE_PluginEnvironment env;
@@ -343,7 +344,7 @@ run (void *cls,
      struct GNUNET_SCHEDULER_Handle *s,
      char *const *args,
      const char *cfgfile,
-     struct GNUNET_CONFIGURATION_Handle *c)
+     const struct GNUNET_CONFIGURATION_Handle *c)
 {
   struct GNUNET_DATASTORE_PluginFunctions *api;
   struct CpsRunContext *crc;
@@ -356,9 +357,7 @@ run (void *cls,
   crc->cfg = c;
   crc->phase = RP_PUT;
   GNUNET_SCHEDULER_add_after (s,
-                             GNUNET_YES,
-                             GNUNET_SCHEDULER_PRIORITY_KEEP,
-                             GNUNET_SCHEDULER_NO_PREREQUISITE_TASK,
+                             GNUNET_SCHEDULER_NO_TASK,
                              &test, crc);
 }
 
@@ -392,6 +391,7 @@ main (int argc, char *argv[])
 {
   int ret;
 
+  GNUNET_DISK_directory_remove ("/tmp/perf-gnunet-datastore");
   GNUNET_log_setup ("perf-plugin-datastore",
 #if VERBOSE
                     "DEBUG",
@@ -400,6 +400,7 @@ main (int argc, char *argv[])
 #endif
                     NULL);
   ret = check ();
+  GNUNET_DISK_directory_remove ("/tmp/perf-gnunet-datastore");
 
   return ret;
 }