error msg
[oweals/gnunet.git] / src / transport / test_transport_api_unreliability.c
index 4a818c8bfe8c5a6272db9d6f97b6673906ba8065..3658198bdb413a5c5aaaf9e183b7b1bab3eda1ee 100644 (file)
@@ -71,6 +71,8 @@ struct GNUNET_TRANSPORT_TESTING_handle *tth;
  */
 
 /**
+ * Total number of messages to send
+ *
  * Note that this value must not significantly exceed
  * 'MAX_PENDING' in 'gnunet-service-transport.c', otherwise
  * messages may be dropped even for a reliable transport.
@@ -161,7 +163,7 @@ end ()
   {
     if (get_bit (bitmap, i) == 0)
     {
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Did not receive message %d\n", i);
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not receive message %d\n", i);
       ok = -1;
     }
   }
@@ -189,6 +191,16 @@ end_badly ()
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Test had timeout while waiting to send data\n");
 
+  int i;
+
+  for (i = 0; i < TOTAL_MSGS; i++)
+  {
+    if (get_bit (bitmap, i) == 0)
+    {
+      GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Did not receive message %d\n", i);
+      ok = -1;
+    }
+  }
 
   if (th != NULL)
     GNUNET_TRANSPORT_notify_transmit_ready_cancel (th);
@@ -260,7 +272,7 @@ set_bit (unsigned int bitIdx)
 static int
 get_bit (const char *map, unsigned int bit)
 {
-  if (bit >= TOTAL_MSGS)
+  if (bit > TOTAL_MSGS)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "get bit %d of %d(!?!?)\n", bit,
                 sizeof (bitmap) * 8);
@@ -324,7 +336,7 @@ notify_receive (void *cls, const struct GNUNET_PeerIdentity *peer,
   if (GNUNET_SYSERR == set_bit (ntohl (hdr->num)))
   {
       GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  _("Message id %u is bigger than maxmimum number of messages sent\n"),
+                  _("Message id %u is bigger than maxmimum number of messages %u expected\n"),
                   ntohl (hdr->num), TOTAL_MSGS);
   }
   test_sending = GNUNET_YES;
@@ -369,9 +381,11 @@ notify_ready (void *cls, size_t size, void *buf)
   s = get_size (n);
   GNUNET_assert (size >= s);
   GNUNET_assert (buf != NULL);
+  GNUNET_assert (n < TOTAL_MSGS);
   cbuf = buf;
   do
   {
+    GNUNET_assert (n < TOTAL_MSGS);
     hdr.header.size = htons (s);
     hdr.header.type = htons (MTYPE);
     hdr.num = htonl (n);
@@ -380,6 +394,7 @@ notify_ready (void *cls, size_t size, void *buf)
     ret += sizeof (struct TestMessage);
     memset (&cbuf[ret], n, s - sizeof (struct TestMessage));
     ret += s - sizeof (struct TestMessage);
+
 #if VERBOSE
     if (n % 5000 == 0)
     {
@@ -392,7 +407,7 @@ notify_ready (void *cls, size_t size, void *buf)
     if (0 == GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 16))
       break;                    /* sometimes pack buffer full, sometimes not */
   }
-  while (size - ret >= s);
+  while ((size - ret >= s) && (n < TOTAL_MSGS));
   if (n < TOTAL_MSGS)
   {
     th = GNUNET_TRANSPORT_notify_transmit_ready (p2->th, &p1->id, s, 0,
@@ -442,6 +457,8 @@ static void
 sendtask ()
 {
   start_time = GNUNET_TIME_absolute_get ();
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting to send %u messages\n",
+              TOTAL_MSGS);
   th = GNUNET_TRANSPORT_notify_transmit_ready (p2->th, &p1->id, get_size (0), 0,
                                                TIMEOUT_TRANSMIT, &notify_ready,
                                                NULL);