diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-23 10:31:31 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-23 10:31:31 +0000 |
commit | fa6b31337f6a83bb14586f7afa0335e559454e9e (patch) | |
tree | eabb95f7a80690084b04bf773b95bf3dc6eb2893 /src/ats-tests/ats-testing.h | |
parent | 722f875a3021d076a1068e5a9522afaf54f92282 (diff) | |
download | gnunet-fa6b31337f6a83bb14586f7afa0335e559454e9e.tar.gz gnunet-fa6b31337f6a83bb14586f7afa0335e559454e9e.zip |
traffic generation
Diffstat (limited to 'src/ats-tests/ats-testing.h')
-rw-r--r-- | src/ats-tests/ats-testing.h | 165 |
1 files changed, 163 insertions, 2 deletions
diff --git a/src/ats-tests/ats-testing.h b/src/ats-tests/ats-testing.h index a3d208187..b3301f19d 100644 --- a/src/ats-tests/ats-testing.h +++ b/src/ats-tests/ats-testing.h | |||
@@ -33,7 +33,7 @@ | |||
33 | 33 | ||
34 | #define TEST_MESSAGE_TYPE_PING 12345 | 34 | #define TEST_MESSAGE_TYPE_PING 12345 |
35 | #define TEST_MESSAGE_TYPE_PONG 12346 | 35 | #define TEST_MESSAGE_TYPE_PONG 12346 |
36 | #define TEST_MESSAGE_SIZE 1000 | 36 | #define TEST_MESSAGE_SIZE 100 |
37 | 37 | ||
38 | struct BenchmarkPartner; | 38 | struct BenchmarkPartner; |
39 | struct BenchmarkPeer; | 39 | struct BenchmarkPeer; |
@@ -166,6 +166,19 @@ struct BenchmarkPeer | |||
166 | unsigned int total_bytes_received; | 166 | unsigned int total_bytes_received; |
167 | }; | 167 | }; |
168 | 168 | ||
169 | struct TrafficGenerator | ||
170 | { | ||
171 | struct TrafficGenerator *prev; | ||
172 | struct TrafficGenerator *next; | ||
173 | |||
174 | struct BenchmarkPeer *src; | ||
175 | struct BenchmarkPartner *dest; | ||
176 | unsigned int rate; | ||
177 | GNUNET_SCHEDULER_TaskIdentifier send_task; | ||
178 | struct GNUNET_TIME_Absolute next_ping_transmission; | ||
179 | struct GNUNET_TIME_Relative delta; | ||
180 | }; | ||
181 | |||
169 | 182 | ||
170 | /** | 183 | /** |
171 | * Information about a benchmarking partner | 184 | * Information about a benchmarking partner |
@@ -192,6 +205,8 @@ struct BenchmarkPartner | |||
192 | */ | 205 | */ |
193 | struct GNUNET_TRANSPORT_TransmitHandle *tth; | 206 | struct GNUNET_TRANSPORT_TransmitHandle *tth; |
194 | 207 | ||
208 | struct TrafficGenerator *tg; | ||
209 | |||
195 | /** | 210 | /** |
196 | * Timestamp to calculate communication layer delay | 211 | * Timestamp to calculate communication layer delay |
197 | */ | 212 | */ |
@@ -245,6 +260,129 @@ struct BenchmarkPartner | |||
245 | uint32_t ats_cost_wlan; | 260 | uint32_t ats_cost_wlan; |
246 | }; | 261 | }; |
247 | 262 | ||
263 | /** | ||
264 | * Overall state of the performance benchmark | ||
265 | */ | ||
266 | struct BenchmarkState | ||
267 | { | ||
268 | /** | ||
269 | * Are we connected to ATS service of all peers: GNUNET_YES/NO | ||
270 | */ | ||
271 | int connected_ATS_service; | ||
272 | |||
273 | /** | ||
274 | * Are we connected to CORE service of all peers: GNUNET_YES/NO | ||
275 | */ | ||
276 | int connected_COMM_service; | ||
277 | |||
278 | /** | ||
279 | * Are we connected to all peers: GNUNET_YES/NO | ||
280 | */ | ||
281 | int connected_PEERS; | ||
282 | |||
283 | /** | ||
284 | * Are we connected to all slave peers on CORE level: GNUNET_YES/NO | ||
285 | */ | ||
286 | int connected_CORE; | ||
287 | |||
288 | /** | ||
289 | * Are we connected to CORE service of all peers: GNUNET_YES/NO | ||
290 | */ | ||
291 | int benchmarking; | ||
292 | }; | ||
293 | |||
294 | |||
295 | struct GNUNET_ATS_TEST_Topology | ||
296 | { | ||
297 | /** | ||
298 | * Shutdown task | ||
299 | */ | ||
300 | GNUNET_SCHEDULER_TaskIdentifier shutdown_task; | ||
301 | |||
302 | /** | ||
303 | * Progress task | ||
304 | */ | ||
305 | GNUNET_SCHEDULER_TaskIdentifier progress_task; | ||
306 | |||
307 | /** | ||
308 | * Test result | ||
309 | */ | ||
310 | int result; | ||
311 | |||
312 | /** | ||
313 | * Test result logging | ||
314 | */ | ||
315 | int logging; | ||
316 | |||
317 | /**Test core (GNUNET_YES) or transport (GNUNET_NO) | ||
318 | */ | ||
319 | int test_core; | ||
320 | |||
321 | /** | ||
322 | * Solver string | ||
323 | */ | ||
324 | char *solver; | ||
325 | |||
326 | /** | ||
327 | * Preference string | ||
328 | */ | ||
329 | char *testname; | ||
330 | |||
331 | /** | ||
332 | * Preference string | ||
333 | */ | ||
334 | char *pref_str; | ||
335 | |||
336 | /** | ||
337 | * ATS preference value | ||
338 | */ | ||
339 | int pref_val; | ||
340 | |||
341 | /** | ||
342 | * Number master peers | ||
343 | */ | ||
344 | unsigned int num_masters; | ||
345 | |||
346 | /** | ||
347 | * Array of master peers | ||
348 | */ | ||
349 | struct BenchmarkPeer *mps; | ||
350 | |||
351 | /** | ||
352 | * Number slave peers | ||
353 | */ | ||
354 | unsigned int num_slaves; | ||
355 | |||
356 | /** | ||
357 | * Array of slave peers | ||
358 | */ | ||
359 | struct BenchmarkPeer *sps; | ||
360 | |||
361 | /** | ||
362 | * Benchmark duration | ||
363 | */ | ||
364 | struct GNUNET_TIME_Relative perf_duration; | ||
365 | |||
366 | /** | ||
367 | * Logging frequency | ||
368 | */ | ||
369 | struct GNUNET_TIME_Relative log_frequency; | ||
370 | |||
371 | /** | ||
372 | * Benchmark state | ||
373 | */ | ||
374 | struct BenchmarkState state; | ||
375 | |||
376 | struct GNUNET_CORE_MessageHandler *handlers; | ||
377 | |||
378 | GNUNET_TRANSPORT_ReceiveCallback transport_recv_cb; | ||
379 | |||
380 | GNUNET_ATS_TESTING_TopologySetupDoneCallback done_cb; | ||
381 | GNUNET_ATS_AddressInformationCallback ats_perf_cb; | ||
382 | void *done_cb_cls; | ||
383 | }; | ||
384 | |||
385 | |||
248 | struct TrafficGenerator * | 386 | struct TrafficGenerator * |
249 | GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src, | 387 | GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src, |
250 | struct BenchmarkPartner *dest, unsigned int rate, | 388 | struct BenchmarkPartner *dest, unsigned int rate, |
@@ -253,15 +391,38 @@ GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src, | |||
253 | void | 391 | void |
254 | GNUNET_ATS_TEST_generate_traffic_stop (struct TrafficGenerator *tg); | 392 | GNUNET_ATS_TEST_generate_traffic_stop (struct TrafficGenerator *tg); |
255 | 393 | ||
394 | /** | ||
395 | * Stop all traffic generators | ||
396 | */ | ||
397 | void | ||
398 | GNUNET_ATS_TEST_generate_traffic_stop_all (); | ||
399 | |||
400 | /** | ||
401 | * Start logging | ||
402 | */ | ||
256 | void | 403 | void |
257 | GNUNET_ATS_TEST_logging_start (struct GNUNET_TIME_Relative log_frequency, | 404 | GNUNET_ATS_TEST_logging_start (struct GNUNET_TIME_Relative log_frequency, |
258 | char * testname, struct BenchmarkPeer *masters, int num_masters); | 405 | char * testname, struct BenchmarkPeer *masters, int num_masters); |
259 | 406 | ||
407 | /** | ||
408 | * Stop logging | ||
409 | */ | ||
410 | void | ||
411 | GNUNET_ATS_TEST_logging_stop (void); | ||
412 | |||
413 | /** | ||
414 | * Log all data now | ||
415 | */ | ||
260 | void | 416 | void |
261 | GNUNET_ATS_TEST_logging_now (void); | 417 | GNUNET_ATS_TEST_logging_now (void); |
262 | 418 | ||
419 | |||
263 | void | 420 | void |
264 | GNUNET_ATS_TEST_logging_stop (void); | 421 | GNUNET_ATS_TEST_traffic_handle_ping (struct BenchmarkPartner *p); |
422 | |||
423 | void | ||
424 | GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p); | ||
425 | |||
265 | 426 | ||
266 | void | 427 | void |
267 | GNUNET_ATS_TEST_create_topology (char *name, char *cfg_file, | 428 | GNUNET_ATS_TEST_create_topology (char *name, char *cfg_file, |