aboutsummaryrefslogtreecommitdiff
path: root/src/testing
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2011-04-06 09:40:36 +0000
committerNathan S. Evans <evans@in.tum.de>2011-04-06 09:40:36 +0000
commitb24caf06a3d147b2362c210c4e7385b83c9f582b (patch)
tree29306a4e3ede82b3b68935773a769ca217232316 /src/testing
parent626665da9b8b1861a1e09ca91e599ec44f915c9c (diff)
downloadgnunet-b24caf06a3d147b2362c210c4e7385b83c9f582b.tar.gz
gnunet-b24caf06a3d147b2362c210c4e7385b83c9f582b.zip
peergroup initial version with test case
Diffstat (limited to 'src/testing')
-rw-r--r--src/testing/Makefile.am8
-rw-r--r--src/testing/test_testing_data_remote.conf3
-rw-r--r--src/testing/test_testing_peergroup_data.conf57
-rw-r--r--src/testing/testing_group.c6
-rw-r--r--src/testing/testing_peergroup.c206
5 files changed, 237 insertions, 43 deletions
diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am
index 1d7806a2a..fb78fbeb8 100644
--- a/src/testing/Makefile.am
+++ b/src/testing/Makefile.am
@@ -27,6 +27,7 @@ check_PROGRAMS = \
27 test_testing_connect \ 27 test_testing_connect \
28 test_testing_reconnect \ 28 test_testing_reconnect \
29 test_testing_group \ 29 test_testing_group \
30 test_testing_peergroup \
30 test_testing_topology_stability \ 31 test_testing_topology_stability \
31 test_testing_topology_clique \ 32 test_testing_topology_clique \
32 test_testing_topology_clique_random \ 33 test_testing_topology_clique_random \
@@ -51,6 +52,7 @@ TESTS = \
51 test_testing_connect \ 52 test_testing_connect \
52 test_testing_reconnect \ 53 test_testing_reconnect \
53 test_testing_group \ 54 test_testing_group \
55 test_testing_peergroup \
54 test_testing_topology_clique 56 test_testing_topology_clique
55# test_testing_topology_stability \ 57# test_testing_topology_stability \
56# test_testing_topology_clique_random \ 58# test_testing_topology_clique_random \
@@ -92,6 +94,12 @@ test_testing_group_SOURCES = \
92test_testing_group_LDADD = \ 94test_testing_group_LDADD = \
93 $(top_builddir)/src/testing/libgnunettesting.la \ 95 $(top_builddir)/src/testing/libgnunettesting.la \
94 $(top_builddir)/src/util/libgnunetutil.la 96 $(top_builddir)/src/util/libgnunetutil.la
97
98test_testing_peergroup_SOURCES = \
99 test_testing_peergroup.c
100test_testing_peergroup_LDADD = \
101 $(top_builddir)/src/testing/libgnunettesting.la \
102 $(top_builddir)/src/util/libgnunetutil.la
95 103
96test_testing_topology_clique_SOURCES = \ 104test_testing_topology_clique_SOURCES = \
97 test_testing_topology.c 105 test_testing_topology.c
diff --git a/src/testing/test_testing_data_remote.conf b/src/testing/test_testing_data_remote.conf
index 5bc179823..0f76fb862 100644
--- a/src/testing/test_testing_data_remote.conf
+++ b/src/testing/test_testing_data_remote.conf
@@ -32,8 +32,9 @@ PORT = 2570
32CONTROL_HOST = 131.159.20.42 32CONTROL_HOST = 131.159.20.42
33HOSTFILE = remote_hosts.txt 33HOSTFILE = remote_hosts.txt
34WEAKRANDOM = YES 34WEAKRANDOM = YES
35NUM_PEERS = 2 35NUM_PEERS = 5
36HOSTKEYSFILE = ../../contrib/testing_hostkeys.dat 36HOSTKEYSFILE = ../../contrib/testing_hostkeys.dat
37MAX_OUTSTANDING_SSH = 5
37 38
38[dht] 39[dht]
39AUTOSTART = NO 40AUTOSTART = NO
diff --git a/src/testing/test_testing_peergroup_data.conf b/src/testing/test_testing_peergroup_data.conf
new file mode 100644
index 000000000..d03d391f9
--- /dev/null
+++ b/src/testing/test_testing_peergroup_data.conf
@@ -0,0 +1,57 @@
1[PATHS]
2SERVICEHOME = /tmp/test-gnunet-testing/
3DEFAULTCONFIG = test_testing_peergroup_data.conf
4
5[resolver]
6PORT = 2564
7
8[transport]
9PORT = 2565
10PLUGINS = tcp
11#PREFIX = xterm -e xterm -T transport -e gdb -x cmd --args
12#PREFIX = valgrind --tool=memcheck --log-file=logs%p
13
14[arm]
15PORT = 2566
16DEFAULTSERVICES = core
17
18[statistics]
19PORT = 2567
20
21[transport-tcp]
22PORT = 2568
23
24[peerinfo]
25PORT = 2569
26
27[core]
28PORT = 2570
29
30[testing]
31WEAKRANDOM = YES
32HOSTKEYSFILE = ../../contrib/testing_hostkeys.dat
33#The following options are REQUIRED for peergroup convenience usage!
34MAX_OUTSTANDING_CONNECTIONS = 20
35MAX_CONCURRENT_SSH = 1
36CONNECT_ATTEMPTS = 2
37PEERGROUP_TIMEOUT = 300
38TOPOLOGY = CLIQUE
39PERCENTAGE = 0.5
40PROBABILITY = 0.5
41CONNECT_TOPOLOGY = CLIQUE
42CONNECT_TOPOLOGY_OPTION = CONNECT_NONE
43CONNECT_TOPOLOGY_OPTION_MODIFIER = 0.0
44BLACKLIST_TOPOLOGY = NONE
45BLACKLIST_TRANSPORTS = tcp udp
46
47
48[fs]
49AUTOSTART = NO
50
51[datastore]
52AUTOSTART = NO
53
54[dht]
55AUTOSTART = NO
56
57
diff --git a/src/testing/testing_group.c b/src/testing/testing_group.c
index e7ae32f01..9f319ca61 100644
--- a/src/testing/testing_group.c
+++ b/src/testing/testing_group.c
@@ -2361,7 +2361,7 @@ create_clique(struct GNUNET_TESTING_PeerGroup *pg,
2361 connect_attempts = 0; 2361 connect_attempts = 0;
2362 2362
2363 conn_meter = create_meter ((((pg->total * pg->total) + pg->total) / 2) 2363 conn_meter = create_meter ((((pg->total * pg->total) + pg->total) / 2)
2364 - pg->total, "Create Clique ", GNUNET_YES); 2364 - pg->total, "Create Clique ", GNUNET_NO);
2365 for (outer_count = 0; outer_count < pg->total - 1; outer_count++) 2365 for (outer_count = 0; outer_count < pg->total - 1; outer_count++)
2366 { 2366 {
2367 for (inner_count = outer_count + 1; inner_count < pg->total; inner_count++) 2367 for (inner_count = outer_count + 1; inner_count < pg->total; inner_count++)
@@ -2375,8 +2375,6 @@ create_clique(struct GNUNET_TESTING_PeerGroup *pg,
2375 update_meter (conn_meter); 2375 update_meter (conn_meter);
2376 } 2376 }
2377 } 2377 }
2378 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Meter has %d left\n",
2379 conn_meter->total - conn_meter->completed);
2380 reset_meter (conn_meter); 2378 reset_meter (conn_meter);
2381 free_meter (conn_meter); 2379 free_meter (conn_meter);
2382 return connect_attempts; 2380 return connect_attempts;
@@ -5922,7 +5920,7 @@ GNUNET_TESTING_daemons_start(const struct GNUNET_CONFIGURATION_Handle *cfg,
5922 else 5920 else
5923 { 5921 {
5924 total_hostkeys = fs / HOSTKEYFILESIZE; 5922 total_hostkeys = fs / HOSTKEYFILESIZE;
5925 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 5923 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
5926 "Will read %llu hostkeys from file\n", total_hostkeys); 5924 "Will read %llu hostkeys from file\n", total_hostkeys);
5927 pg->hostkey_data = GNUNET_malloc_large (fs); 5925 pg->hostkey_data = GNUNET_malloc_large (fs);
5928 GNUNET_assert (fs == GNUNET_DISK_file_read (fd, pg->hostkey_data, fs)); 5926 GNUNET_assert (fs == GNUNET_DISK_file_read (fd, pg->hostkey_data, fs));
diff --git a/src/testing/testing_peergroup.c b/src/testing/testing_peergroup.c
index bd725fedc..b9b6cd313 100644
--- a/src/testing/testing_peergroup.c
+++ b/src/testing/testing_peergroup.c
@@ -44,8 +44,9 @@ struct PeerGroupStartupContext
44 const struct GNUNET_CONFIGURATION_Handle *cfg; 44 const struct GNUNET_CONFIGURATION_Handle *cfg;
45 unsigned int total; 45 unsigned int total;
46 unsigned int peers_left; 46 unsigned int peers_left;
47 unsigned int max_concurrent_connections; 47 unsigned long long max_concurrent_connections;
48 unsigned int max_concurrent_ssh; 48 unsigned long long connect_attempts;
49 unsigned long long max_concurrent_ssh;
49 struct GNUNET_TIME_Absolute timeout; 50 struct GNUNET_TIME_Absolute timeout;
50 GNUNET_TESTING_NotifyConnection connect_cb; 51 GNUNET_TESTING_NotifyConnection connect_cb;
51 void *connect_cb_cls; 52 void *connect_cb_cls;
@@ -53,8 +54,13 @@ struct PeerGroupStartupContext
53 void *peergroup_cb_cls; 54 void *peergroup_cb_cls;
54 const struct GNUNET_TESTING_Host *hostnames; 55 const struct GNUNET_TESTING_Host *hostnames;
55 enum GNUNET_TESTING_Topology topology; 56 enum GNUNET_TESTING_Topology topology;
57
58 float topology_percentage;
59
60 float topology_probability;
61
56 enum GNUNET_TESTING_Topology restrict_topology; 62 enum GNUNET_TESTING_Topology restrict_topology;
57 const char *restrict_transports; 63 char *restrict_transports;
58 enum GNUNET_TESTING_Topology connect_topology; 64 enum GNUNET_TESTING_Topology connect_topology;
59 enum GNUNET_TESTING_TopologyOption connect_topology_option; 65 enum GNUNET_TESTING_TopologyOption connect_topology_option;
60 double connect_topology_option_modifier; 66 double connect_topology_option_modifier;
@@ -401,6 +407,8 @@ internal_topology_callback(
401 GNUNET_SCHEDULER_cancel (pg_start_ctx->die_task); 407 GNUNET_SCHEDULER_cancel (pg_start_ctx->die_task);
402 408
403 /* Call final callback, signifying that the peer group has been started and connected */ 409 /* Call final callback, signifying that the peer group has been started and connected */
410 if (pg_start_ctx->peergroup_cb != NULL)
411 pg_start_ctx->peergroup_cb(pg_start_ctx->peergroup_cb_cls, NULL);
404 } 412 }
405} 413}
406 414
@@ -446,7 +454,7 @@ internal_peers_started_callback(void *cls, const struct GNUNET_PeerIdentity *id,
446 pg_start_ctx->connect_topology_option, 454 pg_start_ctx->connect_topology_option,
447 pg_start_ctx->connect_topology_option_modifier, 455 pg_start_ctx->connect_topology_option_modifier,
448 DEFAULT_CONNECT_TIMEOUT, 456 DEFAULT_CONNECT_TIMEOUT,
449 DEFAULT_CONNECT_ATTEMPTS, 457 pg_start_ctx->connect_attempts,
450 NULL, NULL); 458 NULL, NULL);
451 459
452 pg_start_ctx->connect_meter 460 pg_start_ctx->connect_meter
@@ -506,9 +514,6 @@ internal_hostkey_callback(void *cls, const struct GNUNET_PeerIdentity *id,
506 pg_start_ctx->peers_left--; 514 pg_start_ctx->peers_left--;
507 if (GNUNET_YES == update_meter (pg_start_ctx->hostkey_meter)) 515 if (GNUNET_YES == update_meter (pg_start_ctx->hostkey_meter))
508 { 516 {
509 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
510 "All %d hostkeys created, now creating topology!\n",
511 pg_start_ctx->total);
512 GNUNET_SCHEDULER_cancel (pg_start_ctx->die_task); 517 GNUNET_SCHEDULER_cancel (pg_start_ctx->die_task);
513 /* Set up task in case topology creation doesn't finish 518 /* Set up task in case topology creation doesn't finish
514 * within a reasonable amount of time */ 519 * within a reasonable amount of time */
@@ -549,10 +554,6 @@ internal_hostkey_callback(void *cls, const struct GNUNET_PeerIdentity *id,
549 * 554 *
550 * @param cfg configuration template to use 555 * @param cfg configuration template to use
551 * @param total number of daemons to start 556 * @param total number of daemons to start
552 * @param max_concurrent_connections for testing, how many peers can
553* we connect to simultaneously
554 * @param max_concurrent_ssh when starting with ssh, how many ssh
555 * connections will we allow at once (based on remote hosts allowed!)
556 * @param timeout total time allowed for peers to start 557 * @param timeout total time allowed for peers to start
557 * @param connect_cb function to call each time two daemons are connected 558 * @param connect_cb function to call each time two daemons are connected
558 * @param connect_cb_cls closure for connect_callback 559 * @param connect_cb_cls closure for connect_callback
@@ -560,58 +561,188 @@ internal_hostkey_callback(void *cls, const struct GNUNET_PeerIdentity *id,
560 * @param peergroup_cb_cls closure for peergroup_cb 561 * @param peergroup_cb_cls closure for peergroup_cb
561 * @param hostnames linked list of host structs to use to start peers on 562 * @param hostnames linked list of host structs to use to start peers on
562 * (NULL to run on localhost only) 563 * (NULL to run on localhost only)
563 * @param topology allowed overlay topology
564 * @param restrict_topology blacklist connections to this topology
565 * @param restrict_transports specific transports to blacklist
566 * @param connect_topology topology to connect peers in (defaults to allowed
567 * topology)
568 * @param connect_topology_options options for connect topology
569 * @param connect_topology_option_modifier option modifier for connect topology
570 * @param verbose GNUNET_YES to print progress bars, GNUNET_NO otherwise 564 * @param verbose GNUNET_YES to print progress bars, GNUNET_NO otherwise
571 * 565 *
572 * @return NULL on error, otherwise handle to control peer group 566 * @return NULL on error, otherwise handle to control peer group
573 */ 567 */
574struct GNUNET_TESTING_PeerGroup * 568struct GNUNET_TESTING_PeerGroup *
575GNUNET_TESTING_PeerGroup_start( 569GNUNET_TESTING_peergroup_start(
576 const struct GNUNET_CONFIGURATION_Handle *cfg, 570 const struct GNUNET_CONFIGURATION_Handle *cfg,
577 unsigned int total, 571 unsigned int total,
578 unsigned int max_concurrent_connections,
579 unsigned int max_concurrent_ssh,
580 struct GNUNET_TIME_Relative timeout, 572 struct GNUNET_TIME_Relative timeout,
581 GNUNET_TESTING_NotifyConnection connect_cb, 573 GNUNET_TESTING_NotifyConnection connect_cb,
582 void *connect_cb_cls, 574 void *connect_cb_cls,
583 GNUNET_TESTING_NotifyCompletion peergroup_cb, 575 GNUNET_TESTING_NotifyCompletion peergroup_cb,
584 void *peergroup_cb_cls, 576 void *peergroup_cb_cls,
585 const struct GNUNET_TESTING_Host *hostnames, 577 const struct GNUNET_TESTING_Host *hostnames,
586 enum GNUNET_TESTING_Topology topology, 578 int verbose)
587 enum GNUNET_TESTING_Topology restrict_topology,
588 const char *restrict_transports,
589 enum GNUNET_TESTING_Topology connect_topology,
590 enum GNUNET_TESTING_TopologyOption connect_topology_options,
591 double connect_topology_option_modifier, int verbose)
592{ 579{
593 struct PeerGroupStartupContext *pg_start_ctx; 580 struct PeerGroupStartupContext *pg_start_ctx;
594 581 unsigned long long temp_config_number;
582 char *temp_str;
595 GNUNET_assert(total > 0); 583 GNUNET_assert(total > 0);
596 GNUNET_assert(cfg != NULL); 584 GNUNET_assert(cfg != NULL);
597 585
598 pg_start_ctx = GNUNET_malloc(sizeof(struct PeerGroupStartupContext)); 586 pg_start_ctx = GNUNET_malloc(sizeof(struct PeerGroupStartupContext));
587
588 if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (cfg, "testing",
589 "connect_attempts",
590 &pg_start_ctx->connect_attempts))
591 {
592 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Must provide option %s:%s!\n",
593 "testing", "connect_attempts");
594 GNUNET_free(pg_start_ctx);
595 return NULL;
596 }
597
598 if (GNUNET_OK
599 != GNUNET_CONFIGURATION_get_value_number (cfg, "testing",
600 "max_outstanding_connections",
601 &pg_start_ctx->max_concurrent_connections))
602 {
603 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Must provide option %s:%s!\n",
604 "testing", "max_outstanding_connections");
605 GNUNET_free(pg_start_ctx);
606 return NULL;
607 }
608
609 if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_number (cfg, "testing",
610 "max_concurrent_ssh",
611 &pg_start_ctx->max_concurrent_ssh))
612 {
613 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Must provide option %s:%s!\n",
614 "testing", "max_concurrent_ssh");
615 GNUNET_free(pg_start_ctx);
616 return NULL;
617 }
618
619 if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (cfg, "testing",
620 "peergroup_timeout",
621 &temp_config_number))
622 pg_start_ctx->timeout = GNUNET_TIME_relative_to_absolute(GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,
623 temp_config_number));
624 else
625 {
626 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Must provide option %s:%s!\n",
627 "testing", "peergroup_timeout");
628 GNUNET_free(pg_start_ctx);
629 return NULL;
630 }
631
632
633 /* Read topology related options from the configuration file */
634 temp_str = NULL;
635 if ((GNUNET_YES == GNUNET_CONFIGURATION_get_value_string (cfg, "testing",
636 "topology",
637 &temp_str))
638 && (GNUNET_NO == GNUNET_TESTING_topology_get (&pg_start_ctx->topology, temp_str)))
639 {
640 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
641 "Invalid topology `%s' given for section %s option %s\n",
642 temp_str, "TESTING", "TOPOLOGY");
643 pg_start_ctx->topology = GNUNET_TESTING_TOPOLOGY_CLIQUE; /* Defaults to NONE, so set better default here */
644 }
645 GNUNET_free_non_null(temp_str);
646
647 if (GNUNET_OK
648 != GNUNET_CONFIGURATION_get_value_string (cfg, "testing", "percentage",
649 &temp_str))
650 pg_start_ctx->topology_percentage = 0.5;
651 else
652 {
653 pg_start_ctx->topology_percentage = atof (temp_str);
654 GNUNET_free(temp_str);
655 }
656
657 if (GNUNET_OK
658 != GNUNET_CONFIGURATION_get_value_string (cfg, "testing", "probability",
659 &temp_str))
660 pg_start_ctx->topology_probability = 0.5;
661 else
662 {
663 pg_start_ctx->topology_probability = atof (temp_str);
664 GNUNET_free(temp_str);
665 }
666
667 if ((GNUNET_YES
668 == GNUNET_CONFIGURATION_get_value_string (cfg, "testing",
669 "connect_topology",
670 &temp_str))
671 && (GNUNET_NO == GNUNET_TESTING_topology_get (&pg_start_ctx->connect_topology,
672 temp_str)))
673 {
674 GNUNET_log (
675 GNUNET_ERROR_TYPE_WARNING,
676 "Invalid connect topology `%s' given for section %s option %s\n",
677 temp_str, "TESTING", "CONNECT_TOPOLOGY");
678 }
679 GNUNET_free_non_null(temp_str);
680
681 if ((GNUNET_YES
682 == GNUNET_CONFIGURATION_get_value_string (cfg, "testing",
683 "connect_topology_option",
684 &temp_str))
685 && (GNUNET_NO
686 == GNUNET_TESTING_topology_option_get (&pg_start_ctx->connect_topology_option,
687 temp_str)))
688 {
689 GNUNET_log (
690 GNUNET_ERROR_TYPE_WARNING,
691 "Invalid connect topology option `%s' given for section %s option %s\n",
692 temp_str, "TESTING",
693 "CONNECT_TOPOLOGY_OPTION");
694 pg_start_ctx->connect_topology_option = GNUNET_TESTING_TOPOLOGY_OPTION_ALL; /* Defaults to NONE, set to ALL */
695 }
696 GNUNET_free_non_null(temp_str);
697
698 if (GNUNET_YES
699 == GNUNET_CONFIGURATION_get_value_string (
700 cfg,
701 "testing",
702 "connect_topology_option_modifier",
703 &temp_str))
704 {
705 if (sscanf (temp_str, "%lf",
706 &pg_start_ctx->connect_topology_option_modifier) != 1)
707 {
708 GNUNET_log (
709 GNUNET_ERROR_TYPE_WARNING,
710 _("Invalid value `%s' for option `%s' in section `%s': expected float\n"),
711 temp_str,
712 "connect_topology_option_modifier", "TESTING");
713 GNUNET_free (temp_str);
714 GNUNET_free(pg_start_ctx);
715 return NULL;
716 }
717 GNUNET_free (temp_str);
718 }
719
720 if (GNUNET_YES
721 != GNUNET_CONFIGURATION_get_value_string (cfg, "testing",
722 "blacklist_transports",
723 &pg_start_ctx->restrict_transports))
724 pg_start_ctx->restrict_transports = NULL;
725
726 if ((GNUNET_YES
727 == GNUNET_CONFIGURATION_get_value_string (cfg, "testing",
728 "blacklist_topology",
729 &temp_str))
730 && (GNUNET_NO == GNUNET_TESTING_topology_get (&pg_start_ctx->restrict_topology,
731 temp_str)))
732 {
733 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
734 "Invalid topology `%s' given for section %s option %s\n",
735 temp_str, "TESTING", "BLACKLIST_TOPOLOGY");
736 }
737 GNUNET_free_non_null(temp_str);
738
599 pg_start_ctx->cfg = cfg; 739 pg_start_ctx->cfg = cfg;
600 pg_start_ctx->total = total; 740 pg_start_ctx->total = total;
601 pg_start_ctx->peers_left = total; 741 pg_start_ctx->peers_left = total;
602 pg_start_ctx->max_concurrent_connections = max_concurrent_connections;
603 pg_start_ctx->max_concurrent_ssh = max_concurrent_ssh;
604 pg_start_ctx->timeout = GNUNET_TIME_relative_to_absolute(timeout);
605 pg_start_ctx->connect_cb = connect_cb_cls; 742 pg_start_ctx->connect_cb = connect_cb_cls;
606 pg_start_ctx->peergroup_cb = peergroup_cb; 743 pg_start_ctx->peergroup_cb = peergroup_cb;
607 pg_start_ctx->peergroup_cb_cls = peergroup_cb_cls; 744 pg_start_ctx->peergroup_cb_cls = peergroup_cb_cls;
608 pg_start_ctx->hostnames = hostnames; 745 pg_start_ctx->hostnames = hostnames;
609 pg_start_ctx->topology = topology;
610 pg_start_ctx->restrict_topology = restrict_topology;
611 pg_start_ctx->restrict_transports = restrict_transports;
612 pg_start_ctx->connect_topology = connect_topology;
613 pg_start_ctx->connect_topology_option = connect_topology_options;
614 pg_start_ctx->connect_topology_option_modifier = connect_topology_option_modifier;
615 pg_start_ctx->verbose = verbose; 746 pg_start_ctx->verbose = verbose;
616 pg_start_ctx->hostkey_meter = create_meter (pg_start_ctx->peers_left, "Hostkeys created ", pg_start_ctx->verbose); 747 pg_start_ctx->hostkey_meter = create_meter (pg_start_ctx->peers_left, "Hostkeys created ", pg_start_ctx->verbose);
617 pg_start_ctx->peer_start_meter = create_meter (pg_start_ctx->peers_left, "Peers started ", pg_start_ctx->verbose); 748 pg_start_ctx->peer_start_meter = create_meter (pg_start_ctx->peers_left, "Peers started ", pg_start_ctx->verbose);
@@ -640,5 +771,4 @@ GNUNET_TESTING_PeerGroup_start(
640 return pg_start_ctx->pg; 771 return pg_start_ctx->pg;
641} 772}
642 773
643
644/* end of testing_peergroup.c */ 774/* end of testing_peergroup.c */