-ensure stats queues do not grow too big
[oweals/gnunet.git] / src / testbed / test_testbed_api_hosts.c
index e5b529ad82a151f69a3f9118cf48cd11c1867e81..0999020a8352a39b4e171e19e683a456343d322a 100644 (file)
@@ -1,6 +1,6 @@
 /*
       This file is part of GNUnet
-      (C) 2008--2012 Christian Grothoff (and other contributing authors)
+      Copyright (C) 2008--2013 GNUnet e.V.
 
       GNUnet is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
       You should have received a copy of the GNU General Public License
       along with GNUnet; see the file COPYING.  If not, write to the
-      Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-      Boston, MA 02111-1307, USA.
+      Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+      Boston, MA 02110-1301, USA.
  */
 
 /**
 #define TIME_REL_SECS(sec)                                             \
   GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, sec)
 
+/**
+ * configuration handle to use as template configuration while creating hosts
+ */
+static struct GNUNET_CONFIGURATION_Handle *cfg;
+
 /**
  * Host we are creating and using
  */
@@ -53,19 +58,14 @@ static unsigned int num_hosts;
  */
 static int status;
 
-/**
- * Shutdown task identifier
- */
-GNUNET_SCHEDULER_TaskIdentifier shutdown_id;
 
 /**
  * The shutdown task
  *
  * @param cls NULL
- * @param tc the task context
  */
 static void
-do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+do_shutdown (void *cls)
 {
   GNUNET_TESTBED_host_destroy (host);
   while (0 != num_hosts)
@@ -74,6 +74,11 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     num_hosts--;
   }
   GNUNET_free (hosts);
+  if (NULL != cfg)
+  {
+    GNUNET_CONFIGURATION_destroy (cfg);
+    cfg = NULL;
+  }
 }
 
 
@@ -87,24 +92,70 @@ do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
  */
 static void
 run (void *cls, char *const *args, const char *cfgfile,
-     const struct GNUNET_CONFIGURATION_Handle *cfg)
+     const struct GNUNET_CONFIGURATION_Handle *config)
 {
-  host = GNUNET_TESTBED_host_create ("localhost", NULL, 0);
+  unsigned int cnt;
+
+  cfg = GNUNET_CONFIGURATION_dup (config);
+  host = GNUNET_TESTBED_host_create ("localhost", NULL, cfg, 0);
   GNUNET_assert (NULL != host);
   GNUNET_assert (0 != GNUNET_TESTBED_host_get_id_ (host));
   GNUNET_TESTBED_host_destroy (host);
-  host = GNUNET_TESTBED_host_create (NULL, NULL, 0);
+  host = GNUNET_TESTBED_host_create (NULL, NULL, cfg, 0);
   GNUNET_assert (NULL != host);
   GNUNET_assert (0 == GNUNET_TESTBED_host_get_id_ (host));
   GNUNET_assert (host == GNUNET_TESTBED_host_lookup_by_id_ (0));
   hosts = NULL;
-  num_hosts =  GNUNET_TESTBED_hosts_load_from_file ("sample_hosts.txt",
-                                                    &hosts);
-  GNUNET_assert (15 == num_hosts);
+  num_hosts = GNUNET_TESTBED_hosts_load_from_file ("sample_hosts.txt", cfg, &hosts);
+  GNUNET_assert (7 == num_hosts);
   GNUNET_assert (NULL != hosts);
-  result = GNUNET_YES;
-  shutdown_id =
-      GNUNET_SCHEDULER_add_delayed (TIME_REL_SECS (2), &do_shutdown, NULL);
+  for (cnt = 0; cnt < num_hosts; cnt++)
+  {
+    if (cnt < 3)
+    {
+      GNUNET_assert (0 == strcmp ("totakura",
+                                  GNUNET_TESTBED_host_get_username_
+                                  (hosts[cnt])));
+      GNUNET_assert (NULL != GNUNET_TESTBED_host_get_hostname (hosts[cnt]));
+      GNUNET_assert (22 == GNUNET_TESTBED_host_get_ssh_port_ (hosts[cnt]));
+    }
+    if (3 == cnt)
+    {
+      GNUNET_assert (0 == strcmp ("totakura",
+                                  GNUNET_TESTBED_host_get_username_
+                                  (hosts[cnt])));
+      GNUNET_assert (NULL != GNUNET_TESTBED_host_get_hostname (hosts[cnt]));
+      GNUNET_assert (2022 == GNUNET_TESTBED_host_get_ssh_port_ (hosts[cnt]));
+    }
+    if (4 == cnt)
+    {
+      GNUNET_assert (0 == strcmp ("totakura",
+                                  GNUNET_TESTBED_host_get_username_
+                                  (hosts[cnt])));
+      GNUNET_assert (0 == strcmp ("asgard.realm",
+                                  GNUNET_TESTBED_host_get_hostname
+                                  (hosts[cnt])));
+      GNUNET_assert (22 == GNUNET_TESTBED_host_get_ssh_port_ (hosts[cnt]));
+    }
+    if (5 == cnt)
+    {
+      GNUNET_assert (NULL == GNUNET_TESTBED_host_get_username_ (hosts[cnt]));
+      GNUNET_assert (0 == strcmp ("rivendal",
+                                  GNUNET_TESTBED_host_get_hostname
+                                  (hosts[cnt])));
+      GNUNET_assert (22 == GNUNET_TESTBED_host_get_ssh_port_ (hosts[cnt]));
+    }
+    if (6 == cnt)
+    {
+      GNUNET_assert (NULL == GNUNET_TESTBED_host_get_username_ (hosts[cnt]));
+      GNUNET_assert (0 == strcmp ("rohan",
+                                  GNUNET_TESTBED_host_get_hostname
+                                  (hosts[cnt])));
+      GNUNET_assert (561 == GNUNET_TESTBED_host_get_ssh_port_ (hosts[cnt]));
+    }
+  }
+  status = GNUNET_YES;
+  GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
 }