-fix docu
[oweals/gnunet.git] / src / core / test_core_api_reliability.c
index ad6e6a76199182542ade88f5a3ae59b7e0e62885..645b27e74687c7638575b43ae7682b0b5976a29d 100644 (file)
@@ -20,9 +20,6 @@
 /**
  * @file core/test_core_api_reliability.c
  * @brief testcase for core_api.c focusing on reliable transmission (with TCP)
- *
- * FIXME:
- * - make sure connect callback is invoked properly as well!
  */
 #include "platform.h"
 #include "gnunet_common.h"
@@ -66,6 +63,8 @@ static struct GNUNET_TIME_Absolute start_time;
 
 static GNUNET_SCHEDULER_TaskIdentifier err_task;
 
+static GNUNET_SCHEDULER_TaskIdentifier connect_task;
+
 
 struct PeerContext
 {
@@ -91,7 +90,7 @@ static int32_t tr_n;
 
 
 #if VERBOSE
-#define OKPP do { ok++; fprintf (stderr, "Now at stage %u at %s:%u\n", ok, __FILE__, __LINE__); } while (0)
+#define OKPP do { ok++; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Now at stage %u at %s:%u\n", ok, __FILE__, __LINE__); } while (0)
 #else
 #define OKPP do { ok++; } while (0)
 #endif
@@ -128,12 +127,14 @@ terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   p1.ch = NULL;
   GNUNET_CORE_disconnect (p2.ch);
   p2.ch = NULL;
+  if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+    GNUNET_SCHEDULER_cancel (connect_task);
   GNUNET_TRANSPORT_disconnect (p1.th);
   p1.th = NULL;
   GNUNET_TRANSPORT_disconnect (p2.th);
   p2.th = NULL;
   delta = GNUNET_TIME_absolute_get_duration (start_time).rel_value;
-  fprintf (stderr, "\nThroughput was %llu kb/s\n",
+  FPRINTF (stderr, "\nThroughput was %llu kb/s\n",
            total_bytes * 1000 / 1024 / delta);
   GAUGER ("CORE", "Core throughput/s", total_bytes * 1000 / 1024 / delta,
           "kb/s");
@@ -155,6 +156,8 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     GNUNET_CORE_disconnect (p2.ch);
     p2.ch = NULL;
   }
+  if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+    GNUNET_SCHEDULER_cancel (connect_task);
   if (p1.th != NULL)
   {
     GNUNET_TRANSPORT_get_hello_cancel (p1.ghh);
@@ -171,6 +174,15 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 }
 
 
+static void
+try_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  connect_task =
+      GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &try_connect,
+                                    NULL);
+  GNUNET_TRANSPORT_try_connect (p1.th, &p2.id);
+}
+
 static size_t
 transmit_ready (void *cls, size_t size, void *buf)
 {
@@ -228,7 +240,8 @@ transmit_ready (void *cls, size_t size, void *buf)
 
 static void
 connect_notify (void *cls, const struct GNUNET_PeerIdentity *peer,
-                const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+                const struct GNUNET_ATS_Information *atsi,
+                unsigned int atsi_count)
 {
   struct PeerContext *pc = cls;
 
@@ -273,7 +286,8 @@ disconnect_notify (void *cls, const struct GNUNET_PeerIdentity *peer)
 static int
 inbound_notify (void *cls, const struct GNUNET_PeerIdentity *other,
                 const struct GNUNET_MessageHeader *message,
-                const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+                const struct GNUNET_ATS_Information *atsi,
+                unsigned int atsi_count)
 {
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -286,7 +300,8 @@ inbound_notify (void *cls, const struct GNUNET_PeerIdentity *other,
 static int
 outbound_notify (void *cls, const struct GNUNET_PeerIdentity *other,
                  const struct GNUNET_MessageHeader *message,
-                 const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+                 const struct GNUNET_ATS_Information *atsi,
+                 unsigned int atsi_count)
 {
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -303,7 +318,8 @@ transmit_ready (void *cls, size_t size, void *buf);
 static int
 process_mtype (void *cls, const struct GNUNET_PeerIdentity *peer,
                const struct GNUNET_MessageHeader *message,
-               const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+               const struct GNUNET_ATS_Information *atsi,
+               unsigned int atsi_count)
 {
   static int n;
   unsigned int s;
@@ -337,7 +353,7 @@ process_mtype (void *cls, const struct GNUNET_PeerIdentity *peer,
 #endif
   n++;
   if (0 == (n % (TOTAL_MSGS / 100)))
-    fprintf (stderr, ".");
+    FPRINTF (stderr, "%s",  ".");
   if (n == TOTAL_MSGS)
   {
     GNUNET_SCHEDULER_cancel (err_task);
@@ -365,8 +381,7 @@ static struct GNUNET_CORE_MessageHandler handlers[] = {
 
 static void
 init_notify (void *cls, struct GNUNET_CORE_Handle *server,
-             const struct GNUNET_PeerIdentity *my_identity,
-             const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *publicKey)
+             const struct GNUNET_PeerIdentity *my_identity)
 {
   struct PeerContext *p = cls;
 
@@ -382,7 +397,7 @@ init_notify (void *cls, struct GNUNET_CORE_Handle *server,
     OKPP;
     /* connect p2 */
     GNUNET_CORE_connect (p2.cfg, 1, &p2, &init_notify, &connect_notify,
-                         &disconnect_notify, NULL, &inbound_notify, GNUNET_YES,
+                         &disconnect_notify, &inbound_notify, GNUNET_YES,
                          &outbound_notify, GNUNET_YES, handlers);
   }
   else
@@ -391,9 +406,9 @@ init_notify (void *cls, struct GNUNET_CORE_Handle *server,
     OKPP;
     GNUNET_assert (cls == &p2);
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Asking core (1) to connect to peer `%4s'\n",
+                "Asking transport (1) to connect to peer `%4s'\n",
                 GNUNET_i2s (&p2.id));
-    GNUNET_CORE_peer_request_connect (p1.ch, &p2.id, NULL, NULL);
+    connect_task = GNUNET_SCHEDULER_add_now (&try_connect, NULL);
   }
 }
 
@@ -427,7 +442,7 @@ setup_peer (struct PeerContext *p, const char *cfgname)
   p->cfg = GNUNET_CONFIGURATION_create ();
 #if START_ARM
   p->arm_proc =
-      GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm",
+    GNUNET_OS_start_process (GNUNET_YES, NULL, NULL, "gnunet-service-arm",
                                "gnunet-service-arm",
 #if VERBOSE
                                "-L", "DEBUG",
@@ -452,7 +467,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   err_task =
       GNUNET_SCHEDULER_add_delayed (TIMEOUT, &terminate_task_error, NULL);
   GNUNET_CORE_connect (p1.cfg, 1, &p1, &init_notify, &connect_notify,
-                       &disconnect_notify, NULL, &inbound_notify, GNUNET_YES,
+                       &disconnect_notify, &inbound_notify, GNUNET_YES,
                        &outbound_notify, GNUNET_YES, handlers);
 }