fixes
[oweals/gnunet.git] / src / testbed / test_testbed_api_hosts.c
index 340e2491a6f7f7abcf2e6865aace086d83c86102..12f0b61c742b9754d94e0c112ecb20dd57114cc0 100644 (file)
 static struct GNUNET_TESTBED_Host *host;
 
 /**
- * The host helper handle
+ * An array of hosts which are loaded from a file
  */
-static struct GNUNET_TESTBED_HelperHandle *helper_handle;
+static struct GNUNET_TESTBED_Host **hosts;
 
+/**
+ * Number of hosts in the above list
+ */
+static unsigned int num_hosts;
+
+/**
+ * Global test status
+ */
+static int status;
+
+/**
+ * Shutdown task identifier
+ */
+GNUNET_SCHEDULER_TaskIdentifier shutdown_id;
 
 /**
  * The shutdown task
@@ -53,13 +67,18 @@ static struct GNUNET_TESTBED_HelperHandle *helper_handle;
 static void
 do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-  GNUNET_TESTBED_host_stop_ (helper_handle);
   GNUNET_TESTBED_host_destroy (host);
+  while (0 != num_hosts)
+  {
+    GNUNET_TESTBED_host_destroy (hosts[num_hosts - 1]);
+    num_hosts--;
+  }
+  GNUNET_free (hosts);
 }
 
 
 /**
- * Main run function. 
+ * Main run function.
  *
  * @param cls NULL
  * @param args arguments passed to GNUNET_PROGRAM_run
@@ -70,9 +89,6 @@ static void
 run (void *cls, char *const *args, const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
-  char *const binary_args[] = {"gnunet-service-testbed",
-                              NULL};
-
   host = GNUNET_TESTBED_host_create ("localhost", NULL, 0);
   GNUNET_assert (NULL != host);
   GNUNET_assert (0 != GNUNET_TESTBED_host_get_id_ (host));
@@ -81,26 +97,35 @@ run (void *cls, char *const *args, const char *cfgfile,
   GNUNET_assert (NULL != host);
   GNUNET_assert (0 == GNUNET_TESTBED_host_get_id_ (host));
   GNUNET_assert (host == GNUNET_TESTBED_host_lookup_by_id_ (0));
-  helper_handle = GNUNET_TESTBED_host_run_ (host, binary_args);
-  GNUNET_assert (NULL != helper_handle);
-  GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS (1), &do_shutdown, NULL);
+  hosts = NULL;
+  num_hosts =  GNUNET_TESTBED_hosts_load_from_file ("sample_hosts.txt",
+                                                    &hosts);
+  GNUNET_assert (15 == num_hosts);
+  GNUNET_assert (NULL != hosts);
+  status = GNUNET_YES;
+  shutdown_id =
+      GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS (2), &do_shutdown, NULL);
 }
 
 
-int main (int argc, char **argv)
+int
+main (int argc, char **argv)
 {
-  int ret;
-
   char *const argv2[] = { "test_testbed_api_hosts",
-                          "-c", "test_testbed_api.conf",
-                          NULL
+    "-c", "test_testbed_api.conf",
+    NULL
   };
   struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
 
-  ret = GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2,
-                           "test_testbed_api_hosts", "nohelp", options, &run, NULL);
-
-  return GNUNET_OK == ret ? 0 : 1;
+  status = GNUNET_SYSERR;
+  if (GNUNET_OK !=
+      GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2,
+                          "test_testbed_api_hosts", "nohelp", options, &run,
+                          NULL))
+    return 1;
+  return (GNUNET_OK == status) ? 0 : 1;
 }
+
+/* end of test_testbed_api_hosts.c */