#define MTYPE 12345
+static int is_asymmetric_send_constant;
+static int is_asymmetric_recv_constant;
+static unsigned long long current_quota_p1;
+static unsigned long long current_quota_p2;
static unsigned long long total_bytes;
+static unsigned long long total_bytes_sent;
static struct GNUNET_TIME_Absolute start_time;
uint32_t num;
};
-
-static unsigned int
-get_size (unsigned int iter)
-{
- return sizeof (struct TestMessage) + MEASUREMENT_MSG_SIZE;
-}
-
-
static void
terminate_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
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",
- total_bytes * 1000 / 1024 / delta);
ok = 0;
}
struct GNUNET_TIME_Relative latency,
uint32_t distance)
{
-#if VERBOSE
+#if DEBUG_CONNECTIONS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Core provides inbound data from `%4s'.\n", GNUNET_i2s (other));
#endif
struct GNUNET_TIME_Relative latency,
uint32_t distance)
{
-#if VERBOSE
+#if DEBUG_CONNECTIONS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Core notifies about outbound data for `%4s'.\n",
GNUNET_i2s (other));
measurement_end (void *cls,
const struct GNUNET_SCHEDULER_TaskContext *tc)
{
+ struct GNUNET_TIME_Relative duration;
+
measure_task = GNUNET_SCHEDULER_NO_TASK;
if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
return;
measurement_running = GNUNET_NO;
+
+ duration = GNUNET_TIME_absolute_get_difference(start_time, GNUNET_TIME_absolute_get());
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"TIMEOUT\n");
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "\nQuota compliance: \n"\
+ "Throughput : %10llu kB/s\n", (total_bytes_sent/(duration.rel_value / 1000)/1024));
+
if (err_task != GNUNET_SCHEDULER_NO_TASK)
GNUNET_SCHEDULER_cancel (sched, err_task);
GNUNET_SCHEDULER_add_now (sched, &terminate_task, NULL);
static size_t
transmit_ready (void *cls, size_t size, void *buf);
+static void measure (unsigned long long quota_p1, unsigned long long quota_p2 )
+{
+#if VERBOSE
+ if ((is_asymmetric_send_constant == GNUNET_YES) || (is_asymmetric_recv_constant == GNUNET_YES))
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Starting transport level measurement for %u seconds, receiving peer quota %llu kB/s, sending peer quota %llu kB/s\n", MEASUREMENT_INTERVALL.rel_value / 1000 , current_quota_p1 / 1024, current_quota_p2 / 1024);
+ else
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Starting transport level measurement for %u seconds, symmetric quota %llu kB/s\n", MEASUREMENT_INTERVALL.rel_value / 1000 , current_quota_p2 / 1024);
+
+#endif
+
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Asking core (1) for transmission to peer `%4s'\n",
+ GNUNET_i2s (&p2.id));
+ err_task =
+ GNUNET_SCHEDULER_add_delayed (sched,
+ TIMEOUT,
+ &terminate_task_error,
+ NULL);
+ measure_task = GNUNET_SCHEDULER_add_delayed (sched,
+ MEASUREMENT_INTERVALL,
+ &measurement_end,
+ NULL);
+ start_time = GNUNET_TIME_absolute_get ();
+ measurement_running = GNUNET_YES;
+ GNUNET_break (NULL !=
+ GNUNET_CORE_notify_transmit_ready (p1.ch,
+ 0,
+ TIMEOUT,
+ &p2.id,
+ sizeof (struct TestMessage) + MEASUREMENT_MSG_SIZE,
+ &transmit_ready, &p1));
+
+}
+
static int tr_n;
const struct TestMessage *hdr;
hdr = (const struct TestMessage*) message;
- s = get_size (n);
+ s = sizeof (struct TestMessage) + MEASUREMENT_MSG_SIZE;
if (MTYPE != ntohs (message->type))
return GNUNET_SYSERR;
-#if VERBOSE
+#if DEBUG_CONNECTIONS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Got message %u of size %u\n",
ntohl (hdr->num),
0,
FAST_TIMEOUT,
&p2.id,
- get_size(tr_n),
+ sizeof (struct TestMessage) + MEASUREMENT_MSG_SIZE,
&transmit_ready, &p1);
GNUNET_break (NULL != ch);
}
}
ret = 0;
ch = NULL;
- s = get_size (tr_n);
+ s = sizeof (struct TestMessage) + MEASUREMENT_MSG_SIZE;
+
GNUNET_assert (size >= s);
GNUNET_assert (buf != NULL);
cbuf = buf;
do
{
-#if VERBOSE
+#if DEBUG_CONNECTIONS
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Sending message %u of size %u at offset %u\n",
tr_n,
memset (&cbuf[ret], tr_n, s - sizeof (struct TestMessage));
ret += s - sizeof (struct TestMessage);
tr_n++;
- s = get_size (tr_n);
if (0 == GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_WEAK, 16))
break; /* sometimes pack buffer full, sometimes not */
}
TIMEOUT,
&terminate_task_error,
NULL);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Returning total message block of size %u\n",
- ret);
+
total_bytes += ret;
+ total_bytes_sent += ret;
ch = GNUNET_CORE_notify_transmit_ready (p1.ch,
0,
FAST_TIMEOUT,
&p2.id,
- get_size(tr_n),
+ sizeof (struct TestMessage) + MEASUREMENT_MSG_SIZE,
&transmit_ready, &p1);
return ret;
}
GNUNET_assert (ok == 3);
OKPP;
GNUNET_assert (cls == &p2);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
- "Asking core (1) for transmission to peer `%4s'\n",
- GNUNET_i2s (&p2.id));
- err_task =
- GNUNET_SCHEDULER_add_delayed (sched,
- TIMEOUT,
- &terminate_task_error,
- NULL);
- measure_task = GNUNET_SCHEDULER_add_delayed (sched,
- MEASUREMENT_INTERVALL,
- &measurement_end,
- NULL);
- start_time = GNUNET_TIME_absolute_get ();
- measurement_running = GNUNET_YES;
- GNUNET_break (NULL !=
- GNUNET_CORE_notify_transmit_ready (p1.ch,
- 0,
- TIMEOUT,
- &p2.id,
- get_size (0),
- &transmit_ready, &p1));
+
+ measure (MEASUREMENT_MIN_QUOTA, MEASUREMENT_MIN_QUOTA);
}
}
#endif
NULL);
ret = check ();
- GNUNET_DISK_directory_remove ("/tmp/test-gnunet-core-peer-1");
+ GNUNET_DISK_directory_remove ("/tmp/test-gnunet-core-peer-1");
GNUNET_DISK_directory_remove ("/tmp/test-gnunet-core-peer-2");
return ret;