fixing 1584
[oweals/gnunet.git] / src / fs / test_fs_search_persistence.c
index af434451586829830ab19c87e4352203fcf99e2f..2b689e478a2b25d27611b563e9c5932cff55ce1d 100644 (file)
@@ -4,7 +4,7 @@
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
-     by the Free Software Foundation; either version 2, or (at your
+     by the Free Software Foundation; either version 3, or (at your
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
@@ -159,16 +159,25 @@ progress_cb (void *cls,
     case GNUNET_FS_STATUS_PUBLISH_COMPLETED:
       kuri = GNUNET_FS_uri_ksk_create_from_args (1, keywords);
       start = GNUNET_TIME_absolute_get ();
-      search = GNUNET_FS_search_start (fs,
-                                      kuri,
-                                      1,
-                                      GNUNET_FS_SEARCH_OPTION_NONE,
-                                      "search");
+      GNUNET_FS_search_start (fs,
+                             kuri,
+                             1,
+                             GNUNET_FS_SEARCH_OPTION_NONE,
+                             "search");
       GNUNET_FS_uri_destroy (kuri);
       GNUNET_assert (search != NULL);
       break;
+    case GNUNET_FS_STATUS_PUBLISH_SUSPEND:
+      if  (event->value.publish.pc == publish)
+       publish = NULL;
+      break;
+    case GNUNET_FS_STATUS_PUBLISH_RESUME:
+      if (NULL == publish)
+       publish = event->value.publish.pc;
+      break;
     case GNUNET_FS_STATUS_SEARCH_RESULT:
-      consider_restart (event->status);
+      /* FIXME: consider_restart (event->status); cannot be tested with
+        search result since we exit here after the first one... */
 #if VERBOSE
       printf ("Search complete.\n");
 #endif
@@ -196,6 +205,17 @@ progress_cb (void *cls,
                                         NULL,
                                         GNUNET_SCHEDULER_REASON_PREREQ_DONE);
       break;
+    case GNUNET_FS_STATUS_SEARCH_SUSPEND:
+      if  (event->value.search.sc == search)
+       search = NULL;
+      break;
+    case GNUNET_FS_STATUS_SEARCH_RESUME:
+      if (NULL == search)
+       {
+         search = event->value.search.sc;
+         return "search";
+       }
+      break;
     case GNUNET_FS_STATUS_PUBLISH_START:
       GNUNET_assert (0 == strcmp ("publish-context", event->value.publish.cctx));
       GNUNET_assert (NULL == event->value.publish.pctx);
@@ -204,7 +224,7 @@ progress_cb (void *cls,
       GNUNET_assert (1 == event->value.publish.anonymity);
       break;
     case GNUNET_FS_STATUS_PUBLISH_STOPPED:
-      GNUNET_assert (publish == event->value.publish.sc);
+      GNUNET_assert (publish == event->value.publish.pc);
       GNUNET_assert (FILESIZE == event->value.publish.size);
       GNUNET_assert (1 == event->value.publish.anonymity);
       GNUNET_FS_stop (fs);
@@ -213,18 +233,19 @@ progress_cb (void *cls,
     case GNUNET_FS_STATUS_SEARCH_START:
       consider_restart (event->status);
       GNUNET_assert (search == NULL);
+      search = event->value.search.sc;
       GNUNET_assert (0 == strcmp ("search", event->value.search.cctx));
       GNUNET_assert (1 == event->value.search.anonymity);
       break;
     case GNUNET_FS_STATUS_SEARCH_RESULT_STOPPED:
       break;
     case GNUNET_FS_STATUS_SEARCH_STOPPED:
-      consider_restart (event->status);
       GNUNET_assert (search == event->value.search.sc);
       GNUNET_SCHEDULER_add_continuation (sched,
                                         &abort_publish_task,
                                         NULL,
                                         GNUNET_SCHEDULER_REASON_PREREQ_DONE);
+      search = NULL;
       break;
     default:
       fprintf (stderr,
@@ -338,6 +359,7 @@ main (int argc, char *argv[])
     GNUNET_GETOPT_OPTION_END
   };
 
+  GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-search/");
   GNUNET_log_setup ("test_fs_search_persistence", 
 #if VERBOSE
                    "DEBUG",
@@ -346,7 +368,7 @@ main (int argc, char *argv[])
 #endif
                    NULL);
   GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1,
-                      argvx, "test-fs-search-persistencce",
+                      argvx, "test-fs-search-persistence",
                      "nohelp", options, &run, NULL);
   stop_arm (&p1);
   GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-search/");