diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-30 10:45:13 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-30 10:45:13 +0000 |
commit | 7067d8df58abce4636ff94cd3621aee9de1ab594 (patch) | |
tree | 3632705ab7d0b30b791c240ef05eca74fa624597 /src | |
parent | daf74c08914b5dbec07848207262eff933a5f180 (diff) | |
download | gnunet-7067d8df58abce4636ff94cd3621aee9de1ab594.tar.gz gnunet-7067d8df58abce4636ff94cd3621aee9de1ab594.zip |
writign plots
Diffstat (limited to 'src')
-rw-r--r-- | src/ats-tests/ats-testing-log.c | 59 | ||||
-rw-r--r-- | src/ats-tests/ats-testing.h | 5 | ||||
-rw-r--r-- | src/ats-tests/gnunet-ats-sim.c | 12 |
3 files changed, 53 insertions, 23 deletions
diff --git a/src/ats-tests/ats-testing-log.c b/src/ats-tests/ats-testing-log.c index 17b3ab450..3d689e7b2 100644 --- a/src/ats-tests/ats-testing-log.c +++ b/src/ats-tests/ats-testing-log.c | |||
@@ -258,6 +258,9 @@ write_throughput_gnuplot_script (char * fn, struct LoggingPeer *lp) | |||
258 | int peer_index; | 258 | int peer_index; |
259 | 259 | ||
260 | GNUNET_asprintf (&gfn, "gnuplot_throughput_%s",fn); | 260 | GNUNET_asprintf (&gfn, "gnuplot_throughput_%s",fn); |
261 | fprintf (stderr, "Writing throughput plot for master %u to `%s'\n", | ||
262 | lp->peer->no, gfn); | ||
263 | |||
261 | f = GNUNET_DISK_file_open (gfn, | 264 | f = GNUNET_DISK_file_open (gfn, |
262 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, | 265 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, |
263 | GNUNET_DISK_PERM_USER_EXEC | GNUNET_DISK_PERM_USER_READ | | 266 | GNUNET_DISK_PERM_USER_EXEC | GNUNET_DISK_PERM_USER_READ | |
@@ -328,6 +331,9 @@ write_rtt_gnuplot_script (char * fn, struct LoggingPeer *lp) | |||
328 | int index; | 331 | int index; |
329 | 332 | ||
330 | GNUNET_asprintf (&gfn, "gnuplot_rtt_%s",fn); | 333 | GNUNET_asprintf (&gfn, "gnuplot_rtt_%s",fn); |
334 | fprintf (stderr, "Writing rtt plot for master %u to `%s'\n", | ||
335 | lp->peer->no, gfn); | ||
336 | |||
331 | f = GNUNET_DISK_file_open (gfn, | 337 | f = GNUNET_DISK_file_open (gfn, |
332 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, | 338 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, |
333 | GNUNET_DISK_PERM_USER_EXEC | GNUNET_DISK_PERM_USER_READ | | 339 | GNUNET_DISK_PERM_USER_EXEC | GNUNET_DISK_PERM_USER_READ | |
@@ -374,6 +380,9 @@ write_bw_gnuplot_script (char * fn, struct LoggingPeer *lp) | |||
374 | int index; | 380 | int index; |
375 | 381 | ||
376 | GNUNET_asprintf (&gfn, "gnuplot_bw_%s",fn); | 382 | GNUNET_asprintf (&gfn, "gnuplot_bw_%s",fn); |
383 | fprintf (stderr, "Writing bandwidth plot for master %u to `%s'\n", | ||
384 | lp->peer->no, gfn); | ||
385 | |||
377 | f = GNUNET_DISK_file_open (gfn, | 386 | f = GNUNET_DISK_file_open (gfn, |
378 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, | 387 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, |
379 | GNUNET_DISK_PERM_USER_EXEC | GNUNET_DISK_PERM_USER_READ | | 388 | GNUNET_DISK_PERM_USER_EXEC | GNUNET_DISK_PERM_USER_READ | |
@@ -386,7 +395,6 @@ write_bw_gnuplot_script (char * fn, struct LoggingPeer *lp) | |||
386 | } | 395 | } |
387 | 396 | ||
388 | /* Write header */ | 397 | /* Write header */ |
389 | |||
390 | if (GNUNET_SYSERR == GNUNET_DISK_file_write(f, BW_TEMPLATE, strlen(BW_TEMPLATE))) | 398 | if (GNUNET_SYSERR == GNUNET_DISK_file_write(f, BW_TEMPLATE, strlen(BW_TEMPLATE))) |
391 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 399 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
392 | "Cannot write data to plot file `%s'\n", gfn); | 400 | "Cannot write data to plot file `%s'\n", gfn); |
@@ -417,11 +425,12 @@ write_bw_gnuplot_script (char * fn, struct LoggingPeer *lp) | |||
417 | 425 | ||
418 | 426 | ||
419 | void | 427 | void |
420 | GNUNET_ATS_TEST_logging_write_to_file (struct LoggingHandle *l, char *test_name) | 428 | GNUNET_ATS_TEST_logging_write_to_file (struct LoggingHandle *l, |
429 | char *experiment_name, int plots) | ||
421 | { | 430 | { |
422 | struct GNUNET_DISK_FileHandle *f; | 431 | struct GNUNET_DISK_FileHandle *f; |
423 | 432 | char *tmp_exp_name; | |
424 | char * filename; | 433 | char *filename_data; |
425 | char *data; | 434 | char *data; |
426 | char *slave_string; | 435 | char *slave_string; |
427 | char *slave_string_tmp; | 436 | char *slave_string_tmp; |
@@ -431,32 +440,39 @@ GNUNET_ATS_TEST_logging_write_to_file (struct LoggingHandle *l, char *test_name) | |||
431 | int c_m; | 440 | int c_m; |
432 | int c_s; | 441 | int c_s; |
433 | 442 | ||
443 | |||
434 | timestamp = GNUNET_TIME_absolute_get(); | 444 | timestamp = GNUNET_TIME_absolute_get(); |
435 | 445 | ||
446 | tmp_exp_name = experiment_name; | ||
447 | if (NULL != strchr (experiment_name, '/')); | ||
448 | { | ||
449 | tmp_exp_name = strchr (experiment_name, '/'); | ||
450 | tmp_exp_name++; | ||
451 | } | ||
452 | |||
436 | for (c_m = 0; c_m < l->num_peers; c_m++) | 453 | for (c_m = 0; c_m < l->num_peers; c_m++) |
437 | { | 454 | { |
438 | GNUNET_asprintf (&filename, "%s_%llu_master_%u_%s_%s.data", test_name, | 455 | GNUNET_asprintf (&filename_data, "%s_%llu_master_%u_%s_%s.data", tmp_exp_name, |
439 | timestamp.abs_value_us, | 456 | timestamp.abs_value_us, |
440 | l->lp[c_m].peer->no, GNUNET_i2s(&l->lp[c_m].peer->id), l->name); | 457 | l->lp[c_m].peer->no, GNUNET_i2s(&l->lp[c_m].peer->id), l->name); |
441 | 458 | ||
442 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Writing master %u to file `%s'\n", | 459 | fprintf (stderr, "Writing master %u to file `%s'\n", c_m, filename_data); |
443 | c_m, filename); | ||
444 | 460 | ||
445 | f = GNUNET_DISK_file_open (filename, | 461 | f = GNUNET_DISK_file_open (filename_data, |
446 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, | 462 | GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_CREATE, |
447 | GNUNET_DISK_PERM_USER_READ | GNUNET_DISK_PERM_USER_WRITE); | 463 | GNUNET_DISK_PERM_USER_READ | GNUNET_DISK_PERM_USER_WRITE); |
448 | if (NULL == f) | 464 | if (NULL == f) |
449 | { | 465 | { |
450 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cannot open log file `%s'\n", filename); | 466 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Cannot open log file `%s'\n", filename_data); |
451 | GNUNET_free (filename); | 467 | GNUNET_free (filename_data); |
452 | return; | 468 | return; |
453 | } | 469 | } |
454 | 470 | ||
455 | GNUNET_asprintf (&data, "# master peers: %u ; slave peers: %u ; experiment : %s\n", | 471 | GNUNET_asprintf (&data, "# master peers: %u ; slave peers: %u ; experiment : %s\n", |
456 | l->num_peers, l->lp[c_m].peer->num_partners, test_name); | 472 | l->num_peers, l->lp[c_m].peer->num_partners, experiment_name); |
457 | if (GNUNET_SYSERR == GNUNET_DISK_file_write(f, data, strlen(data))) | 473 | if (GNUNET_SYSERR == GNUNET_DISK_file_write(f, data, strlen(data))) |
458 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 474 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
459 | "Cannot write data to log file `%s'\n", filename); | 475 | "Cannot write data to log file `%s'\n", filename_data); |
460 | GNUNET_free (data); | 476 | GNUNET_free (data); |
461 | 477 | ||
462 | for (cur_lt = l->lp[c_m].head; NULL != cur_lt; cur_lt = cur_lt->next) | 478 | for (cur_lt = l->lp[c_m].head; NULL != cur_lt; cur_lt = cur_lt->next) |
@@ -534,24 +550,27 @@ GNUNET_ATS_TEST_logging_write_to_file (struct LoggingHandle *l, char *test_name) | |||
534 | 550 | ||
535 | if (GNUNET_SYSERR == GNUNET_DISK_file_write(f, data, strlen(data))) | 551 | if (GNUNET_SYSERR == GNUNET_DISK_file_write(f, data, strlen(data))) |
536 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 552 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
537 | "Cannot write data to log file `%s'\n", filename); | 553 | "Cannot write data to log file `%s'\n", filename_data); |
538 | GNUNET_free (data); | 554 | GNUNET_free (data); |
539 | } | 555 | } |
540 | if (GNUNET_SYSERR == GNUNET_DISK_file_close(f)) | 556 | if (GNUNET_SYSERR == GNUNET_DISK_file_close(f)) |
541 | { | 557 | { |
542 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 558 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
543 | "Cannot close log file `%s'\n", filename); | 559 | "Cannot close log file `%s'\n", filename_data); |
544 | GNUNET_free (filename); | 560 | GNUNET_free (filename_data); |
545 | return; | 561 | return; |
546 | } | 562 | } |
547 | 563 | ||
548 | write_throughput_gnuplot_script (filename, l->lp); | 564 | if (GNUNET_YES == plots) |
549 | write_rtt_gnuplot_script (filename, l->lp); | 565 | { |
550 | write_bw_gnuplot_script (filename, l->lp); | 566 | write_throughput_gnuplot_script (filename_data, &l->lp[c_m]); |
567 | write_rtt_gnuplot_script (filename_data, &l->lp[c_m]); | ||
568 | write_bw_gnuplot_script (filename_data, &l->lp[c_m]); | ||
569 | } | ||
551 | 570 | ||
552 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 571 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
553 | "Data file successfully written to log file `%s'\n", filename); | 572 | "Data file successfully written to log file `%s'\n", filename_data); |
554 | GNUNET_free (filename); | 573 | GNUNET_free (filename_data); |
555 | } | 574 | } |
556 | } | 575 | } |
557 | 576 | ||
diff --git a/src/ats-tests/ats-testing.h b/src/ats-tests/ats-testing.h index c27033ee7..59a9145d7 100644 --- a/src/ats-tests/ats-testing.h +++ b/src/ats-tests/ats-testing.h | |||
@@ -591,10 +591,11 @@ GNUNET_ATS_TEST_logging_now (struct LoggingHandle *l); | |||
591 | * | 591 | * |
592 | * @param l logging handle to use | 592 | * @param l logging handle to use |
593 | * @param test_name name of the current test | 593 | * @param test_name name of the current test |
594 | * @param plots create gnuplots: GNUNET_YES or GNUNET_NO | ||
594 | */ | 595 | */ |
595 | void | 596 | void |
596 | GNUNET_ATS_TEST_logging_write_to_file (struct LoggingHandle *h, | 597 | GNUNET_ATS_TEST_logging_write_to_file (struct LoggingHandle *l, |
597 | char *test_name); | 598 | char *test_name, int plots); |
598 | 599 | ||
599 | /* | 600 | /* |
600 | * Topology related functions | 601 | * Topology related functions |
diff --git a/src/ats-tests/gnunet-ats-sim.c b/src/ats-tests/gnunet-ats-sim.c index 6a9797179..26d0d7d91 100644 --- a/src/ats-tests/gnunet-ats-sim.c +++ b/src/ats-tests/gnunet-ats-sim.c | |||
@@ -47,6 +47,11 @@ static char *opt_exp_file; | |||
47 | */ | 47 | */ |
48 | static int opt_log; | 48 | static int opt_log; |
49 | 49 | ||
50 | /** | ||
51 | * cmd option -p: enable plots | ||
52 | */ | ||
53 | static int opt_plot; | ||
54 | |||
50 | GNUNET_SCHEDULER_TaskIdentifier timeout_task; | 55 | GNUNET_SCHEDULER_TaskIdentifier timeout_task; |
51 | 56 | ||
52 | struct Experiment *e; | 57 | struct Experiment *e; |
@@ -162,7 +167,7 @@ experiment_done_cb (struct Experiment *e, struct GNUNET_TIME_Relative duration,i | |||
162 | GNUNET_ATS_TEST_logging_stop (l); | 167 | GNUNET_ATS_TEST_logging_stop (l); |
163 | evaluate (duration); | 168 | evaluate (duration); |
164 | if (opt_log) | 169 | if (opt_log) |
165 | GNUNET_ATS_TEST_logging_write_to_file(l, opt_exp_file); | 170 | GNUNET_ATS_TEST_logging_write_to_file(l, opt_exp_file, opt_plot); |
166 | 171 | ||
167 | /* Stop traffic generation */ | 172 | /* Stop traffic generation */ |
168 | GNUNET_ATS_TEST_generate_traffic_stop_all(); | 173 | GNUNET_ATS_TEST_generate_traffic_stop_all(); |
@@ -220,6 +225,7 @@ parse_args (int argc, char *argv[]) | |||
220 | int c; | 225 | int c; |
221 | opt_exp_file = NULL; | 226 | opt_exp_file = NULL; |
222 | opt_log = GNUNET_NO; | 227 | opt_log = GNUNET_NO; |
228 | opt_plot = GNUNET_NO; | ||
223 | 229 | ||
224 | for (c = 0; c < argc; c++) | 230 | for (c = 0; c < argc; c++) |
225 | { | 231 | { |
@@ -231,6 +237,10 @@ parse_args (int argc, char *argv[]) | |||
231 | { | 237 | { |
232 | opt_log = GNUNET_YES; | 238 | opt_log = GNUNET_YES; |
233 | } | 239 | } |
240 | if (0 == strcmp (argv[c], "-p")) | ||
241 | { | ||
242 | opt_plot = GNUNET_YES; | ||
243 | } | ||
234 | } | 244 | } |
235 | } | 245 | } |
236 | 246 | ||