[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r32140 - gnunet/src/ats-tests
From: |
gnunet |
Subject: |
[GNUnet-SVN] r32140 - gnunet/src/ats-tests |
Date: |
Fri, 31 Jan 2014 17:13:14 +0100 |
Author: wachs
Date: 2014-01-31 17:13:14 +0100 (Fri, 31 Jan 2014)
New Revision: 32140
Modified:
gnunet/src/ats-tests/ats-testing-experiment.c
gnunet/src/ats-tests/ats-testing-traffic.c
gnunet/src/ats-tests/ats-testing.h
gnunet/src/ats-tests/gnunet-ats-sim.c
Log:
adding linear and saw wave support for traffic generator
Modified: gnunet/src/ats-tests/ats-testing-experiment.c
===================================================================
--- gnunet/src/ats-tests/ats-testing-experiment.c 2014-01-31 15:22:57 UTC
(rev 32139)
+++ gnunet/src/ats-tests/ats-testing-experiment.c 2014-01-31 16:13:14 UTC
(rev 32140)
@@ -261,8 +261,8 @@
if (GNUNET_SCHEDULER_NO_TASK != e->episode_timeout_task)
{
+ GNUNET_SCHEDULER_cancel (e->episode_timeout_task);
e->episode_timeout_task = GNUNET_SCHEDULER_NO_TASK;
- GNUNET_SCHEDULER_cancel (e->episode_timeout_task);
}
e->e_done_cb (e, GNUNET_TIME_absolute_get_duration(e->start_time),
Modified: gnunet/src/ats-tests/ats-testing-traffic.c
===================================================================
--- gnunet/src/ats-tests/ats-testing-traffic.c 2014-01-31 15:22:57 UTC (rev
32139)
+++ gnunet/src/ats-tests/ats-testing-traffic.c 2014-01-31 16:13:14 UTC (rev
32140)
@@ -36,19 +36,26 @@
get_delay (struct TrafficGenerator *tg)
{
struct GNUNET_TIME_Relative delay;
+ struct GNUNET_TIME_Relative time_delta;
+ long long int cur_rate;
+ long long int delta_rate;
+
+
delay.rel_value_us = 0;
switch (tg->type) {
case GNUNET_ATS_TEST_TG_CONSTANT:
- if (UINT32_MAX == tg->rate)
- delay.rel_value_us = 0;
- else if (tg->rate <= TEST_MESSAGE_SIZE)
- delay.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us);
- else
- delay.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us /
(tg->rate / TEST_MESSAGE_SIZE));
+ if (UINT32_MAX == tg->base_rate)
+ return GNUNET_TIME_UNIT_ZERO;
+ cur_rate = tg->base_rate;
+ return delay;
break;
case GNUNET_ATS_TEST_TG_LINEAR:
- GNUNET_break (0);
+ time_delta = GNUNET_TIME_absolute_get_duration(tg->time_start);
+ time_delta.rel_value_us = time_delta.rel_value_us %
tg->duration_period.rel_value_us;
+ delta_rate = ((double) time_delta.rel_value_us /
tg->duration_period.rel_value_us) *
+ (tg->max_rate - tg->base_rate);
+ cur_rate = tg->base_rate + delta_rate;
break;
case GNUNET_ATS_TEST_TG_RANDOM:
GNUNET_break (0);
@@ -60,6 +67,8 @@
return delay;
break;
}
+
+ delay.rel_value_us = GNUNET_TIME_UNIT_SECONDS.rel_value_us *
TEST_MESSAGE_SIZE / cur_rate;
return delay;
}
@@ -69,6 +78,7 @@
struct BenchmarkPartner *p = cls;
static char msgbuf[TEST_MESSAGE_SIZE];
struct GNUNET_MessageHeader *msg;
+ struct GNUNET_TIME_Relative delay;
if (NULL == buf)
{
@@ -117,8 +127,11 @@
GNUNET_break (0);
return TEST_MESSAGE_SIZE;
}
+ delay = get_delay (p->tg);
+ fprintf (stderr, "Delay for next transmission %llu ms\n",
+ (long long unsigned int) delay.rel_value_us / 1000);
p->tg->next_ping_transmission =
GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(),
- get_delay (p->tg));
+ delay);
return TEST_MESSAGE_SIZE;
}
@@ -226,7 +239,7 @@
/* Schedule next send event */
left = GNUNET_TIME_absolute_get_remaining(p->tg->next_ping_transmission);
- if (UINT32_MAX == p->tg->rate)
+ if (UINT32_MAX == p->tg->base_rate)
{
p->tg->send_task = GNUNET_SCHEDULER_add_now (&comm_schedule_send, p);
}
@@ -246,12 +259,17 @@
* Generate between the source master and the partner and send traffic with a
* maximum rate.
*
+ * @base_rate traffic base rate to send data with
+ * @max_rate traffic maximum rate to send data with
+ * @frequency
*/
struct TrafficGenerator *
GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
struct BenchmarkPartner *dest,
enum TrafficGeneratorType type,
- unsigned int rate,
+ long int base_rate,
+ long int max_rate,
+ struct GNUNET_TIME_Relative period,
struct GNUNET_TIME_Relative duration)
{
struct TrafficGenerator * tg;
@@ -268,14 +286,17 @@
tg->type = type;
tg->src = src;
tg->dest = dest;
- tg->rate = rate;
+ tg->base_rate = base_rate;
+ tg->max_rate = max_rate;
+ tg->duration_period = period;
+ tg->time_start = GNUNET_TIME_absolute_get();
tg->next_ping_transmission = GNUNET_TIME_UNIT_FOREVER_ABS;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Setting up traffic generator master[%u] `%s' and slave [%u] `%s' max %u
Bips\n",
dest->me->no, GNUNET_i2s (&dest->me->id),
dest->dest->no, GNUNET_i2s (&dest->dest->id),
- rate);
+ base_rate);
if ( ((GNUNET_YES == top->test_core) && (NULL != dest->cth)) ||
((GNUNET_NO == top->test_core) && (NULL != dest->tth)) )
Modified: gnunet/src/ats-tests/ats-testing.h
===================================================================
--- gnunet/src/ats-tests/ats-testing.h 2014-01-31 15:22:57 UTC (rev 32139)
+++ gnunet/src/ats-tests/ats-testing.h 2014-01-31 16:13:14 UTC (rev 32140)
@@ -227,10 +227,14 @@
struct BenchmarkPeer *src;
struct BenchmarkPartner *dest;
- unsigned int rate;
+
+ long int base_rate;
+ long int max_rate;
+ struct GNUNET_TIME_Relative duration_period;
+
GNUNET_SCHEDULER_TaskIdentifier send_task;
struct GNUNET_TIME_Absolute next_ping_transmission;
- struct GNUNET_TIME_Relative delta;
+ struct GNUNET_TIME_Absolute time_start;
};
@@ -540,7 +544,9 @@
GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
struct BenchmarkPartner *dest,
enum TrafficGeneratorType type,
- unsigned int rate,
+ long int base_rate,
+ long int max_rate,
+ struct GNUNET_TIME_Relative period,
struct GNUNET_TIME_Relative duration);
void
Modified: gnunet/src/ats-tests/gnunet-ats-sim.c
===================================================================
--- gnunet/src/ats-tests/gnunet-ats-sim.c 2014-01-31 15:22:57 UTC (rev
32139)
+++ gnunet/src/ats-tests/gnunet-ats-sim.c 2014-01-31 16:13:14 UTC (rev
32140)
@@ -208,11 +208,22 @@
for (c_s = 0; c_s < e->num_slaves; c_s++)
{
/* Generate maximum traffic to all peers */
+ /*
GNUNET_ATS_TEST_generate_traffic_start (&masters[c_m],
&masters[c_m].partners[c_s],
GNUNET_ATS_TEST_TG_CONSTANT,
10000,
GNUNET_TIME_UNIT_FOREVER_REL);
+ */
+ /*
+ GNUNET_ATS_TEST_generate_traffic_start (&masters[c_m],
+ &masters[c_m].partners[c_s],
+ GNUNET_ATS_TEST_TG_LINEAR,
+ 100,
+ 200,
+ GNUNET_TIME_UNIT_MINUTES,
+ GNUNET_TIME_UNIT_FOREVER_REL);
+ */
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r32140 - gnunet/src/ats-tests,
gnunet <=