-doxygen and indentation
[oweals/gnunet.git] / src / fs / test_fs_test_lib.c
index a62200100fd7953ab822b5c0366fbac1e4fd298f..7678c657bd004c261e2ad8af4654a256b1480c42 100644 (file)
@@ -1,10 +1,10 @@
 /*
      This file is part of GNUnet.
 /*
      This file is part of GNUnet.
-     (C) 2010 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2010, 2012 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
 
      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
      option) any later version.
 
      GNUnet is distributed in the hope that it will be useful, but
 /**
  * How long until we give up on transmitting the message?
  */
 /**
  * How long until we give up on transmitting the message?
  */
-#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60)
+#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 300)
 
 #define NUM_DAEMONS 2
 
 #define SEED 42
 
 
 #define NUM_DAEMONS 2
 
 #define SEED 42
 
-static struct GNUNET_FS_TestDaemon *daemons[NUM_DAEMONS];
+static struct GNUNET_TESTBED_Peer *the_peers[NUM_DAEMONS];
 
 
-static struct GNUNET_SCHEDULER_Handle *sched;
+static int ret;
 
 
 static void
 
 
 static void
-do_stop (void *cls,
-        const struct GNUNET_SCHEDULER_TaskContext *tc)
+do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
 {
-  GNUNET_assert (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Finished download, shutting down\n",
-             (unsigned long long) FILESIZE);
-  GNUNET_FS_TEST_daemons_stop (sched,
-                              NUM_DAEMONS,
-                              daemons);
+  char *fn = cls;
+
+  if (0 == (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE))
+  {
+    GNUNET_break (0);
+    ret = 1;
+  }
+  else
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Finished download, shutting down\n",
+                (unsigned long long) FILESIZE);
+  }
+  if (NULL != fn)
+  {
+    GNUNET_DISK_directory_remove (fn);
+    GNUNET_free (fn);
+  }
+  GNUNET_SCHEDULER_shutdown ();
 }
 
 
 static void
 }
 
 
 static void
-do_download (void *cls,
-            const struct GNUNET_FS_Uri *uri)
+do_download (void *cls, const struct GNUNET_FS_Uri *uri,
+            const char *fn)
 {
 {
-  GNUNET_assert (NULL != uri);
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Downloading %llu bytes\n",
-             (unsigned long long) FILESIZE);
-  GNUNET_FS_TEST_download (sched,
-                          daemons[0],
-                          TIMEOUT,
-                          1, SEED, uri, 
-                          VERBOSE, 
-                          &do_stop, NULL);
+  if (NULL == uri)
+  {
+    GNUNET_break (0);
+    GNUNET_SCHEDULER_shutdown ();
+    ret = 1;
+    return;
+  }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Downloading %llu bytes\n",
+              (unsigned long long) FILESIZE);
+  GNUNET_FS_TEST_download (the_peers[0], TIMEOUT, 1, SEED, uri, VERBOSE, &do_stop,
+                           (NULL == fn) ? NULL : GNUNET_strdup (fn));
 }
 
 
 static void
 do_publish (void *cls,
 }
 
 
 static void
 do_publish (void *cls,
-           const struct GNUNET_SCHEDULER_TaskContext *tc)
+           struct GNUNET_TESTBED_Operation *op,
+           const char *emsg)
 {
 {
-  GNUNET_assert (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Publishing %llu bytes\n",
-             (unsigned long long) FILESIZE);
-  GNUNET_FS_TEST_publish (sched,
-                         daemons[0],
-                         TIMEOUT,
-                         1, GNUNET_NO, FILESIZE, SEED, 
-                         VERBOSE, 
-                         &do_download, NULL);
-}
-
+  GNUNET_TESTBED_operation_done (op);
+  if (NULL != emsg)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to connect peers: %s\n", emsg);
+    GNUNET_break (0);
+    ret = 1;
+    GNUNET_SCHEDULER_shutdown ();
+    return;
+  }
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Publishing %llu bytes\n",
+              (unsigned long long) FILESIZE);
+  GNUNET_FS_TEST_publish (the_peers[0], TIMEOUT, 1, GNUNET_NO, FILESIZE, SEED,
+                          VERBOSE, &do_download, NULL);
 
 
-static void
-do_connect (void *cls,
-           const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  GNUNET_assert (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE));
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-             "Daemons started, will now try to connect them\n");
-  GNUNET_FS_TEST_daemons_connect (sched,
-                                 daemons[0],
-                                 daemons[1],
-                                 TIMEOUT,
-                                 &do_publish,
-                                 NULL);  
 }
 
 
 }
 
 
+/**
+ * Actual main function for the test.
+ *
+ * @param cls closure
+ * @param h the run handle
+ * @param num_peers number of peers in 'peers'
+ * @param peers handle to peers run in the testbed
+ * @param links_succeeded the number of overlay link connection attempts that
+ *          succeeded
+ * @param links_failed the number of overlay link connection attempts that
+ *          failed
+ */
 static void
 run (void *cls,
 static void
 run (void *cls,
-     struct GNUNET_SCHEDULER_Handle *s,
-     char *const *args,
-     const char *cfgfile,
-     const struct GNUNET_CONFIGURATION_Handle *cfg)
+     struct GNUNET_TESTBED_RunHandle *h,
+     unsigned int num_peers,
+     struct GNUNET_TESTBED_Peer **peers,
+     unsigned int links_succeeded,
+     unsigned int links_failed)
 {
 {
-  sched = s;
-  GNUNET_FS_TEST_daemons_start (sched,
-                               TIMEOUT,
-                               NUM_DAEMONS,
-                               daemons,
-                               &do_connect,
-                               NULL);
+  unsigned int i;
+
+  GNUNET_assert (NUM_DAEMONS == num_peers);
+  for (i=0;i<num_peers;i++)
+    the_peers[i] = peers[i];
+  GNUNET_TESTBED_overlay_connect (NULL,
+                                 &do_publish,
+                                 NULL,
+                                 peers[0],
+                                 peers[1]);
 }
 
 
 }
 
 
+/**
+ * Main function that initializes the testbed.
+ *
+ * @param argc ignored
+ * @param argv ignored
+ * @return 0 on success
+ */
 int
 main (int argc, char *argv[])
 {
 int
 main (int argc, char *argv[])
 {
-  char *const argvx[] = { 
-    "test-fs-test-lib",
-    "-c",
-    "fs_test_lib_data.conf",
-#if VERBOSE
-    "-L", "DEBUG",
-#endif
-    NULL
-  };
-  struct GNUNET_GETOPT_CommandLineOption options[] = {
-    GNUNET_GETOPT_OPTION_END
-  };
-
   GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/");
   GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/");
-  GNUNET_log_setup ("test_fs_test_lib", 
-#if VERBOSE
-                   "DEBUG",
-#else
-                   "WARNING",
-#endif
-                   NULL);
-  GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1,
-                      argvx, "test-fs-test-lib",
-                     "nohelp", options, &run, NULL);
+  (void) GNUNET_TESTBED_test_run ("test_fs_test_lib",
+                                  "fs_test_lib_data.conf",
+                                  NUM_DAEMONS,
+                                  0, NULL, NULL,
+                                  &run, NULL);
   GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/");
   GNUNET_DISK_directory_remove ("/tmp/gnunet-test-fs-lib/");
-  return 0;
+  return ret;
 }
 
 }
 
-/* end of test_gnunet_service_fs_p2p.c */
+/* end of test_fs_test_lib.c */