- fix
[oweals/gnunet.git] / src / dv / test_transport_api_dv.c
index 21fe7225ec69c425ddd4fc032dd53e973f64be48..6165a9db2f9cffa667d297571357c443c33b6f2f 100644 (file)
@@ -25,7 +25,7 @@
 #include "gnunet_testing_lib.h"
 #include "gnunet_core_service.h"
 
-#define VERBOSE GNUNET_EXTRA_LOGGING
+#define VERBOSE 1
 
 #define TEST_ALL GNUNET_NO
 
@@ -108,6 +108,8 @@ struct GNUNET_CONTAINER_MultiHashMap *peer_daemon_hash;
 
 #define MTYPE 12345
 
+GNUNET_NETWORK_STRUCT_BEGIN
+
 struct GNUNET_TestMessage
 {
   /**
@@ -120,6 +122,7 @@ struct GNUNET_TestMessage
    */
   uint32_t uid;
 };
+GNUNET_NETWORK_STRUCT_END
 
 struct PeerContext
 {
@@ -271,8 +274,8 @@ finish_testing (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 #endif
   if (dotOutFile != NULL)
   {
-    fprintf (dotOutFile, "}");
-    fclose (dotOutFile);
+    FPRINTF (dotOutFile, "%s",  "}");
+    FCLOSE (dotOutFile);
   }
 
   ok = 0;
@@ -379,8 +382,8 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 
   if (dotOutFile != NULL)
   {
-    fprintf (dotOutFile, "}");
-    fclose (dotOutFile);
+    FPRINTF (dotOutFile, "%s",  "}");
+    FCLOSE (dotOutFile);
   }
 }
 
@@ -394,24 +397,28 @@ send_other_messages (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc);
  * @return connected transport distance
  */
 static uint32_t
-get_atsi_distance (const struct GNUNET_TRANSPORT_ATS_Information *atsi)
+get_atsi_distance (const struct GNUNET_ATS_Information *atsi,
+                   unsigned int atsi_count)
 {
-  while ((ntohl (atsi->type) != GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR) &&
-         (ntohl (atsi->type) != GNUNET_TRANSPORT_ATS_QUALITY_NET_DISTANCE))
-    atsi++;
-  if (ntohl (atsi->type) == GNUNET_TRANSPORT_ATS_ARRAY_TERMINATOR)
+  unsigned int i;
+
+  for (i = 0; i < atsi_count; i++)
   {
-    GNUNET_break (0);
-    /* FIXME: we do not have distance data? Assume direct neighbor. */
-    return 1;
+    if (ntohl (atsi->type) == GNUNET_ATS_QUALITY_NET_DISTANCE)
+      return ntohl (atsi->value);
   }
-  return ntohl (atsi->value);
+
+  GNUNET_break (0);
+  /* FIXME: we do not have distance data? Assume direct neighbor. */
+  return 1;
 }
 
+
 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)
 {
   struct TestMessageContext *pos = cls;
   struct GNUNET_TestMessage *msg = (struct GNUNET_TestMessage *) message;
@@ -423,7 +430,7 @@ process_mtype (void *cls, const struct GNUNET_PeerIdentity *peer,
     return GNUNET_OK;
 
 #if VERBOSE
-  distance = get_atsi_distance (atsi);
+  distance = get_atsi_distance (atsi, atsi_count);
 #endif
   GNUNET_assert (0 ==
                  memcmp (peer, &pos->peer1->id,
@@ -450,7 +457,7 @@ process_mtype (void *cls, const struct GNUNET_PeerIdentity *peer,
                 GNUNET_i2s (peer), ntohs (message->type), ntohl (msg->uid),
                 distance);
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "Total messages received %d, expected %d.\n",
+                "Total OTHER messages received %d, expected %d.\n",
                 total_other_messages, total_other_expected_messages);
 #endif
   }
@@ -459,18 +466,13 @@ process_mtype (void *cls, const struct GNUNET_PeerIdentity *peer,
       (total_other_messages == 0))
   {
     GNUNET_SCHEDULER_cancel (die_task);
+#if VERBOSE
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Scheduling timeout from DV connections.\n");
+#endif
     die_task =
         GNUNET_SCHEDULER_add_delayed (TEST_TIMEOUT, &end_badly,
                                       "waiting for DV peers to connect!");
-    /*
-     * if ((num_peers == 3) && (total_other_expected_messages == 2))
-     * {
-     * GNUNET_SCHEDULER_add_now (&send_other_messages, NULL);
-     * }
-     * else
-     * {
-     * GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 20), &send_other_messages, NULL);
-     * } */
   }
   else if ((total_other_expected_messages > 0) &&
            (total_other_messages == total_other_expected_messages))
@@ -524,10 +526,12 @@ static struct GNUNET_CORE_MessageHandler handlers[] = {
  * @param cls closure
  * @param peer peer identity this notification is about
  * @param atsi performance data for the connection
+ * @param atsi_count number of ATS information included
  */
 static void
 connect_notify_peer2 (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 TestMessageContext *pos = cls;
 
@@ -577,10 +581,12 @@ init_notify_peer2 (void *cls, struct GNUNET_CORE_Handle *server,
  * @param cls closure
  * @param peer peer identity this notification is about
  * @param atsi performance data for the connection
+ * @param atsi_count number of atsi datums
  */
 static void
 connect_notify_peer1 (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 TestMessageContext *pos = cls;
 
@@ -596,8 +602,8 @@ connect_notify_peer1 (void *cls, const struct GNUNET_PeerIdentity *peer,
      */
     pos->peer2handle =
         GNUNET_CORE_connect (pos->peer2->cfg, 1, pos, &init_notify_peer2,
-                             &connect_notify_peer2, NULL, NULL, NULL,
-                             GNUNET_YES, NULL, GNUNET_YES, handlers);
+                             &connect_notify_peer2, NULL, NULL, GNUNET_YES,
+                             NULL, GNUNET_YES, handlers);
   }
 }
 
@@ -646,8 +652,8 @@ send_test_messages (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
    */
   pos->peer1handle =
       GNUNET_CORE_connect (pos->peer1->cfg, 1, pos, &init_notify_peer1,
-                           &connect_notify_peer1, NULL, NULL, NULL, GNUNET_NO,
-                           NULL, GNUNET_NO, no_handlers);
+                           &connect_notify_peer1, NULL, NULL, GNUNET_NO, NULL,
+                           GNUNET_NO, no_handlers);
 
   GNUNET_assert (pos->peer1handle != NULL);
 
@@ -835,12 +841,14 @@ topology_callback (void *cls, const struct GNUNET_PeerIdentity *first,
  *
  * @param cls closure
  * @param peer peer identity this notification is about
- * @param latency reported latency of the connection with 'other'
- * @param distance reported distance (DV) to 'other'
+ * @param atsi performance data about this peer's connection
+ * @param atsi_count number of atsi datums
+ *
  */
 static void
 all_connect_handler (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 GNUNET_TESTING_Daemon *d = cls;
   struct GNUNET_TESTING_Daemon *second_daemon;
@@ -854,7 +862,7 @@ all_connect_handler (void *cls, const struct GNUNET_PeerIdentity *peer,
   if (0 == memcmp (&d->id, peer, sizeof (struct GNUNET_PeerIdentity)))
     return;
   second_shortname = GNUNET_strdup (GNUNET_i2s (peer));
-  distance = get_atsi_distance (atsi);
+  distance = get_atsi_distance (atsi, atsi_count);
 
 #if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -888,18 +896,18 @@ all_connect_handler (void *cls, const struct GNUNET_PeerIdentity *peer,
   if (dotOutFile != NULL)
   {
     if (distance == 1)
-      fprintf (dotOutFile, "\tn%s -- n%s;\n", d->shortname, second_shortname);
+      FPRINTF (dotOutFile, "\tn%s -- n%s;\n", d->shortname, second_shortname);
     else if (distance == 2)
-      fprintf (dotOutFile, "\tn%s -- n%s [color=blue];\n", d->shortname,
+      FPRINTF (dotOutFile, "\tn%s -- n%s [color=blue];\n", d->shortname,
                second_shortname);
     else if (distance == 3)
-      fprintf (dotOutFile, "\tn%s -- n%s [color=red];\n", d->shortname,
+      FPRINTF (dotOutFile, "\tn%s -- n%s [color=red];\n", d->shortname,
                second_shortname);
     else if (distance == 4)
-      fprintf (dotOutFile, "\tn%s -- n%s [color=green];\n", d->shortname,
+      FPRINTF (dotOutFile, "\tn%s -- n%s [color=green];\n", d->shortname,
                second_shortname);
     else
-      fprintf (dotOutFile, "\tn%s -- n%s [color=brown];\n", d->shortname,
+      FPRINTF (dotOutFile, "\tn%s -- n%s [color=brown];\n", d->shortname,
                second_shortname);
   }
   GNUNET_free (second_shortname);
@@ -937,7 +945,7 @@ peers_started_callback (void *cls, const struct GNUNET_PeerIdentity *id,
   new_peer = GNUNET_malloc (sizeof (struct PeerContext));
   new_peer->peer_handle =
       GNUNET_CORE_connect (cfg, 1, d, NULL, &all_connect_handler, NULL, NULL,
-                           NULL, GNUNET_NO, NULL, GNUNET_NO, no_handlers);
+                           GNUNET_NO, NULL, GNUNET_NO, no_handlers);
   new_peer->daemon = d;
   new_peer->next = all_peers;
   all_peers = new_peer;
@@ -1059,7 +1067,7 @@ run (void *cls, char *const *args, const char *cfgfile,
   dotOutFile = fopen (dotOutFileName, "w");
   if (dotOutFile != NULL)
   {
-    fprintf (dotOutFile, "strict graph G {\n");
+    FPRINTF (dotOutFile, "%s",  "strict graph G {\n");
   }
 
 #if VERBOSE
@@ -1119,7 +1127,7 @@ run (void *cls, char *const *args, const char *cfgfile,
                                              "connect_topology_option_modifier",
                                              &connect_topology_option_modifier_string))
   {
-    if (sscanf
+    if (SSCANF
         (connect_topology_option_modifier_string, "%lf",
          &connect_topology_option_modifier) != 1)
     {