aboutsummaryrefslogtreecommitdiff
path: root/src/ats-tests/ats-testing.h
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2014-01-23 10:31:31 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2014-01-23 10:31:31 +0000
commitfa6b31337f6a83bb14586f7afa0335e559454e9e (patch)
treeeabb95f7a80690084b04bf773b95bf3dc6eb2893 /src/ats-tests/ats-testing.h
parent722f875a3021d076a1068e5a9522afaf54f92282 (diff)
downloadgnunet-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.h165
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
38struct BenchmarkPartner; 38struct BenchmarkPartner;
39struct BenchmarkPeer; 39struct BenchmarkPeer;
@@ -166,6 +166,19 @@ struct BenchmarkPeer
166 unsigned int total_bytes_received; 166 unsigned int total_bytes_received;
167}; 167};
168 168
169struct 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 */
266struct 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
295struct 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
248struct TrafficGenerator * 386struct TrafficGenerator *
249GNUNET_ATS_TEST_generate_traffic_start (struct BenchmarkPeer *src, 387GNUNET_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,
253void 391void
254GNUNET_ATS_TEST_generate_traffic_stop (struct TrafficGenerator *tg); 392GNUNET_ATS_TEST_generate_traffic_stop (struct TrafficGenerator *tg);
255 393
394/**
395 * Stop all traffic generators
396 */
397void
398GNUNET_ATS_TEST_generate_traffic_stop_all ();
399
400/**
401 * Start logging
402 */
256void 403void
257GNUNET_ATS_TEST_logging_start (struct GNUNET_TIME_Relative log_frequency, 404GNUNET_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 */
410void
411GNUNET_ATS_TEST_logging_stop (void);
412
413/**
414 * Log all data now
415 */
260void 416void
261GNUNET_ATS_TEST_logging_now (void); 417GNUNET_ATS_TEST_logging_now (void);
262 418
419
263void 420void
264GNUNET_ATS_TEST_logging_stop (void); 421GNUNET_ATS_TEST_traffic_handle_ping (struct BenchmarkPartner *p);
422
423void
424GNUNET_ATS_TEST_traffic_handle_pong (struct BenchmarkPartner *p);
425
265 426
266void 427void
267GNUNET_ATS_TEST_create_topology (char *name, char *cfg_file, 428GNUNET_ATS_TEST_create_topology (char *name, char *cfg_file,