diff options
Diffstat (limited to 'src/dht/test_dht_multipeer.c')
-rw-r--r-- | src/dht/test_dht_multipeer.c | 210 |
1 files changed, 84 insertions, 126 deletions
diff --git a/src/dht/test_dht_multipeer.c b/src/dht/test_dht_multipeer.c index 62833a583..f6519239b 100644 --- a/src/dht/test_dht_multipeer.c +++ b/src/dht/test_dht_multipeer.c | |||
@@ -95,12 +95,12 @@ struct TestPutContext | |||
95 | struct TestGetContext | 95 | struct TestGetContext |
96 | { | 96 | { |
97 | /** | 97 | /** |
98 | * This is a linked list | 98 | * This is a linked list |
99 | */ | 99 | */ |
100 | struct TestGetContext *next; | 100 | struct TestGetContext *next; |
101 | 101 | ||
102 | /** | 102 | /** |
103 | * This is a linked list | 103 | * This is a linked list |
104 | */ | 104 | */ |
105 | struct TestGetContext *prev; | 105 | struct TestGetContext *prev; |
106 | 106 | ||
@@ -220,9 +220,7 @@ shutdown_callback (void *cls, const char *emsg) | |||
220 | { | 220 | { |
221 | if (emsg != NULL) | 221 | if (emsg != NULL) |
222 | { | 222 | { |
223 | fprintf (stderr, | 223 | fprintf (stderr, "Failed to shutdown testing topology: %s\n", emsg); |
224 | "Failed to shutdown testing topology: %s\n", | ||
225 | emsg); | ||
226 | if (ok == 0) | 224 | if (ok == 0) |
227 | ok = 2; | 225 | ok = 2; |
228 | } | 226 | } |
@@ -370,18 +368,18 @@ stat_run (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
370 | GNUNET_free (sm); | 368 | GNUNET_free (sm); |
371 | i = 0; | 369 | i = 0; |
372 | while (stats[i].name != NULL) | 370 | while (stats[i].name != NULL) |
373 | { | 371 | { |
374 | fprintf (stderr, "Total : %12s/%50s = %12llu\n", stats[i].subsystem, | 372 | fprintf (stderr, "Total : %12s/%50s = %12llu\n", stats[i].subsystem, |
375 | stats[i].name, (unsigned long long) stats[i].total); | 373 | stats[i].name, (unsigned long long) stats[i].total); |
376 | i++; | 374 | i++; |
377 | } | 375 | } |
378 | die_task = GNUNET_SCHEDULER_add_now (&do_stop, NULL); | 376 | die_task = GNUNET_SCHEDULER_add_now (&do_stop, NULL); |
379 | return; | 377 | return; |
380 | } | 378 | } |
381 | sm->stat = | 379 | sm->stat = |
382 | GNUNET_STATISTICS_create ("<driver>", | 380 | GNUNET_STATISTICS_create ("<driver>", |
383 | GNUNET_TESTING_daemon_get (pg, | 381 | GNUNET_TESTING_daemon_get (pg, |
384 | sm->daemon)->cfg); | 382 | sm->daemon)->cfg); |
385 | die_task = GNUNET_SCHEDULER_add_now (&stat_run, sm); | 383 | die_task = GNUNET_SCHEDULER_add_now (&stat_run, sm); |
386 | } | 384 | } |
387 | 385 | ||
@@ -404,9 +402,7 @@ finish_testing (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
404 | GNUNET_SCHEDULER_cancel (test_put->task); | 402 | GNUNET_SCHEDULER_cancel (test_put->task); |
405 | if (test_put->dht_handle != NULL) | 403 | if (test_put->dht_handle != NULL) |
406 | GNUNET_DHT_disconnect (test_put->dht_handle); | 404 | GNUNET_DHT_disconnect (test_put->dht_handle); |
407 | GNUNET_CONTAINER_DLL_remove (all_puts_head, | 405 | GNUNET_CONTAINER_DLL_remove (all_puts_head, all_puts_tail, test_put); |
408 | all_puts_tail, | ||
409 | test_put); | ||
410 | GNUNET_free (test_put); | 406 | GNUNET_free (test_put); |
411 | } | 407 | } |
412 | 408 | ||
@@ -418,16 +414,14 @@ finish_testing (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
418 | GNUNET_DHT_get_stop (test_get->get_handle); | 414 | GNUNET_DHT_get_stop (test_get->get_handle); |
419 | if (test_get->dht_handle != NULL) | 415 | if (test_get->dht_handle != NULL) |
420 | GNUNET_DHT_disconnect (test_get->dht_handle); | 416 | GNUNET_DHT_disconnect (test_get->dht_handle); |
421 | GNUNET_CONTAINER_DLL_remove (all_gets_head, | 417 | GNUNET_CONTAINER_DLL_remove (all_gets_head, all_gets_tail, test_get); |
422 | all_gets_tail, | ||
423 | test_get); | ||
424 | GNUNET_free (test_get); | 418 | GNUNET_free (test_get); |
425 | } | 419 | } |
426 | sm = GNUNET_malloc (sizeof (struct StatMaster)); | 420 | sm = GNUNET_malloc (sizeof (struct StatMaster)); |
427 | sm->stat = | 421 | sm->stat = |
428 | GNUNET_STATISTICS_create ("<driver>", | 422 | GNUNET_STATISTICS_create ("<driver>", |
429 | GNUNET_TESTING_daemon_get (pg, | 423 | GNUNET_TESTING_daemon_get (pg, |
430 | sm->daemon)->cfg); | 424 | sm->daemon)->cfg); |
431 | die_task = GNUNET_SCHEDULER_add_now (&stat_run, sm); | 425 | die_task = GNUNET_SCHEDULER_add_now (&stat_run, sm); |
432 | } | 426 | } |
433 | 427 | ||
@@ -445,18 +439,14 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
445 | struct TestGetContext *test_get; | 439 | struct TestGetContext *test_get; |
446 | 440 | ||
447 | die_task = GNUNET_SCHEDULER_NO_TASK; | 441 | die_task = GNUNET_SCHEDULER_NO_TASK; |
448 | fprintf (stderr, | 442 | fprintf (stderr, "Failing test with error: `%s'!\n", emsg); |
449 | "Failing test with error: `%s'!\n", | ||
450 | emsg); | ||
451 | while (NULL != (test_put = all_puts_head)) | 443 | while (NULL != (test_put = all_puts_head)) |
452 | { | 444 | { |
453 | if (test_put->task != GNUNET_SCHEDULER_NO_TASK) | 445 | if (test_put->task != GNUNET_SCHEDULER_NO_TASK) |
454 | GNUNET_SCHEDULER_cancel (test_put->task); | 446 | GNUNET_SCHEDULER_cancel (test_put->task); |
455 | if (test_put->dht_handle != NULL) | 447 | if (test_put->dht_handle != NULL) |
456 | GNUNET_DHT_disconnect (test_put->dht_handle); | 448 | GNUNET_DHT_disconnect (test_put->dht_handle); |
457 | GNUNET_CONTAINER_DLL_remove (all_puts_head, | 449 | GNUNET_CONTAINER_DLL_remove (all_puts_head, all_puts_tail, test_put); |
458 | all_puts_tail, | ||
459 | test_put); | ||
460 | GNUNET_free (test_put); | 450 | GNUNET_free (test_put); |
461 | } | 451 | } |
462 | 452 | ||
@@ -468,9 +458,7 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
468 | GNUNET_DHT_get_stop (test_get->get_handle); | 458 | GNUNET_DHT_get_stop (test_get->get_handle); |
469 | if (test_get->dht_handle != NULL) | 459 | if (test_get->dht_handle != NULL) |
470 | GNUNET_DHT_disconnect (test_get->dht_handle); | 460 | GNUNET_DHT_disconnect (test_get->dht_handle); |
471 | GNUNET_CONTAINER_DLL_remove (all_gets_head, | 461 | GNUNET_CONTAINER_DLL_remove (all_gets_head, all_gets_tail, test_get); |
472 | all_gets_tail, | ||
473 | test_get); | ||
474 | GNUNET_free (test_get); | 462 | GNUNET_free (test_get); |
475 | } | 463 | } |
476 | ok = 1; | 464 | ok = 1; |
@@ -495,10 +483,8 @@ get_stop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
495 | if (test_get->succeeded != GNUNET_YES) | 483 | if (test_get->succeeded != GNUNET_YES) |
496 | { | 484 | { |
497 | gets_failed++; | 485 | gets_failed++; |
498 | fprintf (stderr, | 486 | fprintf (stderr, "Get from peer %s for key %s failed!\n", |
499 | "Get from peer %s for key %s failed!\n", | 487 | GNUNET_i2s (&test_get->daemon->id), GNUNET_h2s (&search_key)); |
500 | GNUNET_i2s (&test_get->daemon->id), | ||
501 | GNUNET_h2s (&search_key)); | ||
502 | } | 488 | } |
503 | GNUNET_assert (test_get->get_handle != NULL); | 489 | GNUNET_assert (test_get->get_handle != NULL); |
504 | GNUNET_DHT_get_stop (test_get->get_handle); | 490 | GNUNET_DHT_get_stop (test_get->get_handle); |
@@ -508,29 +494,25 @@ get_stop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
508 | GNUNET_DHT_disconnect (test_get->dht_handle); | 494 | GNUNET_DHT_disconnect (test_get->dht_handle); |
509 | test_get->dht_handle = NULL; | 495 | test_get->dht_handle = NULL; |
510 | 496 | ||
511 | GNUNET_CONTAINER_DLL_remove (all_gets_head, | 497 | GNUNET_CONTAINER_DLL_remove (all_gets_head, all_gets_tail, test_get); |
512 | all_gets_tail, | ||
513 | test_get); | ||
514 | GNUNET_free (test_get); | 498 | GNUNET_free (test_get); |
515 | if ((gets_failed > 10) && (outstanding_gets == 0)) | 499 | if ((gets_failed > 10) && (outstanding_gets == 0)) |
516 | { | 500 | { |
517 | /* Had more than 10% failures */ | 501 | /* Had more than 10% failures */ |
518 | fprintf (stderr, | 502 | fprintf (stderr, "%llu gets succeeded, %llu gets failed!\n", gets_completed, |
519 | "%llu gets succeeded, %llu gets failed!\n", | 503 | gets_failed); |
520 | gets_completed, gets_failed); | ||
521 | GNUNET_SCHEDULER_cancel (die_task); | 504 | GNUNET_SCHEDULER_cancel (die_task); |
522 | ok = 1; | 505 | ok = 1; |
523 | die_task = GNUNET_SCHEDULER_add_now (&finish_testing, "not all gets succeeded"); | 506 | die_task = |
507 | GNUNET_SCHEDULER_add_now (&finish_testing, "not all gets succeeded"); | ||
524 | return; | 508 | return; |
525 | } | 509 | } |
526 | if ( (gets_completed + gets_failed == num_peers * num_peers) && | 510 | if ((gets_completed + gets_failed == num_peers * num_peers) && (outstanding_gets == 0)) /* All gets successful */ |
527 | (outstanding_gets == 0) ) /* All gets successful */ | ||
528 | { | 511 | { |
529 | fprintf (stderr, | 512 | fprintf (stderr, "%llu gets succeeded, %llu gets failed!\n", gets_completed, |
530 | "%llu gets succeeded, %llu gets failed!\n", | 513 | gets_failed); |
531 | gets_completed, gets_failed); | ||
532 | GNUNET_SCHEDULER_cancel (die_task); | 514 | GNUNET_SCHEDULER_cancel (die_task); |
533 | ok = 0; | 515 | ok = 0; |
534 | die_task = GNUNET_SCHEDULER_add_now (&finish_testing, NULL); | 516 | die_task = GNUNET_SCHEDULER_add_now (&finish_testing, NULL); |
535 | } | 517 | } |
536 | } | 518 | } |
@@ -550,10 +532,10 @@ static void | |||
550 | get_result_iterator (void *cls, struct GNUNET_TIME_Absolute exp, | 532 | get_result_iterator (void *cls, struct GNUNET_TIME_Absolute exp, |
551 | const GNUNET_HashCode * key, | 533 | const GNUNET_HashCode * key, |
552 | const struct GNUNET_PeerIdentity *get_path, | 534 | const struct GNUNET_PeerIdentity *get_path, |
553 | unsigned int get_path_length, | 535 | unsigned int get_path_length, |
554 | const struct GNUNET_PeerIdentity *put_path, | 536 | const struct GNUNET_PeerIdentity *put_path, |
555 | unsigned int put_path_length, | 537 | unsigned int put_path_length, enum GNUNET_BLOCK_Type type, |
556 | enum GNUNET_BLOCK_Type type, size_t size, const void *data) | 538 | size_t size, const void *data) |
557 | { | 539 | { |
558 | struct TestGetContext *test_get = cls; | 540 | struct TestGetContext *test_get = cls; |
559 | GNUNET_HashCode search_key; /* Key stored under */ | 541 | GNUNET_HashCode search_key; /* Key stored under */ |
@@ -569,9 +551,8 @@ get_result_iterator (void *cls, struct GNUNET_TIME_Absolute exp, | |||
569 | { | 551 | { |
570 | unsigned int i; | 552 | unsigned int i; |
571 | 553 | ||
572 | fprintf (stderr, "PUT (%u) Path: ", | 554 | fprintf (stderr, "PUT (%u) Path: ", test_get->uid); |
573 | test_get->uid); | 555 | for (i = 0; i < put_path_length; i++) |
574 | for (i = 0; i<put_path_length; i++) | ||
575 | fprintf (stderr, "%s%s", i == 0 ? "" : "->", GNUNET_i2s (&put_path[i])); | 556 | fprintf (stderr, "%s%s", i == 0 ? "" : "->", GNUNET_i2s (&put_path[i])); |
576 | fprintf (stderr, "\n"); | 557 | fprintf (stderr, "\n"); |
577 | } | 558 | } |
@@ -579,25 +560,22 @@ get_result_iterator (void *cls, struct GNUNET_TIME_Absolute exp, | |||
579 | { | 560 | { |
580 | unsigned int i; | 561 | unsigned int i; |
581 | 562 | ||
582 | fprintf (stderr, "GET (%u) Path: ", | 563 | fprintf (stderr, "GET (%u) Path: ", test_get->uid); |
583 | test_get->uid); | ||
584 | for (i = 0; i < get_path_length; i++) | 564 | for (i = 0; i < get_path_length; i++) |
585 | fprintf (stderr, "%s%s", i == 0 ? "" : "->", GNUNET_i2s (&get_path[i])); | 565 | fprintf (stderr, "%s%s", i == 0 ? "" : "->", GNUNET_i2s (&get_path[i])); |
586 | fprintf (stderr, "%s%s\n", | 566 | fprintf (stderr, "%s%s\n", get_path_length > 0 ? "->" : "", |
587 | get_path_length > 0 ? "->":"", | 567 | GNUNET_i2s (&test_get->daemon->id)); |
588 | GNUNET_i2s (&test_get->daemon->id)); | ||
589 | } | 568 | } |
590 | #endif | 569 | #endif |
591 | 570 | ||
592 | if ((0 != memcmp (&search_key, key, sizeof (GNUNET_HashCode))) || | 571 | if ((0 != memcmp (&search_key, key, sizeof (GNUNET_HashCode))) || |
593 | (0 != memcmp (original_data, data, sizeof (original_data)))) | 572 | (0 != memcmp (original_data, data, sizeof (original_data)))) |
594 | { | 573 | { |
595 | fprintf (stderr, | 574 | fprintf (stderr, "Key or data is not the same as was inserted!\n"); |
596 | "Key or data is not the same as was inserted!\n"); | ||
597 | return; | 575 | return; |
598 | } | 576 | } |
599 | gets_completed++; | 577 | gets_completed++; |
600 | test_get->succeeded = GNUNET_YES; | 578 | test_get->succeeded = GNUNET_YES; |
601 | GNUNET_SCHEDULER_cancel (test_get->task); | 579 | GNUNET_SCHEDULER_cancel (test_get->task); |
602 | test_get->task = GNUNET_SCHEDULER_add_now (&get_stop_task, test_get); | 580 | test_get->task = GNUNET_SCHEDULER_add_now (&get_stop_task, test_get); |
603 | } | 581 | } |
@@ -615,7 +593,8 @@ do_get (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
615 | 593 | ||
616 | if (outstanding_gets > MAX_OUTSTANDING_GETS) | 594 | if (outstanding_gets > MAX_OUTSTANDING_GETS) |
617 | { | 595 | { |
618 | test_get->task = GNUNET_SCHEDULER_add_delayed (GET_DELAY, &do_get, test_get); | 596 | test_get->task = |
597 | GNUNET_SCHEDULER_add_delayed (GET_DELAY, &do_get, test_get); | ||
619 | return; | 598 | return; |
620 | } | 599 | } |
621 | memset (data, test_get->uid, sizeof (data)); | 600 | memset (data, test_get->uid, sizeof (data)); |
@@ -624,12 +603,11 @@ do_get (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
624 | GNUNET_assert (test_get->dht_handle != NULL); | 603 | GNUNET_assert (test_get->dht_handle != NULL); |
625 | outstanding_gets++; | 604 | outstanding_gets++; |
626 | test_get->get_handle = | 605 | test_get->get_handle = |
627 | GNUNET_DHT_get_start (test_get->dht_handle, GNUNET_TIME_UNIT_FOREVER_REL, | 606 | GNUNET_DHT_get_start (test_get->dht_handle, GNUNET_TIME_UNIT_FOREVER_REL, |
628 | GNUNET_BLOCK_TYPE_TEST, &key, | 607 | GNUNET_BLOCK_TYPE_TEST, &key, 1, route_option, NULL, |
629 | 1, route_option, NULL, 0, | 608 | 0, &get_result_iterator, test_get); |
630 | &get_result_iterator, test_get); | ||
631 | test_get->task = | 609 | test_get->task = |
632 | GNUNET_SCHEDULER_add_delayed (GET_TIMEOUT, &get_stop_task, test_get); | 610 | GNUNET_SCHEDULER_add_delayed (GET_TIMEOUT, &get_stop_task, test_get); |
633 | } | 611 | } |
634 | 612 | ||
635 | 613 | ||
@@ -644,9 +622,7 @@ put_disconnect_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
644 | test_put->task = GNUNET_SCHEDULER_NO_TASK; | 622 | test_put->task = GNUNET_SCHEDULER_NO_TASK; |
645 | GNUNET_DHT_disconnect (test_put->dht_handle); | 623 | GNUNET_DHT_disconnect (test_put->dht_handle); |
646 | test_put->dht_handle = NULL; | 624 | test_put->dht_handle = NULL; |
647 | GNUNET_CONTAINER_DLL_remove (all_puts_head, | 625 | GNUNET_CONTAINER_DLL_remove (all_puts_head, all_puts_tail, test_put); |
648 | all_puts_tail, | ||
649 | test_put); | ||
650 | GNUNET_free (test_put); | 626 | GNUNET_free (test_put); |
651 | } | 627 | } |
652 | 628 | ||
@@ -661,23 +637,19 @@ start_gets (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
661 | unsigned long long j; | 637 | unsigned long long j; |
662 | struct TestGetContext *test_get; | 638 | struct TestGetContext *test_get; |
663 | 639 | ||
664 | #if VERBOSE | 640 | #if VERBOSE |
665 | fprintf (stderr, | 641 | fprintf (stderr, "Issuing %llu GETs\n", |
666 | "Issuing %llu GETs\n", | 642 | (unsigned long long) (num_peers * num_peers)); |
667 | (unsigned long long) (num_peers * num_peers)); | ||
668 | #endif | 643 | #endif |
669 | for (i = 0; i < num_peers; i++) | 644 | for (i = 0; i < num_peers; i++) |
670 | for (j = 0; j < num_peers; j++) | 645 | for (j = 0; j < num_peers; j++) |
671 | { | 646 | { |
672 | test_get = GNUNET_malloc (sizeof (struct TestGetContext)); | 647 | test_get = GNUNET_malloc (sizeof (struct TestGetContext)); |
673 | test_get->uid = i + j*num_peers; | 648 | test_get->uid = i + j * num_peers; |
674 | test_get->daemon = GNUNET_TESTING_daemon_get (pg, j); | 649 | test_get->daemon = GNUNET_TESTING_daemon_get (pg, j); |
675 | GNUNET_CONTAINER_DLL_insert (all_gets_head, | 650 | GNUNET_CONTAINER_DLL_insert (all_gets_head, all_gets_tail, test_get); |
676 | all_gets_tail, | 651 | test_get->task = GNUNET_SCHEDULER_add_now (&do_get, test_get); |
677 | test_get); | 652 | } |
678 | test_get->task = GNUNET_SCHEDULER_add_now (&do_get, | ||
679 | test_get); | ||
680 | } | ||
681 | } | 653 | } |
682 | 654 | ||
683 | 655 | ||
@@ -692,15 +664,12 @@ put_finished (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
692 | outstanding_puts--; | 664 | outstanding_puts--; |
693 | puts_completed++; | 665 | puts_completed++; |
694 | GNUNET_SCHEDULER_cancel (test_put->task); | 666 | GNUNET_SCHEDULER_cancel (test_put->task); |
695 | test_put->task = | 667 | test_put->task = GNUNET_SCHEDULER_add_now (&put_disconnect_task, test_put); |
696 | GNUNET_SCHEDULER_add_now (&put_disconnect_task, test_put); | ||
697 | if (puts_completed != num_peers * num_peers) | 668 | if (puts_completed != num_peers * num_peers) |
698 | return; | 669 | return; |
699 | 670 | ||
700 | GNUNET_assert (outstanding_puts == 0); | 671 | GNUNET_assert (outstanding_puts == 0); |
701 | GNUNET_SCHEDULER_add_delayed (START_DELAY, | 672 | GNUNET_SCHEDULER_add_delayed (START_DELAY, &start_gets, NULL); |
702 | &start_gets, | ||
703 | NULL); | ||
704 | } | 673 | } |
705 | 674 | ||
706 | 675 | ||
@@ -717,7 +686,8 @@ do_put (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
717 | test_put->task = GNUNET_SCHEDULER_NO_TASK; | 686 | test_put->task = GNUNET_SCHEDULER_NO_TASK; |
718 | if (outstanding_puts > MAX_OUTSTANDING_PUTS) | 687 | if (outstanding_puts > MAX_OUTSTANDING_PUTS) |
719 | { | 688 | { |
720 | test_put->task = GNUNET_SCHEDULER_add_delayed (PUT_DELAY, &do_put, test_put); | 689 | test_put->task = |
690 | GNUNET_SCHEDULER_add_delayed (PUT_DELAY, &do_put, test_put); | ||
721 | return; | 691 | return; |
722 | } | 692 | } |
723 | memset (data, test_put->uid, sizeof (data)); | 693 | memset (data, test_put->uid, sizeof (data)); |
@@ -726,46 +696,43 @@ do_put (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
726 | GNUNET_assert (test_put->dht_handle != NULL); | 696 | GNUNET_assert (test_put->dht_handle != NULL); |
727 | outstanding_puts++; | 697 | outstanding_puts++; |
728 | #if VERBOSE > 2 | 698 | #if VERBOSE > 2 |
729 | fprintf (stderr, "PUT %u at `%s'\n", | 699 | fprintf (stderr, "PUT %u at `%s'\n", test_put->uid, |
730 | test_put->uid, | 700 | GNUNET_i2s (&test_put->daemon->id)); |
731 | GNUNET_i2s (&test_put->daemon->id)); | ||
732 | #endif | 701 | #endif |
733 | GNUNET_DHT_put (test_put->dht_handle, &key, 1, | 702 | GNUNET_DHT_put (test_put->dht_handle, &key, 1, route_option, |
734 | route_option, GNUNET_BLOCK_TYPE_TEST, sizeof (data), data, | 703 | GNUNET_BLOCK_TYPE_TEST, sizeof (data), data, |
735 | GNUNET_TIME_UNIT_FOREVER_ABS, GNUNET_TIME_UNIT_FOREVER_REL, | 704 | GNUNET_TIME_UNIT_FOREVER_ABS, GNUNET_TIME_UNIT_FOREVER_REL, |
736 | &put_finished, test_put); | 705 | &put_finished, test_put); |
737 | test_put->task = | 706 | test_put->task = |
738 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, | 707 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, |
739 | &put_disconnect_task, test_put); | 708 | &put_disconnect_task, test_put); |
740 | } | 709 | } |
741 | 710 | ||
742 | 711 | ||
743 | static void | 712 | static void |
744 | run_dht_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 713 | run_dht_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
745 | { | 714 | { |
746 | unsigned long long i; | 715 | unsigned long long i; |
747 | struct TestPutContext *test_put; | 716 | struct TestPutContext *test_put; |
748 | 717 | ||
749 | #if PATH_TRACKING | 718 | #if PATH_TRACKING |
750 | route_option = GNUNET_DHT_RO_RECORD_ROUTE | GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE; | 719 | route_option = |
720 | GNUNET_DHT_RO_RECORD_ROUTE | GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE; | ||
751 | #else | 721 | #else |
752 | route_option = GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE; | 722 | route_option = GNUNET_DHT_RO_DEMULTIPLEX_EVERYWHERE; |
753 | #endif | 723 | #endif |
754 | die_task = | 724 | die_task = |
755 | GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, | 725 | GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_badly, |
756 | "from setup puts/gets"); | 726 | "from setup puts/gets"); |
757 | fprintf (stderr, | 727 | fprintf (stderr, "Issuing %llu PUTs (one per peer)\n", |
758 | "Issuing %llu PUTs (one per peer)\n", | 728 | (unsigned long long) (num_peers * num_peers)); |
759 | (unsigned long long) (num_peers * num_peers)); | ||
760 | for (i = 0; i < num_peers * num_peers; i++) | 729 | for (i = 0; i < num_peers * num_peers; i++) |
761 | { | 730 | { |
762 | test_put = GNUNET_malloc (sizeof (struct TestPutContext)); | 731 | test_put = GNUNET_malloc (sizeof (struct TestPutContext)); |
763 | test_put->uid = i; | 732 | test_put->uid = i; |
764 | test_put->daemon = GNUNET_TESTING_daemon_get (pg, i % num_peers); | 733 | test_put->daemon = GNUNET_TESTING_daemon_get (pg, i % num_peers); |
765 | test_put->task = GNUNET_SCHEDULER_add_now (&do_put, test_put); | 734 | test_put->task = GNUNET_SCHEDULER_add_now (&do_put, test_put); |
766 | GNUNET_CONTAINER_DLL_insert (all_puts_head, | 735 | GNUNET_CONTAINER_DLL_insert (all_puts_head, all_puts_tail, test_put); |
767 | all_puts_tail, | ||
768 | test_put); | ||
769 | } | 736 | } |
770 | } | 737 | } |
771 | 738 | ||
@@ -782,17 +749,13 @@ startup_done (void *cls, const char *emsg) | |||
782 | { | 749 | { |
783 | if (emsg != NULL) | 750 | if (emsg != NULL) |
784 | { | 751 | { |
785 | fprintf (stderr, | 752 | fprintf (stderr, "Failed to setup topology: %s\n", emsg); |
786 | "Failed to setup topology: %s\n", | 753 | die_task = GNUNET_SCHEDULER_add_now (&end_badly, "topology setup failed"); |
787 | emsg); | ||
788 | die_task = | ||
789 | GNUNET_SCHEDULER_add_now (&end_badly, | ||
790 | "topology setup failed"); | ||
791 | return; | 754 | return; |
792 | } | 755 | } |
793 | die_task = | 756 | die_task = |
794 | GNUNET_SCHEDULER_add_delayed (START_DELAY, &run_dht_test, | 757 | GNUNET_SCHEDULER_add_delayed (START_DELAY, &run_dht_test, |
795 | "from setup puts/gets"); | 758 | "from setup puts/gets"); |
796 | } | 759 | } |
797 | 760 | ||
798 | 761 | ||
@@ -813,13 +776,8 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
813 | GNUNET_CONFIGURATION_get_value_number (cfg, "testing", "num_peers", | 776 | GNUNET_CONFIGURATION_get_value_number (cfg, "testing", "num_peers", |
814 | &num_peers)) | 777 | &num_peers)) |
815 | num_peers = DEFAULT_NUM_PEERS; | 778 | num_peers = DEFAULT_NUM_PEERS; |
816 | pg = GNUNET_TESTING_peergroup_start (cfg, | 779 | pg = GNUNET_TESTING_peergroup_start (cfg, num_peers, TIMEOUT, NULL, |
817 | num_peers, | 780 | &startup_done, NULL, NULL); |
818 | TIMEOUT, | ||
819 | NULL, | ||
820 | &startup_done, | ||
821 | NULL, | ||
822 | NULL); | ||
823 | GNUNET_assert (NULL != pg); | 781 | GNUNET_assert (NULL != pg); |
824 | } | 782 | } |
825 | 783 | ||