it seems once a connection fails a few times, it will never work
[oweals/gnunet.git] / src / testing / test_testing_group_remote.c
index a58a1234e0709092a218a900cdf420384e5f0c3a..5156007a65e911158e4c6baffa7c8813bde7899c 100644 (file)
@@ -44,22 +44,19 @@ static int peers_failed;
 
 static struct GNUNET_TESTING_PeerGroup *pg;
 
-static struct GNUNET_SCHEDULER_Handle *sched;
-
 static unsigned long long num_peers;
 
 
 /**
  * Check whether peers successfully shut down.
  */
-void shutdown_callback (void *cls,
-                        const char *emsg)
+void
+shutdown_callback (void *cls, const char *emsg)
 {
   if (emsg != NULL)
     {
 #if VERBOSE
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "Shutdown of peers failed!\n");
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutdown of peers failed!\n");
 #endif
       if (ok == 0)
         ok = 666;
@@ -93,7 +90,8 @@ my_cb (void *cls,
     }
   else if (peers_failed == peers_left)
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Too many peers failed, ending test!\n");
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                  "Too many peers failed, ending test!\n");
       GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL);
     }
 }
@@ -101,7 +99,6 @@ my_cb (void *cls,
 
 static void
 run (void *cls,
-     struct GNUNET_SCHEDULER_Handle *s,
      char *const *args,
      const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg)
 {
@@ -113,7 +110,7 @@ run (void *cls,
   char *buf;
   char *data;
   int count;
-  sched = s;
+  int ret;
   ok = 1;
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting daemons.\n");
@@ -124,7 +121,7 @@ run (void *cls,
                                              &num_peers))
     num_peers = DEFAULT_NUM_PEERS;
 
-  GNUNET_assert(num_peers > 0 && num_peers < (unsigned long long)-1);
+  GNUNET_assert (num_peers > 0 && num_peers < (unsigned long long) -1);
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_string (cfg, "testing", "hostfile",
                                              &hostfile))
@@ -135,71 +132,92 @@ run (void *cls,
   if (hostfile != NULL)
     {
       if (GNUNET_OK != GNUNET_DISK_file_test (hostfile))
-          GNUNET_DISK_fn_write (hostfile, NULL, 0, GNUNET_DISK_PERM_USER_READ
-            | GNUNET_DISK_PERM_USER_WRITE);
+        GNUNET_DISK_fn_write (hostfile, NULL, 0, GNUNET_DISK_PERM_USER_READ
+                              | GNUNET_DISK_PERM_USER_WRITE);
       if ((0 != STAT (hostfile, &frstat)) || (frstat.st_size == 0))
         {
           GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                       "Could not open file specified for host list, ending test!");
           ok = 1119;
-          GNUNET_free(hostfile);
+          GNUNET_free (hostfile);
+          return;
+        }
+
+      data = GNUNET_malloc_large (frstat.st_size);
+      GNUNET_assert (data != NULL);
+      if (frstat.st_size !=
+          GNUNET_DISK_fn_read (hostfile, data, frstat.st_size))
+        {
+          GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                      "Could not read file %s specified for host list, ending test!",
+                      hostfile);
+          GNUNET_free (hostfile);
+          GNUNET_free (data);
           return;
         }
 
-    data = GNUNET_malloc_large (frstat.st_size);
-    GNUNET_assert(data != NULL);
-    if (frstat.st_size !=
-        GNUNET_DISK_fn_read (hostfile, data, frstat.st_size))
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Could not read file %s specified for host list, ending test!", hostfile);
-        GNUNET_free (hostfile);
-        GNUNET_free (data);
-        return;
-      }
-
-    GNUNET_free_non_null(hostfile);
-
-    buf = data;
-    count = 0;
-    while (count < frstat.st_size)
-      {
-        count++;
-        if (((data[count] == '\n') || (data[count] == '\0')) && (buf != &data[count]))
-          {
-            data[count] = '\0';
-            temphost = GNUNET_malloc(sizeof(struct GNUNET_TESTING_Host));
-            temphost->hostname = buf;
-            temphost->next = hosts;
-            hosts = temphost;
+      GNUNET_free_non_null (hostfile);
+
+      buf = data;
+      count = 0;
+      while (count < frstat.st_size)
+        {
+          count++;
+          if (count >= frstat.st_size)
+            break;
+
+          /* if (((data[count] == '\n') || (data[count] == '\0')) && (buf != &data[count])) */
+          if (((data[count] == '\n')) && (buf != &data[count]))
+            {
+              data[count] = '\0';
+              temphost = GNUNET_malloc (sizeof (struct GNUNET_TESTING_Host));
+              ret =
+                sscanf (buf, "%a[a-zA-Z0-9]@%a[a-zA-Z0-9.]:%hd",
+                        &temphost->username, &temphost->hostname,
+                        &temphost->port);
+              if (3 == ret)
+                {
+                  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                              "Successfully read host %s, port %d and user %s from file\n",
+                              temphost->hostname, temphost->port,
+                              temphost->username);
+                }
+              else
+                {
+                  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                              "Error reading line `%s' in hostfile\n", buf);
+                  GNUNET_free (temphost);
+                  buf = &data[count + 1];
+                  continue;
+                }
+              /* temphost->hostname = buf; */
+              temphost->next = hosts;
+              hosts = temphost;
+              buf = &data[count + 1];
+            }
+          else if ((data[count] == '\n') || (data[count] == '\0'))
             buf = &data[count + 1];
-          }
-        else if ((data[count] == '\n') || (data[count] == '\0'))
-          buf = &data[count + 1];
-      }
+        }
     }
 
   peers_left = num_peers;
-  pg = GNUNET_TESTING_daemons_start (sched,
-                                     cfg,
+  pg = GNUNET_TESTING_daemons_start (cfg,
                                      peers_left,
                                      TIMEOUT,
                                      NULL,
-                                     NULL,
-                                     &my_cb,
-                                     NULL,
-                                     NULL,
-                                     NULL,
-                                     hosts);
+                                     NULL, &my_cb, NULL, NULL, NULL, hosts);
   hostpos = hosts;
   while (hostpos != NULL)
     {
       temphost = hostpos->next;
-      GNUNET_free(hostpos);
+      GNUNET_free (hostpos->hostname);
+      GNUNET_free (hostpos->username);
+      GNUNET_free (hostpos);
       hostpos = temphost;
     }
-  GNUNET_free_non_null(data);
+  GNUNET_free_non_null (data);
   GNUNET_assert (pg != NULL);
+
 }
 
 static int