[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r34024 - gnunet/src/cadet
From: |
gnunet |
Subject: |
[GNUnet-SVN] r34024 - gnunet/src/cadet |
Date: |
Thu, 24 Jul 2014 06:35:15 +0200 |
Author: bartpolot
Date: 2014-07-24 06:35:15 +0200 (Thu, 24 Jul 2014)
New Revision: 34024
Modified:
gnunet/src/cadet/test_cadet.c
Log:
- revamp almost all cadet tests, keep track of messages, sizes, acks
Modified: gnunet/src/cadet/test_cadet.c
===================================================================
--- gnunet/src/cadet/test_cadet.c 2014-07-23 22:01:32 UTC (rev 34023)
+++ gnunet/src/cadet/test_cadet.c 2014-07-24 04:35:15 UTC (rev 34024)
@@ -33,7 +33,7 @@
/**
* How namy messages to send
*/
-#define TOTAL_PACKETS 2000
+#define TOTAL_PACKETS 100
/**
* How long until we give up on connecting the peers?
@@ -107,21 +107,26 @@
static int initialized;
/**
- * Number of payload packes sent
+ * Number of payload packes sent.
*/
static int data_sent;
/**
- * Number of payload packets received
+ * Number of payload packets received.
*/
static int data_received;
/**
- * Number of payload packed explicitly (app level) acknowledged
+ * Number of payload packed acknowledgements sent.
*/
-static int data_ack;
+static int ack_sent;
/**
+ * Number of payload packed explicitly (app level) acknowledged.
+ */
+static int ack_received;
+
+/**
* Total number of peers asked to run.
*/
static unsigned long long peers_requested;
@@ -199,6 +204,22 @@
/**
+ * Get the client number considered as the "target" or "receiver", depending on
+ * the test type and size.
+ *
+ * @return Peer # of the target client, either 0 (for backward tests) or
+ * the last peer in the line (for other tests).
+ */
+static unsigned int
+get_expected_target ()
+{
+ if (SPEED == test && GNUNET_YES == test_backwards)
+ return 0;
+ else
+ return peers_requested - 1;
+}
+
+/**
* Show the results of the test (banwidth acheived) and log them to GAUGER
*/
static void
@@ -321,6 +342,7 @@
{
struct GNUNET_CADET_TransmitHandle *th;
struct GNUNET_CADET_Channel *channel;
+ long src;
if ((GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason) != 0)
return;
@@ -329,15 +351,17 @@
if (GNUNET_YES == test_backwards)
{
channel = incoming_ch;
+ src = peers_requested - 1;
}
else
{
channel = ch;
+ src = 0;
}
th = GNUNET_CADET_notify_transmit_ready (channel, GNUNET_NO,
GNUNET_TIME_UNIT_FOREVER_REL,
size_payload + data_sent,
- &tmt_rdy, (void *) 1L);
+ &tmt_rdy, (void *) src);
if (NULL == th)
{
unsigned long i = (unsigned long) cls;
@@ -347,7 +371,7 @@
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, " in 1 ms\n");
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MILLISECONDS,
- &data_task, (void *)1UL);
+ &data_task, (void *) 1L);
}
else
{
@@ -356,7 +380,7 @@
GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(
GNUNET_TIME_UNIT_MILLISECONDS,
i),
- &data_task, (void *)i);
+ &data_task, (void *) i);
}
}
}
@@ -365,7 +389,7 @@
/**
* Transmit ready callback
*
- * @param cls Closure (unused).
+ * @param cls Closure (peer # which is sending the data).
* @param size Size of the buffer we have.
* @param buf Buffer to copy data to.
*/
@@ -375,37 +399,43 @@
struct GNUNET_MessageHeader *msg = buf;
size_t msg_size;
uint32_t *data;
+ long id = (long) cls;
+ unsigned int counter;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "tmt_rdy called, filling buffer\n");
- msg_size = size_payload + data_sent;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "tmt_rdy on %ld, filling buffer\n", id);
+ counter = get_expected_target () == id ? ack_sent : data_sent;
+ msg_size = size_payload + counter;
if (size < msg_size || NULL == buf)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "size %u, buf %p, data_sent %u, data_received %u\n",
- size, buf, data_sent, data_received);
+ "size %u, buf %p, data_sent %u, ack_received %u\n",
+ size, buf, data_sent, ack_received);
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ok %u, ok goal %u\n", ok, ok_goal);
GNUNET_break (ok >= ok_goal - 2);
return 0;
}
msg->size = htons (size);
- msg->type = htons ((long) cls);
+ msg->type = htons (1);
data = (uint32_t *) &msg[1];
- *data = htonl (data_sent);
+ *data = htonl (counter);
if (GNUNET_NO == initialized)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "sending initializer\n");
}
- else if (SPEED == test)
+ else if (SPEED == test || SPEED_ACK == test)
{
- data_sent++;
+ if (get_expected_target() == id)
+ ack_sent++;
+ else
+ data_sent++;
+ counter++;
GNUNET_log (GNUNET_ERROR_TYPE_INFO, " Sent message %d size %u\n",
- data_sent, msg_size);
- if (data_sent < TOTAL_PACKETS)
+ counter, msg_size);
+ if (data_sent < TOTAL_PACKETS && SPEED == test)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " Scheduling message %d\n",
- data_sent + 1);
+ counter + 1);
GNUNET_SCHEDULER_add_now (&data_task, NULL);
}
}
@@ -433,8 +463,10 @@
long expected_target_client;
uint32_t *data;
uint32_t payload;
+ unsigned int counter;
ok++;
+ counter = get_expected_target () == client ? data_received : ack_received;
GNUNET_CADET_receive_done (channel);
@@ -469,16 +501,9 @@
data = (uint32_t *) &message[1];
payload = ntohl (*data);
GNUNET_log (GNUNET_ERROR_TYPE_INFO, " payload: %u, data_received: %u\n",
- payload, data_received);
- GNUNET_break (payload == data_received);
- if (SPEED == test && GNUNET_YES == test_backwards)
- {
- expected_target_client = 0L;
- }
- else
- {
- expected_target_client = peers_requested - 1;
- }
+ payload, counter);
+ GNUNET_break (payload == counter);
+ expected_target_client = get_expected_target ();
if (GNUNET_NO == initialized)
{
@@ -492,16 +517,18 @@
}
}
- if (client == expected_target_client) // Normally 4
+ counter++;
+ if (client == expected_target_client) /* Normally 4 */
{
data_received++;
GNUNET_log (GNUNET_ERROR_TYPE_INFO, " received data %u\n", data_received);
if (SPEED != test || (ok_goal - 2) == ok)
{
+ /* Send ACK */
GNUNET_CADET_notify_transmit_ready (channel, GNUNET_NO,
GNUNET_TIME_UNIT_FOREVER_REL,
- size_payload + data_sent,
- &tmt_rdy, (void *) 1L);
+ size_payload + ack_sent, &tmt_rdy,
+ (void *) client);
return GNUNET_OK;
}
else
@@ -510,17 +537,17 @@
return GNUNET_OK;
}
}
- else // Normally 0
+ else /* Normally 0 */
{
- if (test == SPEED_ACK || test == SPEED)
+ if (SPEED_ACK == test || SPEED == test)
{
- data_ack++;
- GNUNET_log (GNUNET_ERROR_TYPE_INFO, " received ack %u\n", data_ack);
+ ack_received++;
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO, " received ack %u\n", ack_received);
GNUNET_CADET_notify_transmit_ready (channel, GNUNET_NO,
GNUNET_TIME_UNIT_FOREVER_REL,
- size_payload + data_sent,
- &tmt_rdy, (void *) 1L);
- if (data_ack < TOTAL_PACKETS && SPEED != test)
+ size_payload + data_sent, &tmt_rdy,
+ (void *) client);
+ if (ack_received < TOTAL_PACKETS && SPEED != test)
return GNUNET_OK;
if (ok == 2 && SPEED == test)
return GNUNET_OK;
@@ -775,14 +802,14 @@
if (KEEPALIVE == test)
return; /* Don't send any data. */
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Sending data initializer...\n");
- data_ack = 0;
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sending data initializer...\n");
data_received = 0;
data_sent = 0;
+ ack_received = 0;
+ ack_sent = 0;
GNUNET_CADET_notify_transmit_ready (ch, GNUNET_NO,
- GNUNET_TIME_UNIT_FOREVER_REL,
- size_payload, &tmt_rdy, (void *) 1L);
+ GNUNET_TIME_UNIT_FOREVER_REL,
+ size_payload, &tmt_rdy, (void *) 0L);
}
/**
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r34024 - gnunet/src/cadet,
gnunet <=