-fixfix
[oweals/gnunet.git] / src / peerinfo / test_peerinfo_api.c
index ad93f706d7327b90856edb735317a42c9ab55415..e4eb7d4805de30a2a3adaa033679f46539ddc64e 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
 
      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
@@ -36,8 +36,6 @@
 #include "gnunet_time_lib.h"
 #include "peerinfo.h"
 
 #include "gnunet_time_lib.h"
 #include "peerinfo.h"
 
-static struct GNUNET_SCHEDULER_Handle *sched;
-
 static const struct GNUNET_CONFIGURATION_Handle *cfg;
 
 static struct GNUNET_PEERINFO_IteratorContext *ic;
 static const struct GNUNET_CONFIGURATION_Handle *cfg;
 
 static struct GNUNET_PEERINFO_IteratorContext *ic;
@@ -47,19 +45,19 @@ static struct GNUNET_PEERINFO_Handle *h;
 static unsigned int retries;
 
 static int
 static unsigned int retries;
 
 static int
-check_it (void *cls,
-          const char *tname,
-          struct GNUNET_TIME_Absolute expiration,
-          const void *addr, uint16_t addrlen)
+check_it (void *cls, const struct GNUNET_HELLO_Address *address,
+          struct GNUNET_TIME_Absolute expiration)
 {
   unsigned int *agc = cls;
 
 {
   unsigned int *agc = cls;
 
-  if (addrlen > 0)
-    {
-      GNUNET_assert (0 == strcmp ("peerinfotest", tname));
-      GNUNET_assert (0 == strncmp ("Address", addr, addrlen));
-      (*agc) -= (1 << (addrlen - 1));
-    }
+  if (address != NULL)
+  {
+    GNUNET_assert (0 == strcmp ("peerinfotest", address->transport_name));
+    GNUNET_assert (0 ==
+                   strncmp ("Address", address->address,
+                            address->address_length));
+    (*agc) -= (1 << (address->address_length - 1));
+  }
   return GNUNET_OK;
 }
 
   return GNUNET_OK;
 }
 
@@ -69,13 +67,18 @@ address_generator (void *cls, size_t max, void *buf)
 {
   size_t *agc = cls;
   size_t ret;
 {
   size_t *agc = cls;
   size_t ret;
+  struct GNUNET_HELLO_Address address;
 
   if (0 == *agc)
     return 0;
 
   if (0 == *agc)
     return 0;
-  ret = GNUNET_HELLO_add_address ("peerinfotest",
-                                  GNUNET_TIME_relative_to_absolute
-                                  (GNUNET_TIME_UNIT_HOURS), "Address", *agc,
-                                  buf, max);
+  memset (&address.peer, 0, sizeof (struct GNUNET_PeerIdentity));
+  address.address = "Address";
+  address.transport_name = "peerinfotest";
+  address.address_length = *agc;
+  ret =
+      GNUNET_HELLO_add_address (&address,
+                                GNUNET_TIME_relative_to_absolute
+                                (GNUNET_TIME_UNIT_HOURS), buf, max);
   (*agc)--;
   return ret;
 }
   (*agc)--;
   return ret;
 }
@@ -93,73 +96,68 @@ add_peer ()
   memset (&pkey, 32, sizeof (pkey));
   GNUNET_CRYPTO_hash (&pkey, sizeof (pkey), &pid.hashPubKey);
   h2 = GNUNET_HELLO_create (&pkey, &address_generator, &agc);
   memset (&pkey, 32, sizeof (pkey));
   GNUNET_CRYPTO_hash (&pkey, sizeof (pkey), &pid.hashPubKey);
   h2 = GNUNET_HELLO_create (&pkey, &address_generator, &agc);
-  GNUNET_PEERINFO_add_peer (h, h2);
+  GNUNET_PEERINFO_add_peer (h, h2, NULL, NULL);
   GNUNET_free (h2);
 
 }
 
 
 static void
   GNUNET_free (h2);
 
 }
 
 
 static void
-process (void *cls,
-         const struct GNUNET_PeerIdentity *peer,
-         const struct GNUNET_HELLO_Message *hello, uint32_t trust)
+process (void *cls, const struct GNUNET_PeerIdentity *peer,
+         const struct GNUNET_HELLO_Message *hello, const char *err_msg)
 {
   int *ok = cls;
   unsigned int agc;
 
 {
   int *ok = cls;
   unsigned int agc;
 
+  if (err_msg != NULL)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                _("Error in communication with PEERINFO service\n"));
+  }
+
   if (peer == NULL)
   if (peer == NULL)
+  {
+    ic = NULL;
+    if ((3 == *ok) && (retries < 50))
     {
     {
-      ic = NULL;
-      if ( (3 == *ok) &&
-          (retries < 50) )
-       {
-         /* try again */
-         retries++;      
-         add_peer ();
-         ic = GNUNET_PEERINFO_iterate (h,
-                                       NULL,
-                                       0,
-                                       GNUNET_TIME_relative_multiply
-                                       (GNUNET_TIME_UNIT_SECONDS, 15), 
-                                       &process, cls);
-         return;
-       }
-      GNUNET_assert (peer == NULL);
-      GNUNET_assert (2 == *ok);
-      GNUNET_assert (trust == 0);
-      GNUNET_PEERINFO_disconnect (h);
-      h = NULL;
-      *ok = 0;
+      /* try again */
+      retries++;
+      add_peer ();
+      ic = GNUNET_PEERINFO_iterate (h, NULL,
+                                    GNUNET_TIME_relative_multiply
+                                    (GNUNET_TIME_UNIT_SECONDS, 15), &process,
+                                    cls);
       return;
     }
       return;
     }
+    GNUNET_assert (peer == NULL);
+    GNUNET_assert (2 == *ok);
+    GNUNET_PEERINFO_disconnect (h);
+    h = NULL;
+    *ok = 0;
+    return;
+  }
   if (hello != NULL)
   if (hello != NULL)
-    {
-      GNUNET_assert (3 == *ok);
-      agc = 3;
-      GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO, &check_it, &agc);
-      GNUNET_assert (agc == 0);
-      *ok = 2;
-    }
+  {
+    GNUNET_assert (3 == *ok);
+    agc = 3;
+    GNUNET_HELLO_iterate_addresses (hello, GNUNET_NO, &check_it, &agc);
+    GNUNET_assert (agc == 0);
+    *ok = 2;
+  }
 }
 
 
 static void
 }
 
 
 static void
-run (void *cls,
-     struct GNUNET_SCHEDULER_Handle *s,
-     char *const *args,
-     const char *cfgfile, 
+run (void *cls, char *const *args, const char *cfgfile,
      const struct GNUNET_CONFIGURATION_Handle *c)
 {
      const struct GNUNET_CONFIGURATION_Handle *c)
 {
-  sched = s;
   cfg = c;
   cfg = c;
-  h = GNUNET_PEERINFO_connect (sched, cfg);
+  h = GNUNET_PEERINFO_connect (cfg);
+  GNUNET_assert (h != NULL);
   add_peer ();
   add_peer ();
-  ic = GNUNET_PEERINFO_iterate (h,
-                               NULL,
-                               0,
-                               GNUNET_TIME_relative_multiply
-                               (GNUNET_TIME_UNIT_SECONDS, 15),
-                               &process, cls);
+  ic = GNUNET_PEERINFO_iterate (h, NULL,
+                                GNUNET_TIME_relative_multiply
+                                (GNUNET_TIME_UNIT_SECONDS, 15), &process, cls);
 }
 
 
 }
 
 
@@ -167,7 +165,8 @@ static int
 check ()
 {
   int ok = 3;
 check ()
 {
   int ok = 3;
-  pid_t pid;
+  struct GNUNET_OS_Process *proc;
+
   char *const argv[] = { "test-peerinfo-api",
     "-c",
     "test_peerinfo_api_data.conf",
   char *const argv[] = { "test-peerinfo-api",
     "-c",
     "test_peerinfo_api_data.conf",
@@ -179,21 +178,24 @@ check ()
   struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
   struct GNUNET_GETOPT_CommandLineOption options[] = {
     GNUNET_GETOPT_OPTION_END
   };
-  pid = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-peerinfo",
-                                 "gnunet-service-peerinfo",
+  proc =
+    GNUNET_OS_start_process (GNUNET_YES, NULL, NULL, "gnunet-service-peerinfo",
+                               "gnunet-service-peerinfo",
 #if DEBUG_PEERINFO
 #if DEBUG_PEERINFO
-                                 "-L", "DEBUG",
+                               "-L", "DEBUG",
 #endif
 #endif
-                                 "-c", "test_peerinfo_api_data.conf", NULL);
-  GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1,
-                      argv, "test-peerinfo-api", "nohelp",
-                      options, &run, &ok);
-  if (0 != PLIBC_KILL (pid, SIGTERM))
-    {
-      GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill");
-      ok = 1;
-    }
-  GNUNET_OS_process_wait(pid);
+                               "-c", "test_peerinfo_api_data.conf", NULL);
+  GNUNET_assert (NULL != proc);
+  GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv,
+                      "test-peerinfo-api", "nohelp", options, &run, &ok);
+  if (0 != GNUNET_OS_process_kill (proc, SIGTERM))
+  {
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill");
+    ok = 1;
+  }
+  GNUNET_OS_process_wait (proc);
+  GNUNET_OS_process_close (proc);
+  proc = NULL;
   return ok;
 }
 
   return ok;
 }
 
@@ -211,7 +213,7 @@ main (int argc, char *argv[])
 #endif
                     NULL);
   ret = check ();
 #endif
                     NULL);
   ret = check ();
-  GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-peerinfo");
+  GNUNET_DISK_directory_remove ("/tmp/test-gnunet-peerinfo");
   return ret;
 }
 
   return ret;
 }