aboutsummaryrefslogtreecommitdiff
path: root/src/ats-tests
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2014-01-31 13:06:12 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2014-01-31 13:06:12 +0000
commit1542ca5c49f27ebaa5331d9954e7539b4fda0b72 (patch)
tree06a7890cbe3c6db829ee383953c8e7285d21dbb5 /src/ats-tests
parent7a2cc6b993a9d12ef2876e2fd7eb48a4fa50a525 (diff)
downloadgnunet-1542ca5c49f27ebaa5331d9954e7539b4fda0b72.tar.gz
gnunet-1542ca5c49f27ebaa5331d9954e7539b4fda0b72.zip
constant traffic generator
Diffstat (limited to 'src/ats-tests')
-rw-r--r--src/ats-tests/ats-testing-traffic.c35
-rw-r--r--src/ats-tests/ats-testing.h11
-rw-r--r--src/ats-tests/gnunet-ats-sim.c1
3 files changed, 39 insertions, 8 deletions
diff --git a/src/ats-tests/ats-testing-traffic.c b/src/ats-tests/ats-testing-traffic.c
index ecee76816..21e9723b6 100644
--- a/src/ats-tests/ats-testing-traffic.c
+++ b/src/ats-tests/ats-testing-traffic.c
@@ -32,6 +32,28 @@ static struct TrafficGenerator *tg_tail;
32 32
33extern struct GNUNET_ATS_TEST_Topology *top; 33extern struct GNUNET_ATS_TEST_Topology *top;
34 34
35static struct GNUNET_TIME_Relative
36get_delay (struct TrafficGenerator *tg)
37{
38 struct GNUNET_TIME_Relative delay;
39 delay.rel_value_us = 0;
40
41 switch (tg->type) {
42 case GNUNET_ATS_TEST_TG_CONSTANT:
43 if (UINT32_MAX == tg->rate)
44 delay.rel_value_us = 0;
45 else if (tg->rate <= TEST_MESSAGE_SIZE)
46 delay.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us);
47 else
48 delay.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us / (tg->rate / TEST_MESSAGE_SIZE));
49 break;
50 default:
51 return delay;
52 break;
53 }
54 return delay;
55}
56
35static size_t 57static size_t
36send_ping_ready_cb (void *cls, size_t size, void *buf) 58send_ping_ready_cb (void *cls, size_t size, void *buf)
37{ 59{
@@ -86,7 +108,8 @@ send_ping_ready_cb (void *cls, size_t size, void *buf)
86 GNUNET_break (0); 108 GNUNET_break (0);
87 return TEST_MESSAGE_SIZE; 109 return TEST_MESSAGE_SIZE;
88 } 110 }
89 p->tg->next_ping_transmission = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(), p->tg->delta); 111 p->tg->next_ping_transmission = GNUNET_TIME_absolute_add(GNUNET_TIME_absolute_get(),
112 get_delay (p->tg));
90 113
91 return TEST_MESSAGE_SIZE; 114 return TEST_MESSAGE_SIZE;
92} 115}
@@ -209,15 +232,16 @@ GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p)
209 } 232 }
210} 233}
211 234
235
212/** 236/**
213 * Generate between the source master and the partner and send traffic with a 237 * Generate between the source master and the partner and send traffic with a
214 * maximum rate. 238 * maximum rate.
215 * 239 *
216 */ 240 */
217
218struct TrafficGenerator * 241struct TrafficGenerator *
219GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src, 242GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
220 struct BenchmarkPartner *dest, 243 struct BenchmarkPartner *dest,
244 enum TrafficGeneratorType type,
221 unsigned int rate, 245 unsigned int rate,
222 struct GNUNET_TIME_Relative duration) 246 struct GNUNET_TIME_Relative duration)
223{ 247{
@@ -232,15 +256,10 @@ GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
232 256
233 tg = GNUNET_new (struct TrafficGenerator); 257 tg = GNUNET_new (struct TrafficGenerator);
234 GNUNET_CONTAINER_DLL_insert (tg_head, tg_tail, tg); 258 GNUNET_CONTAINER_DLL_insert (tg_head, tg_tail, tg);
259 tg->type = type;
235 tg->src = src; 260 tg->src = src;
236 tg->dest = dest; 261 tg->dest = dest;
237 tg->rate = rate; 262 tg->rate = rate;
238 if (UINT32_MAX == rate)
239 tg->delta.rel_value_us = 0;
240 else if (rate <= TEST_MESSAGE_SIZE)
241 tg->delta.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us);
242 else
243 tg->delta.rel_value_us = (GNUNET_TIME_UNIT_SECONDS.rel_value_us / (rate / TEST_MESSAGE_SIZE));
244 tg->next_ping_transmission = GNUNET_TIME_UNIT_FOREVER_ABS; 263 tg->next_ping_transmission = GNUNET_TIME_UNIT_FOREVER_ABS;
245 264
246 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 265 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
diff --git a/src/ats-tests/ats-testing.h b/src/ats-tests/ats-testing.h
index 59a9145d7..22c3b1419 100644
--- a/src/ats-tests/ats-testing.h
+++ b/src/ats-tests/ats-testing.h
@@ -56,6 +56,14 @@ struct TrafficGenerator;
56 56
57struct LoggingHandle; 57struct LoggingHandle;
58 58
59enum TrafficGeneratorType
60{
61 GNUNET_ATS_TEST_LINEAR,
62 GNUNET_ATS_TEST_TG_CONSTANT,
63 GNUNET_ATS_TEST_RANDOM,
64 GNUNET_ATS_TEST_SINUS
65};
66
59 67
60/** 68/**
61 * Callback to call when topology setup is completed 69 * Callback to call when topology setup is completed
@@ -215,6 +223,8 @@ struct TrafficGenerator
215 struct TrafficGenerator *prev; 223 struct TrafficGenerator *prev;
216 struct TrafficGenerator *next; 224 struct TrafficGenerator *next;
217 225
226 enum TrafficGeneratorType type;
227
218 struct BenchmarkPeer *src; 228 struct BenchmarkPeer *src;
219 struct BenchmarkPartner *dest; 229 struct BenchmarkPartner *dest;
220 unsigned int rate; 230 unsigned int rate;
@@ -529,6 +539,7 @@ GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p);
529struct TrafficGenerator * 539struct TrafficGenerator *
530GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src, 540GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src,
531 struct BenchmarkPartner *dest, 541 struct BenchmarkPartner *dest,
542 enum TrafficGeneratorType type,
532 unsigned int rate, 543 unsigned int rate,
533 struct GNUNET_TIME_Relative duration); 544 struct GNUNET_TIME_Relative duration);
534 545
diff --git a/src/ats-tests/gnunet-ats-sim.c b/src/ats-tests/gnunet-ats-sim.c
index 26d0d7d91..27a9dae01 100644
--- a/src/ats-tests/gnunet-ats-sim.c
+++ b/src/ats-tests/gnunet-ats-sim.c
@@ -210,6 +210,7 @@ static void topology_setup_done (void *cls,
210 /* Generate maximum traffic to all peers */ 210 /* Generate maximum traffic to all peers */
211 GNUNET_ATS_TEST_generate_traffic_start (&masters[c_m], 211 GNUNET_ATS_TEST_generate_traffic_start (&masters[c_m],
212 &masters[c_m].partners[c_s], 212 &masters[c_m].partners[c_s],
213 GNUNET_ATS_TEST_TG_CONSTANT,
213 10000, 214 10000,
214 GNUNET_TIME_UNIT_FOREVER_REL); 215 GNUNET_TIME_UNIT_FOREVER_REL);
215 } 216 }