- todo
[oweals/gnunet.git] / src / mesh / test_mesh_small.c
index 1bbb0ecf06e9f64dc5bcd952d55a3c84b5d9b707..80edad4965d6b6db5c86ff291d5c384bd7600ea9 100644 (file)
@@ -29,7 +29,6 @@
 #include <gauger.h>
 
 
-#define VERBOSE GNUNET_YES
 #define REMOVE_DIR GNUNET_YES
 
 struct MeshPeer
@@ -102,6 +101,11 @@ static int ok;
 int ok_goal;
 
 
+/**
+ * Size of each test packet
+ */
+size_t size_payload = sizeof (struct GNUNET_MessageHeader) + sizeof (uint32_t);
+
 /**
  * Is the setup initialized?
  */
@@ -284,18 +288,14 @@ shutdown_callback (void *cls, const char *emsg)
 {
   if (emsg != NULL)
   {
-#if VERBOSE
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "Shutdown of peers failed!\n");
-#endif
     ok--;
   }
   else
   {
-#if VERBOSE
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "All peers successfully shut down!\n");
-#endif
   }
   GNUNET_CONFIGURATION_destroy (testing_cfg);
 }
@@ -310,11 +310,8 @@ shutdown_callback (void *cls, const char *emsg)
 static void
 shutdown_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-#if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Ending test.\n");
-#endif
-
   if (disconnect_task != GNUNET_SCHEDULER_NO_TASK)
   {
     GNUNET_SCHEDULER_cancel (disconnect_task);
@@ -429,7 +426,7 @@ data_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   th = GNUNET_MESH_notify_transmit_ready (tunnel, GNUNET_NO,
                                           GNUNET_TIME_UNIT_FOREVER_REL,
                                           destination,
-                                          sizeof (struct GNUNET_MessageHeader),
+                                            size_payload,
                                           &tmt_rdy, (void *) 1L);
   if (NULL == th)
   {
@@ -466,13 +463,25 @@ size_t
 tmt_rdy (void *cls, size_t size, void *buf)
 {
   struct GNUNET_MessageHeader *msg = buf;
+  uint32_t *data;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               " tmt_rdy called\n");
-  if (size < sizeof (struct GNUNET_MessageHeader) || NULL == buf)
+  if (size < size_payload || NULL == buf)
+  {
+    GNUNET_break (0);
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "size %u, buf %p, data_sent %u, data_received %u\n",
+                size,
+                buf,
+                data_sent,
+                data_received);
     return 0;
-  msg->size = htons (sizeof (struct GNUNET_MessageHeader));
+  }
+  msg->size = htons (size);
   msg->type = htons ((long) cls);
+  data = (uint32_t *) &msg[1];
+  *data = htonl (data_sent);
   if (SPEED == test && GNUNET_YES == initialized)
   {
     data_sent++;
@@ -485,7 +494,7 @@ tmt_rdy (void *cls, size_t size, void *buf)
       GNUNET_SCHEDULER_add_now(&data_task, NULL);
     }
   }
-  return sizeof (struct GNUNET_MessageHeader);
+  return size_payload;
 }
 
 
@@ -509,6 +518,7 @@ data_callback (void *cls, struct GNUNET_MESH_Tunnel *tunnel, void **tunnel_ctx,
 {
   long client = (long) cls;
   long expected_target_client;
+  uint32_t *data;
 
   ok++;
 
@@ -543,7 +553,8 @@ data_callback (void *cls, struct GNUNET_MESH_Tunnel *tunnel, void **tunnel_ctx,
     break;
   }
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, " ok: (%d/%d)\n", ok, ok_goal);
-
+  data = (uint32_t *) &message[1];
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO, " payload: (%u)\n", ntohl (*data));
   if (SPEED == test && GNUNET_YES == test_backwards)
   {
     expected_target_client = 1L;
@@ -574,8 +585,9 @@ data_callback (void *cls, struct GNUNET_MESH_Tunnel *tunnel, void **tunnel_ctx,
     {
       GNUNET_MESH_notify_transmit_ready (tunnel, GNUNET_NO,
                                         GNUNET_TIME_UNIT_FOREVER_REL, sender,
-                                        sizeof (struct GNUNET_MessageHeader),
+                                               size_payload,
                                         &tmt_rdy, (void *) 1L);
+      return GNUNET_OK;
     }
     else
     {
@@ -592,7 +604,7 @@ data_callback (void *cls, struct GNUNET_MESH_Tunnel *tunnel, void **tunnel_ctx,
               " received ack %u\n", data_ack);
       GNUNET_MESH_notify_transmit_ready (tunnel, GNUNET_NO,
                                         GNUNET_TIME_UNIT_FOREVER_REL, sender,
-                                        sizeof (struct GNUNET_MessageHeader),
+                                               size_payload,
                                         &tmt_rdy, (void *) 1L);
       if (data_ack < TOTAL_PACKETS && SPEED != test)
         return GNUNET_OK;
@@ -785,7 +797,7 @@ ch (void *cls, const struct GNUNET_PeerIdentity *peer,
     data_sent = 0;
     GNUNET_MESH_notify_transmit_ready (t, GNUNET_NO,
                                        GNUNET_TIME_UNIT_FOREVER_REL, dest,
-                                       sizeof (struct GNUNET_MessageHeader),
+                                           size_payload,
                                        &tmt_rdy, (void *) 1L);
   }
   else
@@ -823,12 +835,12 @@ do_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   }
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "schedule timeout in SHORT_TIME\n");
+              "schedule timeout in TIMEOUT\n");
   if (GNUNET_SCHEDULER_NO_TASK != disconnect_task)
   {
     GNUNET_SCHEDULER_cancel (disconnect_task);
     disconnect_task =
-        GNUNET_SCHEDULER_add_delayed (SHORT_TIME, &disconnect_mesh_peers, NULL);
+        GNUNET_SCHEDULER_add_delayed (TIMEOUT, &disconnect_mesh_peers, NULL);
   }
 }
 
@@ -857,7 +869,6 @@ connect_mesh_service (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   }
   app = (GNUNET_MESH_ApplicationType) 0;
 
-#if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "connecting to mesh service of peer %s\n",
               GNUNET_i2s (&d1->id));
@@ -870,7 +881,6 @@ connect_mesh_service (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
                 "connecting to mesh service of peer %s\n",
                 GNUNET_i2s (&d3->id));
   }
-#endif
   h1 = GNUNET_MESH_connect (d1->cfg, (void *) 1L, NULL, &tunnel_cleaner,
                             handlers, &app);
   h2 = GNUNET_MESH_connect (d2->cfg, (void *) 2L, &incoming_tunnel,
@@ -923,16 +933,9 @@ peergroup_ready (void *cls, const char *emsg)
     GNUNET_TESTING_daemons_stop (pg, TIMEOUT, &shutdown_callback, NULL);
     return;
   }
-#if VERBOSE
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "************************************************************\n");
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Peer Group started successfully!\n");
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Have %u connections\n",
+              "Peer Group started successfully with %u connections\n",
               total_connections);
-#endif
-
   if (data_file != NULL)
   {
     buf = NULL;
@@ -1021,20 +1024,11 @@ run (void *cls, char *const *args, const char *cfgfile,
   testing_cfg = GNUNET_CONFIGURATION_dup (cfg);
 
   GNUNET_log_setup ("test_mesh_small",
-#if VERBOSE
-                    "DEBUG",
-#else
                     "WARNING",
-#endif
                     NULL);
 
-#if VERBOSE
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "Starting daemons.\n");
-  GNUNET_CONFIGURATION_set_value_string (testing_cfg, "testing_old",
-                                         "use_progressbars", "YES");
-#endif
-
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_number (testing_cfg, "testing_old",
                                              "num_peers", &num_peers))
@@ -1132,10 +1126,6 @@ main (int argc, char *argv[])
     argv[0],
     "-c",
     "test_mesh_small.conf",
-#if VERBOSE
-    "-L",
-    "DEBUG",
-#endif
     NULL
   };
   int argc2 = (sizeof (argv2) / sizeof (char *)) - 1;
@@ -1173,22 +1163,20 @@ main (int argc, char *argv[])
     test_name = "speed ack";
     ok_goal = TOTAL_PACKETS * 2 + 3;
     argv2 [3] = NULL; // remove -L DEBUG
-#if VERBOSE
-    argc2 -= 2;
-#endif
   }
   else if (strstr (argv[0], "test_mesh_small_speed") != NULL)
   {
    /* Each peer is supposed to generate the following callbacks:
     * 1 incoming tunnel (@dest)
     * 1 connected peer (@orig)
+    * 1 initial packet (@dest)
     * TOTAL_PACKETS received data packet (@dest)
     * 1 received data packet (@orig)
     * 1 received tunnel destroy (@dest)
     * _________________________________
     */
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "SPEED\n");
-    ok_goal = TOTAL_PACKETS + 4;
+    ok_goal = TOTAL_PACKETS + 5;
     if (strstr (argv[0], "_min") != NULL)
     {
       test = SPEED_MIN;
@@ -1218,7 +1206,6 @@ main (int argc, char *argv[])
 
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "BACKWARDS (LEAF TO ROOT)\n");
     test_backwards = GNUNET_YES;
-    ok_goal++; // need one root->leaf packet to initialize tunnel
     aux = malloc (32); // "leaked"
     sprintf (aux, "backwards %s", test_name);
     test_name = aux;