aboutsummaryrefslogtreecommitdiff
path: root/src/ats-tests/ats-testing-traffic.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2014-02-03 14:08:48 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2014-02-03 14:08:48 +0000
commitda30ec65a28e5ec08dc9b1b7e35927a0571a4164 (patch)
treea7ce083cb7ae8fccc5a6928eaf041c9ea29ac076 /src/ats-tests/ats-testing-traffic.c
parent54e443c4dddcd4ff8aff4fd764e4c7c010ec917e (diff)
downloadgnunet-da30ec65a28e5ec08dc9b1b7e35927a0571a4164.tar.gz
gnunet-da30ec65a28e5ec08dc9b1b7e35927a0571a4164.zip
removing set_rate, using start_send instead
Diffstat (limited to 'src/ats-tests/ats-testing-traffic.c')
-rw-r--r--src/ats-tests/ats-testing-traffic.c61
1 files changed, 47 insertions, 14 deletions
diff --git a/src/ats-tests/ats-testing-traffic.c b/src/ats-tests/ats-testing-traffic.c
index c3eaf4959..fc3de791c 100644
--- a/src/ats-tests/ats-testing-traffic.c
+++ b/src/ats-tests/ats-testing-traffic.c
@@ -48,7 +48,6 @@ get_delay (struct TrafficGenerator *tg)
48 if (UINT32_MAX == tg->base_rate) 48 if (UINT32_MAX == tg->base_rate)
49 return GNUNET_TIME_UNIT_ZERO; 49 return GNUNET_TIME_UNIT_ZERO;
50 cur_rate = tg->base_rate; 50 cur_rate = tg->base_rate;
51 return delay;
52 break; 51 break;
53 case GNUNET_ATS_TEST_TG_LINEAR: 52 case GNUNET_ATS_TEST_TG_LINEAR:
54 time_delta = GNUNET_TIME_absolute_get_duration(tg->time_start); 53 time_delta = GNUNET_TIME_absolute_get_duration(tg->time_start);
@@ -56,7 +55,7 @@ get_delay (struct TrafficGenerator *tg)
56 time_delta.rel_value_us = time_delta.rel_value_us % tg->duration_period.rel_value_us; 55 time_delta.rel_value_us = time_delta.rel_value_us % tg->duration_period.rel_value_us;
57 delta_rate = ((double) time_delta.rel_value_us / tg->duration_period.rel_value_us) * 56 delta_rate = ((double) time_delta.rel_value_us / tg->duration_period.rel_value_us) *
58 (tg->max_rate - tg->base_rate); 57 (tg->max_rate - tg->base_rate);
59 if ((tg->max_rate - tg->base_rate) > tg->base_rate) 58 if ((tg->max_rate < tg->base_rate) && ((tg->max_rate - tg->base_rate) > tg->base_rate))
60 { 59 {
61 /* This will cause an underflow */ 60 /* This will cause an underflow */
62 GNUNET_break (0); 61 GNUNET_break (0);
@@ -88,9 +87,8 @@ get_delay (struct TrafficGenerator *tg)
88 87
89 if (cur_rate < 0) 88 if (cur_rate < 0)
90 { 89 {
91 cur_rate = 0; 90 cur_rate = 1;
92 } 91 }
93
94 /* Calculate the delay for the next message based on the current delay */ 92 /* Calculate the delay for the next message based on the current delay */
95 delay.rel_value_us = GNUNET_TIME_UNIT_SECONDS.rel_value_us * TEST_MESSAGE_SIZE / cur_rate; 93 delay.rel_value_us = GNUNET_TIME_UNIT_SECONDS.rel_value_us * TEST_MESSAGE_SIZE / cur_rate;
96 94
@@ -157,9 +155,9 @@ send_ping_ready_cb (void *cls, size_t size, void *buf)
157 return TEST_MESSAGE_SIZE; 155 return TEST_MESSAGE_SIZE;
158 } 156 }
159 delay = get_delay (p->tg); 157 delay = get_delay (p->tg);
160 /* 158
161 fprintf (stderr, "Delay for next transmission %llu ms\n", 159 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Delay for next transmission %llu ms\n",
162 (long long unsigned int) delay.rel_value_us / 1000);*/ 160 (long long unsigned int) delay.rel_value_us / 1000);
163 p->tg->next_ping_transmission = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), 161 p->tg->next_ping_transmission = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(),
164 delay); 162 delay);
165 163
@@ -225,7 +223,7 @@ comm_send_pong_ready (void *cls, size_t size, void *buf)
225void 223void
226GNUNET_ATS_TEST_traffic_handle_ping (struct BenchmarkPartner *p) 224GNUNET_ATS_TEST_traffic_handle_ping (struct BenchmarkPartner *p)
227{ 225{
228 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 226 GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
229 "Slave [%u]: Received PING from [%u], sending PONG\n", p->me->no, 227 "Slave [%u]: Received PING from [%u], sending PONG\n", p->me->no,
230 p->dest->no); 228 p->dest->no);
231 229
@@ -259,7 +257,7 @@ void
259GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p) 257GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p)
260{ 258{
261 struct GNUNET_TIME_Relative left; 259 struct GNUNET_TIME_Relative left;
262 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, 260 GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
263 "Master [%u]: Received PONG from [%u], next message\n", p->me->no, 261 "Master [%u]: Received PONG from [%u], next message\n", p->me->no,
264 p->dest->no); 262 p->dest->no);
265 263
@@ -271,6 +269,9 @@ GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p)
271 GNUNET_TIME_absolute_get()).rel_value_us; 269 GNUNET_TIME_absolute_get()).rel_value_us;
272 270
273 /* Schedule next send event */ 271 /* Schedule next send event */
272 if (NULL == p->tg)
273 return;
274
274 left = GNUNET_TIME_absolute_get_remaining(p->tg->next_ping_transmission); 275 left = GNUNET_TIME_absolute_get_remaining(p->tg->next_ping_transmission);
275 if (UINT32_MAX == p->tg->base_rate) 276 if (UINT32_MAX == p->tg->base_rate)
276 { 277 {
@@ -282,6 +283,11 @@ GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p)
282 } 283 }
283 else 284 else
284 { 285 {
286 /* Enforce minimum transmission rate 1 msg / sec */
287 if (GNUNET_TIME_UNIT_SECONDS.rel_value_us == (left = GNUNET_TIME_relative_min (left, GNUNET_TIME_UNIT_SECONDS)).rel_value_us)
288 GNUNET_log(GNUNET_ERROR_TYPE_ERROR,
289 "Enforcing minimum send rate between master [%u] and slave [%u]\n",
290 p->me->no, p->dest->no);
285 p->tg->send_task = GNUNET_SCHEDULER_add_delayed (left, 291 p->tg->send_task = GNUNET_SCHEDULER_add_delayed (left,
286 &comm_schedule_send, p); 292 &comm_schedule_send, p);
287 } 293 }
@@ -329,11 +335,38 @@ GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
329 tg->time_start = GNUNET_TIME_absolute_get(); 335 tg->time_start = GNUNET_TIME_absolute_get();
330 tg->next_ping_transmission = GNUNET_TIME_UNIT_FOREVER_ABS; 336 tg->next_ping_transmission = GNUNET_TIME_UNIT_FOREVER_ABS;
331 337
332 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 338 switch (type) {
333 "Setting up traffic generator master[%u] `%s' and slave [%u] `%s' max %u Bips\n", 339 case GNUNET_ATS_TEST_TG_CONSTANT:
334 dest->me->no, GNUNET_i2s (&dest->me->id), 340 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
335 dest->dest->no, GNUNET_i2s (&dest->dest->id), 341 "Setting up constant traffic generator master[%u] `%s' and slave [%u] `%s' max %u Bips\n",
336 base_rate); 342 dest->me->no, GNUNET_i2s (&dest->me->id),
343 dest->dest->no, GNUNET_i2s (&dest->dest->id),
344 base_rate);
345 break;
346 case GNUNET_ATS_TEST_TG_LINEAR:
347 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
348 "Setting up linear traffic generator master[%u] `%s' and slave [%u] `%s' min %u Bips max %u Bips\n",
349 dest->me->no, GNUNET_i2s (&dest->me->id),
350 dest->dest->no, GNUNET_i2s (&dest->dest->id),
351 base_rate, max_rate);
352 break;
353 case GNUNET_ATS_TEST_TG_SINUS:
354 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
355 "Setting up sinus traffic generator master[%u] `%s' and slave [%u] `%s' baserate %u Bips, amplitude %u Bps\n",
356 dest->me->no, GNUNET_i2s (&dest->me->id),
357 dest->dest->no, GNUNET_i2s (&dest->dest->id),
358 base_rate, max_rate);
359 break;
360 case GNUNET_ATS_TEST_TG_RANDOM:
361 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
362 "Setting up random traffic generator master[%u] `%s' and slave [%u] `%s' min %u Bips max %u Bps\n",
363 dest->me->no, GNUNET_i2s (&dest->me->id),
364 dest->dest->no, GNUNET_i2s (&dest->dest->id),
365 base_rate, max_rate);
366 break;
367 default:
368 break;
369 }
337 370
338 if ( ((GNUNET_YES == top->test_core) && (NULL != dest->cth)) || 371 if ( ((GNUNET_YES == top->test_core) && (NULL != dest->cth)) ||
339 ((GNUNET_NO == top->test_core) && (NULL != dest->tth)) ) 372 ((GNUNET_NO == top->test_core) && (NULL != dest->tth)) )