aboutsummaryrefslogtreecommitdiff
path: root/src/dht/test_dht_multipeer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dht/test_dht_multipeer.c')
-rw-r--r--src/dht/test_dht_multipeer.c210
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
95struct TestGetContext 95struct 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
550get_result_iterator (void *cls, struct GNUNET_TIME_Absolute exp, 532get_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
743static void 712static void
744run_dht_test (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 713run_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