diff options
author | xrs <xrs@mail36.net> | 2017-06-22 21:53:06 +0200 |
---|---|---|
committer | xrs <xrs@mail36.net> | 2017-06-22 21:53:06 +0200 |
commit | ebc75d1fb3b115c25a34c9a205af3f3c83279758 (patch) | |
tree | 06fef090b22efe228c827a8e74d6534f93dcb519 /src | |
parent | b8c0a4837377e4953b05a7df1b6ab6ec31c704a9 (diff) | |
download | gnunet-ebc75d1fb3b115c25a34c9a205af3f3c83279758.tar.gz gnunet-ebc75d1fb3b115c25a34c9a205af3f3c83279758.zip |
Update multicast test
Diffstat (limited to 'src')
-rw-r--r-- | src/multicast/Makefile.am | 2 | ||||
-rw-r--r-- | src/multicast/gnunet-service-multicast.c | 9 | ||||
-rw-r--r-- | src/multicast/test_multicast.conf | 45 | ||||
-rw-r--r-- | src/multicast/test_multicast_multipeer.c | 93 |
4 files changed, 106 insertions, 43 deletions
diff --git a/src/multicast/Makefile.am b/src/multicast/Makefile.am index 8a754d3db..a4054f5f6 100644 --- a/src/multicast/Makefile.am +++ b/src/multicast/Makefile.am | |||
@@ -51,7 +51,7 @@ gnunet_service_multicast_LDADD = \ | |||
51 | $(GN_LIBINTL) | 51 | $(GN_LIBINTL) |
52 | 52 | ||
53 | check_PROGRAMS = \ | 53 | check_PROGRAMS = \ |
54 | test_multicast_multipeer | 54 | test_multicast_multipeer |
55 | # test_multicast | 55 | # test_multicast |
56 | # test_multicast_2peers | 56 | # test_multicast_2peers |
57 | 57 | ||
diff --git a/src/multicast/gnunet-service-multicast.c b/src/multicast/gnunet-service-multicast.c index 9683efcff..39623e7b1 100644 --- a/src/multicast/gnunet-service-multicast.c +++ b/src/multicast/gnunet-service-multicast.c | |||
@@ -1504,13 +1504,12 @@ handle_client_member_join (void *cls, | |||
1504 | cl->client = client; | 1504 | cl->client = client; |
1505 | GNUNET_CONTAINER_DLL_insert (grp->clients_head, grp->clients_tail, cl); | 1505 | GNUNET_CONTAINER_DLL_insert (grp->clients_head, grp->clients_tail, cl); |
1506 | 1506 | ||
1507 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
1508 | "%p Client connected to group %s..\n", | ||
1509 | mem, GNUNET_h2s (&grp->pub_key_hash)); | ||
1510 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&mem->pub_key); | 1507 | char *str = GNUNET_CRYPTO_ecdsa_public_key_to_string (&mem->pub_key); |
1511 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 1508 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
1512 | "%p ..as member %s (%s).\n", | 1509 | "Client connected to group %s as member %s (%s).\n", |
1513 | mem, GNUNET_h2s (&mem->pub_key_hash), str); | 1510 | GNUNET_h2s (&grp->pub_key_hash), |
1511 | GNUNET_h2s (&mem->pub_key_hash), | ||
1512 | str); | ||
1514 | GNUNET_free (str); | 1513 | GNUNET_free (str); |
1515 | 1514 | ||
1516 | if (NULL != mem->join_dcsn) | 1515 | if (NULL != mem->join_dcsn) |
diff --git a/src/multicast/test_multicast.conf b/src/multicast/test_multicast.conf index 3081aeecc..3dc96adbb 100644 --- a/src/multicast/test_multicast.conf +++ b/src/multicast/test_multicast.conf | |||
@@ -1,12 +1,55 @@ | |||
1 | [testbed] | 1 | [testbed] |
2 | HOSTNAME = localhost | 2 | HOSTNAME = localhost |
3 | #OVERLAY_TOPOLOGY = LINE | ||
3 | 4 | ||
4 | [arm] | 5 | [arm] |
5 | GLOBAL_POSTFIX=-L ERROR | 6 | GLOBAL_POSTFIX=-L ERROR |
6 | 7 | ||
8 | [hostlist] | ||
9 | SERVERS = http://localhost:8080/ | ||
10 | |||
7 | [multicast] | 11 | [multicast] |
8 | #PREFIX = xterm -T peer -e gdb --args | 12 | #PREFIX = tmux split-window -v gdb -x ./cmd.gdb --args |
9 | UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-multicast.sock | 13 | UNIXPATH = $GNUNET_RUNTIME_DIR/gnunet-service-multicast.sock |
10 | 14 | ||
11 | [vpn] | 15 | [vpn] |
12 | AUTOSTART = NO | 16 | AUTOSTART = NO |
17 | |||
18 | [peerinfo] | ||
19 | # Do not use shipped gnunet HELLOs | ||
20 | USE_INCLUDED_HELLOS = NO | ||
21 | |||
22 | # Option to disable all disk IO; only useful for testbed runs | ||
23 | # (large-scale experiments); disables persistence of HELLOs! | ||
24 | NO_IO = YES | ||
25 | |||
26 | [nat] | ||
27 | ENABLE_UPNP = NO | ||
28 | |||
29 | [fs] | ||
30 | FORCESTART = NO | ||
31 | AUTOSTART = NO | ||
32 | |||
33 | [vpn] | ||
34 | FORCESTART = NO | ||
35 | AUTOSTART = NO | ||
36 | |||
37 | [revocation] | ||
38 | FORCESTART = NO | ||
39 | AUTOSTART = NO | ||
40 | |||
41 | [gns] | ||
42 | FORCESTART = NO | ||
43 | AUTOSTART = NO | ||
44 | |||
45 | [namestore] | ||
46 | FORCESTART = NO | ||
47 | AUTOSTART = NO | ||
48 | |||
49 | [namecache] | ||
50 | FORCESTART = NO | ||
51 | AUTOSTART = NO | ||
52 | |||
53 | [topology] | ||
54 | FORCESTART = NO | ||
55 | AUTOSTART = NO | ||
diff --git a/src/multicast/test_multicast_multipeer.c b/src/multicast/test_multicast_multipeer.c index c2078abf9..5c3664f35 100644 --- a/src/multicast/test_multicast_multipeer.c +++ b/src/multicast/test_multicast_multipeer.c | |||
@@ -33,14 +33,15 @@ | |||
33 | #include "gnunet_testbed_service.h" | 33 | #include "gnunet_testbed_service.h" |
34 | #include "gnunet_multicast_service.h" | 34 | #include "gnunet_multicast_service.h" |
35 | 35 | ||
36 | #define NUM_PEERS 3 | 36 | #define NUM_PEERS 2 |
37 | 37 | ||
38 | struct multicast_peer | 38 | struct multicast_peer |
39 | { | 39 | { |
40 | int peer; /* peer number */ | 40 | int peer; /* peer number */ |
41 | const struct GNUNET_PeerIdentity *id; | ||
41 | struct GNUNET_TESTBED_Operation *op; /* not yet in use */ | 42 | struct GNUNET_TESTBED_Operation *op; /* not yet in use */ |
42 | struct GNUNET_TESTBED_Operation *pi_op; /* not yet in use */ | 43 | struct GNUNET_TESTBED_Operation *pi_op; /* not yet in use */ |
43 | uint8_t test_ok; | 44 | int test_ok; |
44 | }; | 45 | }; |
45 | 46 | ||
46 | static void service_connect (void *cls, | 47 | static void service_connect (void *cls, |
@@ -54,7 +55,6 @@ static struct GNUNET_TESTBED_Peer **peers; | |||
54 | // FIXME: refactor | 55 | // FIXME: refactor |
55 | static struct GNUNET_TESTBED_Operation *op[NUM_PEERS]; | 56 | static struct GNUNET_TESTBED_Operation *op[NUM_PEERS]; |
56 | static struct GNUNET_TESTBED_Operation *pi_op[NUM_PEERS]; | 57 | static struct GNUNET_TESTBED_Operation *pi_op[NUM_PEERS]; |
57 | static const struct GNUNET_PeerIdentity *peer_id[NUM_PEERS]; | ||
58 | 58 | ||
59 | static struct GNUNET_MULTICAST_Origin *origin; | 59 | static struct GNUNET_MULTICAST_Origin *origin; |
60 | static struct GNUNET_MULTICAST_Member *member[NUM_PEERS]; /* first element always empty */ | 60 | static struct GNUNET_MULTICAST_Member *member[NUM_PEERS]; /* first element always empty */ |
@@ -80,16 +80,6 @@ static int result; | |||
80 | static void | 80 | static void |
81 | shutdown_task (void *cls) | 81 | shutdown_task (void *cls) |
82 | { | 82 | { |
83 | if (NULL != mc_peers) | ||
84 | { | ||
85 | for (int i=0; i < NUM_PEERS; i++) | ||
86 | { | ||
87 | GNUNET_free (mc_peers[i]); | ||
88 | mc_peers[i] = NULL; | ||
89 | } | ||
90 | GNUNET_free (mc_peers); | ||
91 | } | ||
92 | |||
93 | for (int i=0;i<NUM_PEERS;i++) | 83 | for (int i=0;i<NUM_PEERS;i++) |
94 | { | 84 | { |
95 | if (NULL != op[i]) | 85 | if (NULL != op[i]) |
@@ -104,6 +94,16 @@ shutdown_task (void *cls) | |||
104 | } | 94 | } |
105 | } | 95 | } |
106 | 96 | ||
97 | if (NULL != mc_peers) | ||
98 | { | ||
99 | for (int i=0; i < NUM_PEERS; i++) | ||
100 | { | ||
101 | GNUNET_free (mc_peers[i]); | ||
102 | mc_peers[i] = NULL; | ||
103 | } | ||
104 | GNUNET_free (mc_peers); | ||
105 | } | ||
106 | |||
107 | if (NULL != timeout_tid) | 107 | if (NULL != timeout_tid) |
108 | { | 108 | { |
109 | GNUNET_SCHEDULER_cancel (timeout_tid); | 109 | GNUNET_SCHEDULER_cancel (timeout_tid); |
@@ -130,8 +130,9 @@ member_join_request (void *cls, | |||
130 | { | 130 | { |
131 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; | 131 | struct multicast_peer *mc_peer = (struct multicast_peer*)cls; |
132 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 132 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
133 | "Peer #%u sent a join request.\n", mc_peer->peer); | 133 | "Peer #%u (%s) sent a join request.\n", |
134 | 134 | mc_peer->peer, | |
135 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
135 | } | 136 | } |
136 | 137 | ||
137 | 138 | ||
@@ -165,7 +166,10 @@ member_join_decision (void *cls, | |||
165 | struct GNUNET_MULTICAST_MemberTransmitHandle *req; | 166 | struct GNUNET_MULTICAST_MemberTransmitHandle *req; |
166 | 167 | ||
167 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 168 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
168 | "Peer #%u received a decision from origin: %s\n", mc_peer->peer, (GNUNET_YES == is_admitted)?"accepted":"rejected"); | 169 | "Peer #%u (%s) received a decision from origin: %s\n", |
170 | mc_peer->peer, | ||
171 | GNUNET_i2s (mc_peers[mc_peer->peer]->id), | ||
172 | (GNUNET_YES == is_admitted)?"accepted":"rejected"); | ||
169 | 173 | ||
170 | if (GNUNET_YES == is_admitted) | 174 | if (GNUNET_YES == is_admitted) |
171 | { | 175 | { |
@@ -203,29 +207,30 @@ member_message (void *cls, | |||
203 | if (0 != strncmp ("pong", (char *)&msg[1], 4)) | 207 | if (0 != strncmp ("pong", (char *)&msg[1], 4)) |
204 | { | 208 | { |
205 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 209 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
206 | "peer #%i did not receive pong\n", | 210 | "peer #%i (%s) did not receive pong\n", |
207 | mc_peer->peer); | 211 | mc_peer->peer, |
212 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
208 | 213 | ||
209 | result = GNUNET_SYSERR; | 214 | result = GNUNET_SYSERR; |
210 | GNUNET_SCHEDULER_shutdown (); | 215 | GNUNET_SCHEDULER_shutdown (); |
211 | } | 216 | } |
212 | 217 | ||
213 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 218 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
214 | "peer #%i receives: %s\n", | 219 | "peer #%i (%s) receives: %s\n", |
215 | mc_peer->peer, | 220 | mc_peer->peer, |
221 | GNUNET_i2s (mc_peers[mc_peer->peer]->id), | ||
216 | (char *)&msg[1]); | 222 | (char *)&msg[1]); |
217 | 223 | ||
218 | mc_peer->test_ok = GNUNET_OK; | 224 | mc_peer->test_ok = GNUNET_OK; |
219 | 225 | ||
220 | // FIXME: ugly test function | 226 | // FIXME: ugly test function |
221 | /* | 227 | // (we start with 1 because 0 is origin) |
222 | for (int i=1; i<NUM_PEERS; i++) | 228 | for (int i=1; i<NUM_PEERS; i++) |
223 | if (!mc_peers[i]->test_ok) | 229 | if (GNUNET_NO == mc_peers[i]->test_ok) |
224 | return; | 230 | return; |
225 | 231 | ||
226 | result = GNUNET_YES; | 232 | result = GNUNET_YES; |
227 | GNUNET_SCHEDULER_shutdown(); | 233 | GNUNET_SCHEDULER_shutdown(); |
228 | */ | ||
229 | } | 234 | } |
230 | 235 | ||
231 | 236 | ||
@@ -345,7 +350,9 @@ multicast_da (void *cls, | |||
345 | else | 350 | else |
346 | { | 351 | { |
347 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 352 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
348 | "peer #%u parting from multicast group\n", mc_peer->peer); | 353 | "peer #%u (%s) parting from multicast group\n", |
354 | mc_peer->peer, | ||
355 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
349 | 356 | ||
350 | GNUNET_MULTICAST_member_part (member[mc_peer->peer], NULL, cls); | 357 | GNUNET_MULTICAST_member_part (member[mc_peer->peer], NULL, cls); |
351 | } | 358 | } |
@@ -381,9 +388,12 @@ multicast_ca (void *cls, | |||
381 | // Get members keys | 388 | // Get members keys |
382 | member_pub_key[mc_peer->peer] = GNUNET_new (struct GNUNET_CRYPTO_EcdsaPublicKey); | 389 | member_pub_key[mc_peer->peer] = GNUNET_new (struct GNUNET_CRYPTO_EcdsaPublicKey); |
383 | member_key[mc_peer->peer] = GNUNET_CRYPTO_ecdsa_key_create (); | 390 | member_key[mc_peer->peer] = GNUNET_CRYPTO_ecdsa_key_create (); |
384 | GNUNET_CRYPTO_ecdsa_key_get_public (member_key[mc_peer->peer], member_pub_key[mc_peer->peer]); | 391 | GNUNET_CRYPTO_ecdsa_key_get_public (member_key[mc_peer->peer], |
392 | member_pub_key[mc_peer->peer]); | ||
385 | 393 | ||
386 | sprintf(data, "Hi, I am peer #%u. Can I enter?", mc_peer->peer); | 394 | sprintf(data, "Hi, I am peer #%u (%s). Can I enter?", |
395 | mc_peer->peer, | ||
396 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
387 | uint8_t data_size = strlen (data) + 1; | 397 | uint8_t data_size = strlen (data) + 1; |
388 | join_msg = GNUNET_malloc (sizeof (join_msg) + data_size); | 398 | join_msg = GNUNET_malloc (sizeof (join_msg) + data_size); |
389 | join_msg->size = htons (sizeof (join_msg) + data_size); | 399 | join_msg->size = htons (sizeof (join_msg) + data_size); |
@@ -391,12 +401,14 @@ multicast_ca (void *cls, | |||
391 | GNUNET_memcpy (&join_msg[1], data, data_size); | 401 | GNUNET_memcpy (&join_msg[1], data, data_size); |
392 | 402 | ||
393 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 403 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
394 | "Peer #%u tries to join multicast group\n", mc_peer->peer); | 404 | "Peer #%u (%s) tries to join multicast group\n", |
405 | mc_peer->peer, | ||
406 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
395 | 407 | ||
396 | return GNUNET_MULTICAST_member_join (cfg, | 408 | return GNUNET_MULTICAST_member_join (cfg, |
397 | group_pub_key, | 409 | group_pub_key, |
398 | member_key[mc_peer->peer], | 410 | member_key[mc_peer->peer], |
399 | peer_id[0], | 411 | mc_peers[0]->id, |
400 | 0, | 412 | 0, |
401 | NULL, | 413 | NULL, |
402 | join_msg, /* join message */ | 414 | join_msg, /* join message */ |
@@ -424,13 +436,17 @@ peer_information_cb (void *cls, | |||
424 | GNUNET_SCHEDULER_shutdown (); | 436 | GNUNET_SCHEDULER_shutdown (); |
425 | } | 437 | } |
426 | 438 | ||
427 | peer_id[mc_peer->peer] = pinfo->result.id; | 439 | mc_peers[mc_peer->peer]->id = pinfo->result.id; |
428 | 440 | ||
429 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 441 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
430 | "Got peer information of %s (%s)\n", (0==mc_peer->peer)?"origin":"member" ,GNUNET_i2s(pinfo->result.id)); | 442 | "Got peer information of %s (%s)\n", |
443 | (0 == mc_peer->peer)? "origin" : "member", | ||
444 | GNUNET_i2s (pinfo->result.id)); | ||
431 | 445 | ||
432 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 446 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
433 | "Create peer #%u\n", mc_peer->peer); | 447 | "Create peer #%u (%s)\n", |
448 | mc_peer->peer, | ||
449 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
434 | 450 | ||
435 | if (0 != mc_peer->peer) | 451 | if (0 != mc_peer->peer) |
436 | { | 452 | { |
@@ -461,13 +477,18 @@ service_connect (void *cls, | |||
461 | if (NULL == ca_result) | 477 | if (NULL == ca_result) |
462 | { | 478 | { |
463 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 479 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
464 | "Connection adapter not created for peer #%u\n", mc_peer->peer); | 480 | "Connection adapter not created for peer #%u (%s)\n", |
481 | mc_peer->peer, | ||
482 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
483 | |||
465 | result = GNUNET_SYSERR; | 484 | result = GNUNET_SYSERR; |
466 | GNUNET_SCHEDULER_shutdown(); | 485 | GNUNET_SCHEDULER_shutdown(); |
467 | } | 486 | } |
468 | 487 | ||
469 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 488 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
470 | "Connected to multicast service of peer #%u\n", mc_peer->peer); | 489 | "Connected to multicast service of peer #%u (%s)\n", |
490 | mc_peer->peer, | ||
491 | GNUNET_i2s (mc_peers[mc_peer->peer]->id)); | ||
471 | 492 | ||
472 | if (0 == mc_peer->peer) | 493 | if (0 == mc_peer->peer) |
473 | { | 494 | { |
@@ -525,9 +546,6 @@ testbed_master (void *cls, | |||
525 | 546 | ||
526 | peers = p; | 547 | peers = p; |
527 | 548 | ||
528 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
529 | "Create origin peer\n"); | ||
530 | |||
531 | mc_peers = GNUNET_new_array (NUM_PEERS, struct multicast_peer*); | 549 | mc_peers = GNUNET_new_array (NUM_PEERS, struct multicast_peer*); |
532 | 550 | ||
533 | // Create test contexts for members | 551 | // Create test contexts for members |
@@ -538,6 +556,9 @@ testbed_master (void *cls, | |||
538 | mc_peers[i]->test_ok = GNUNET_NO; | 556 | mc_peers[i]->test_ok = GNUNET_NO; |
539 | } | 557 | } |
540 | 558 | ||
559 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
560 | "Create origin peer\n"); | ||
561 | |||
541 | op[0] = GNUNET_TESTBED_service_connect (NULL, /* Closure for operation */ | 562 | op[0] = GNUNET_TESTBED_service_connect (NULL, /* Closure for operation */ |
542 | peers[0], /* The peer whose service to connect to */ | 563 | peers[0], /* The peer whose service to connect to */ |
543 | "multicast", /* The name of the service */ | 564 | "multicast", /* The name of the service */ |
@@ -553,7 +574,7 @@ testbed_master (void *cls, | |||
553 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); /* Schedule a new task on shutdown */ | 574 | GNUNET_SCHEDULER_add_shutdown (&shutdown_task, NULL); /* Schedule a new task on shutdown */ |
554 | 575 | ||
555 | /* Schedule the shutdown task with a delay of a few Seconds */ | 576 | /* Schedule the shutdown task with a delay of a few Seconds */ |
556 | timeout_tid = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 80), | 577 | timeout_tid = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 400), |
557 | &timeout_task, NULL); | 578 | &timeout_task, NULL); |
558 | } | 579 | } |
559 | 580 | ||