diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2014-02-03 14:08:48 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2014-02-03 14:08:48 +0000 |
commit | da30ec65a28e5ec08dc9b1b7e35927a0571a4164 (patch) | |
tree | a7ce083cb7ae8fccc5a6928eaf041c9ea29ac076 /src/ats-tests/ats-testing-traffic.c | |
parent | 54e443c4dddcd4ff8aff4fd764e4c7c010ec917e (diff) | |
download | gnunet-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.c | 61 |
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) | |||
225 | void | 223 | void |
226 | GNUNET_ATS_TEST_traffic_handle_ping (struct BenchmarkPartner *p) | 224 | GNUNET_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 | |||
259 | GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p) | 257 | GNUNET_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)) ) |