diff options
Diffstat (limited to 'src/chat/test_chat_private.c')
-rw-r--r-- | src/chat/test_chat_private.c | 113 |
1 files changed, 46 insertions, 67 deletions
diff --git a/src/chat/test_chat_private.c b/src/chat/test_chat_private.c index 507e333c9..acec5bcf0 100644 --- a/src/chat/test_chat_private.c +++ b/src/chat/test_chat_private.c | |||
@@ -132,12 +132,13 @@ setup_peer (struct PeerContext *p, const char *cfgname) | |||
132 | { | 132 | { |
133 | p->cfg = GNUNET_CONFIGURATION_create (); | 133 | p->cfg = GNUNET_CONFIGURATION_create (); |
134 | #if START_ARM | 134 | #if START_ARM |
135 | p->arm_proc = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm", | 135 | p->arm_proc = |
136 | "gnunet-service-arm", | 136 | GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm", |
137 | "gnunet-service-arm", | ||
137 | #if VERBOSE | 138 | #if VERBOSE |
138 | "-L", "DEBUG", | 139 | "-L", "DEBUG", |
139 | #endif | 140 | #endif |
140 | "-c", cfgname, NULL); | 141 | "-c", cfgname, NULL); |
141 | #endif | 142 | #endif |
142 | GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname)); | 143 | GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_load (p->cfg, cfgname)); |
143 | } | 144 | } |
@@ -151,8 +152,7 @@ stop_arm (struct PeerContext *p) | |||
151 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); | 152 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "kill"); |
152 | if (GNUNET_OS_process_wait (p->arm_proc) != GNUNET_OK) | 153 | if (GNUNET_OS_process_wait (p->arm_proc) != GNUNET_OK) |
153 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "waitpid"); | 154 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_WARNING, "waitpid"); |
154 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 155 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ARM process %u stopped\n", |
155 | "ARM process %u stopped\n", | ||
156 | GNUNET_OS_process_get_pid (p->arm_proc)); | 156 | GNUNET_OS_process_get_pid (p->arm_proc)); |
157 | GNUNET_OS_process_close (p->arm_proc); | 157 | GNUNET_OS_process_close (p->arm_proc); |
158 | p->arm_proc = NULL; | 158 | p->arm_proc = NULL; |
@@ -215,8 +215,7 @@ join_cb (void *cls) | |||
215 | 215 | ||
216 | 216 | ||
217 | static int | 217 | static int |
218 | member_list_cb (void *cls, | 218 | member_list_cb (void *cls, const struct GNUNET_CONTAINER_MetaData *member_info, |
219 | const struct GNUNET_CONTAINER_MetaData *member_info, | ||
220 | const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *member_id, | 219 | const struct GNUNET_CRYPTO_RsaPublicKeyBinaryEncoded *member_id, |
221 | enum GNUNET_CHAT_MsgOptions options) | 220 | enum GNUNET_CHAT_MsgOptions options) |
222 | { | 221 | { |
@@ -224,11 +223,10 @@ member_list_cb (void *cls, | |||
224 | GNUNET_HashCode sender; | 223 | GNUNET_HashCode sender; |
225 | 224 | ||
226 | #if VERBOSE | 225 | #if VERBOSE |
227 | printf ("%s - told that %s has %s\n", | 226 | printf ("%s - told that %s has %s\n", want->me, |
228 | want->me, | 227 | member_info == |
229 | member_info == NULL ? NULL | 228 | NULL ? NULL : GNUNET_CONTAINER_meta_data_get_by_type (member_info, |
230 | : GNUNET_CONTAINER_meta_data_get_by_type (member_info, | 229 | EXTRACTOR_METATYPE_TITLE), |
231 | EXTRACTOR_METATYPE_TITLE), | ||
232 | member_info == NULL ? "left" : "joined"); | 230 | member_info == NULL ? "left" : "joined"); |
233 | #endif | 231 | #endif |
234 | GNUNET_CRYPTO_hash (member_id, | 232 | GNUNET_CRYPTO_hash (member_id, |
@@ -241,12 +239,10 @@ member_list_cb (void *cls, | |||
241 | (((member_info == NULL) && (want->meta == NULL)) || | 239 | (((member_info == NULL) && (want->meta == NULL)) || |
242 | ((member_info != NULL) && | 240 | ((member_info != NULL) && |
243 | (((want->meta != NULL) && | 241 | (((want->meta != NULL) && |
244 | GNUNET_CONTAINER_meta_data_test_equal (member_info, | 242 | GNUNET_CONTAINER_meta_data_test_equal (member_info, want->meta)) || |
245 | want->meta)) || | ||
246 | ((want->meta2 != NULL) && | 243 | ((want->meta2 != NULL) && |
247 | GNUNET_CONTAINER_meta_data_test_equal (member_info, | 244 | GNUNET_CONTAINER_meta_data_test_equal (member_info, want->meta2))))) |
248 | want->meta2))))) && | 245 | && (options == want->opt)) |
249 | (options == want->opt)) | ||
250 | { | 246 | { |
251 | /* remember Bob's public key, we need it to send private message */ | 247 | /* remember Bob's public key, we need it to send private message */ |
252 | if (NULL == bob_public_key && | 248 | if (NULL == bob_public_key && |
@@ -280,30 +276,25 @@ member_list_cb (void *cls, | |||
280 | 276 | ||
281 | 277 | ||
282 | static int | 278 | static int |
283 | receive_cb (void *cls, | 279 | receive_cb (void *cls, struct GNUNET_CHAT_Room *room, |
284 | struct GNUNET_CHAT_Room *room, | ||
285 | const GNUNET_HashCode * sender, | 280 | const GNUNET_HashCode * sender, |
286 | const struct GNUNET_CONTAINER_MetaData *meta, | 281 | const struct GNUNET_CONTAINER_MetaData *meta, const char *message, |
287 | const char *message, | ||
288 | struct GNUNET_TIME_Absolute timestamp, | 282 | struct GNUNET_TIME_Absolute timestamp, |
289 | enum GNUNET_CHAT_MsgOptions options) | 283 | enum GNUNET_CHAT_MsgOptions options) |
290 | { | 284 | { |
291 | struct Wanted *want = cls; | 285 | struct Wanted *want = cls; |
292 | 286 | ||
293 | #if VERBOSE | 287 | #if VERBOSE |
294 | printf ("%s - told that %s said '%s'\n", | 288 | printf ("%s - told that %s said '%s'\n", want->me, |
295 | want->me, | 289 | meta == NULL ? NULL : GNUNET_CONTAINER_meta_data_get_by_type (meta, |
296 | meta == NULL ? NULL | 290 | EXTRACTOR_METATYPE_TITLE), |
297 | : GNUNET_CONTAINER_meta_data_get_by_type (meta, | ||
298 | EXTRACTOR_METATYPE_TITLE), | ||
299 | message); | 291 | message); |
300 | #endif | 292 | #endif |
301 | 293 | ||
302 | if ((want->msg != NULL) && (0 == strcmp (message, want->msg)) && | 294 | if ((want->msg != NULL) && (0 == strcmp (message, want->msg)) && |
303 | (((sender == NULL) && (want->sender == NULL)) || | 295 | (((sender == NULL) && (want->sender == NULL)) || |
304 | ((sender != NULL) && (want->sender != NULL) && | 296 | ((sender != NULL) && (want->sender != NULL) && |
305 | (0 == memcmp (sender, want->sender, | 297 | (0 == memcmp (sender, want->sender, sizeof (GNUNET_HashCode))))) && |
306 | sizeof (GNUNET_HashCode))))) && | ||
307 | (GNUNET_CONTAINER_meta_data_test_equal (meta, want->meta)) && | 298 | (GNUNET_CONTAINER_meta_data_test_equal (meta, want->meta)) && |
308 | (options == want->opt) && | 299 | (options == want->opt) && |
309 | /* Not == since the library sets the actual timestamp, so it may be | 300 | /* Not == since the library sets the actual timestamp, so it may be |
@@ -444,12 +435,11 @@ send_from_alice_to_bob (void *cls, | |||
444 | carol_wanted.opt = 0; | 435 | carol_wanted.opt = 0; |
445 | carol_wanted.next_task = NULL; | 436 | carol_wanted.next_task = NULL; |
446 | carol_wanted.next_task_cls = NULL; | 437 | carol_wanted.next_task_cls = NULL; |
447 | GNUNET_CHAT_send_message (alice_room, | 438 | GNUNET_CHAT_send_message (alice_room, "Hi Bob!", GNUNET_CHAT_MSG_PRIVATE, |
448 | "Hi Bob!", | 439 | bob_public_key, &seq); |
449 | GNUNET_CHAT_MSG_PRIVATE, bob_public_key, &seq); | 440 | finish_task = |
450 | finish_task = GNUNET_SCHEDULER_add_delayed (PM_TIMEOUT, | 441 | GNUNET_SCHEDULER_add_delayed (PM_TIMEOUT, &wait_until_all_ready, |
451 | &wait_until_all_ready, | 442 | &disconnect_carol); |
452 | &disconnect_carol); | ||
453 | } | 443 | } |
454 | 444 | ||
455 | 445 | ||
@@ -508,10 +498,8 @@ join_carol_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
508 | carol_wanted.next_task_cls = NULL; | 498 | carol_wanted.next_task_cls = NULL; |
509 | carol_room = | 499 | carol_room = |
510 | GNUNET_CHAT_join_room (is_p2p ? p3.cfg : p1.cfg, "carol", carol_meta, | 500 | GNUNET_CHAT_join_room (is_p2p ? p3.cfg : p1.cfg, "carol", carol_meta, |
511 | "test", -1, | 501 | "test", -1, &join_cb, &carol_wanted, &receive_cb, |
512 | &join_cb, &carol_wanted, | 502 | &carol_wanted, &member_list_cb, &carol_wanted, |
513 | &receive_cb, &carol_wanted, | ||
514 | &member_list_cb, &carol_wanted, | ||
515 | NULL, NULL, &carol); | 503 | NULL, NULL, &carol); |
516 | if (NULL == carol_room) | 504 | if (NULL == carol_room) |
517 | { | 505 | { |
@@ -543,11 +531,10 @@ join_bob_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
543 | bob_wanted.next_task_cls = NULL; | 531 | bob_wanted.next_task_cls = NULL; |
544 | bob_ready = GNUNET_NO; | 532 | bob_ready = GNUNET_NO; |
545 | bob_room = | 533 | bob_room = |
546 | GNUNET_CHAT_join_room (is_p2p ? p2.cfg : p1.cfg, "bob", bob_meta, | 534 | GNUNET_CHAT_join_room (is_p2p ? p2.cfg : p1.cfg, "bob", bob_meta, "test", |
547 | "test", -1, | 535 | -1, &join_cb, &bob_wanted, &receive_cb, |
548 | &join_cb, &bob_wanted, | 536 | &bob_wanted, &member_list_cb, &bob_wanted, NULL, |
549 | &receive_cb, &bob_wanted, | 537 | NULL, &bob); |
550 | &member_list_cb, &bob_wanted, NULL, NULL, &bob); | ||
551 | if (NULL == bob_room) | 538 | if (NULL == bob_room) |
552 | { | 539 | { |
553 | GNUNET_SCHEDULER_cancel (kill_task); | 540 | GNUNET_SCHEDULER_cancel (kill_task); |
@@ -568,12 +555,10 @@ join_alice_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
568 | alice_wanted.next_task = &join_bob_task; | 555 | alice_wanted.next_task = &join_bob_task; |
569 | alice_wanted.next_task_cls = NULL; | 556 | alice_wanted.next_task_cls = NULL; |
570 | alice_room = | 557 | alice_room = |
571 | GNUNET_CHAT_join_room (p1.cfg, "alice", alice_meta, | 558 | GNUNET_CHAT_join_room (p1.cfg, "alice", alice_meta, "test", -1, &join_cb, |
572 | "test", -1, | 559 | &alice_wanted, &receive_cb, &alice_wanted, |
573 | &join_cb, &alice_wanted, | 560 | &member_list_cb, &alice_wanted, NULL, NULL, |
574 | &receive_cb, &alice_wanted, | 561 | &alice); |
575 | &member_list_cb, &alice_wanted, | ||
576 | NULL, NULL, &alice); | ||
577 | if (NULL == alice_room) | 562 | if (NULL == alice_room) |
578 | { | 563 | { |
579 | GNUNET_SCHEDULER_cancel (kill_task); | 564 | GNUNET_SCHEDULER_cancel (kill_task); |
@@ -584,9 +569,8 @@ join_alice_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
584 | 569 | ||
585 | 570 | ||
586 | static void | 571 | static void |
587 | run (void *cls, | 572 | run (void *cls, char *const *args, const char *cfgfile, |
588 | char *const *args, | 573 | const struct GNUNET_CONFIGURATION_Handle *cfg) |
589 | const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *cfg) | ||
590 | { | 574 | { |
591 | if (is_p2p) | 575 | if (is_p2p) |
592 | { | 576 | { |
@@ -604,24 +588,19 @@ run (void *cls, | |||
604 | bob_wanted.me = "Bob"; | 588 | bob_wanted.me = "Bob"; |
605 | carol_wanted.me = "Carol"; | 589 | carol_wanted.me = "Carol"; |
606 | alice_meta = GNUNET_CONTAINER_meta_data_create (); | 590 | alice_meta = GNUNET_CONTAINER_meta_data_create (); |
607 | GNUNET_CONTAINER_meta_data_insert (alice_meta, | 591 | GNUNET_CONTAINER_meta_data_insert (alice_meta, "<gnunet>", |
608 | "<gnunet>", | ||
609 | EXTRACTOR_METATYPE_TITLE, | 592 | EXTRACTOR_METATYPE_TITLE, |
610 | EXTRACTOR_METAFORMAT_UTF8, | 593 | EXTRACTOR_METAFORMAT_UTF8, "text/plain", |
611 | "text/plain", | ||
612 | "Alice", strlen ("Alice") + 1); | 594 | "Alice", strlen ("Alice") + 1); |
613 | bob_meta = GNUNET_CONTAINER_meta_data_create (); | 595 | bob_meta = GNUNET_CONTAINER_meta_data_create (); |
614 | GNUNET_CONTAINER_meta_data_insert (bob_meta, | 596 | GNUNET_CONTAINER_meta_data_insert (bob_meta, "<gnunet>", |
615 | "<gnunet>", | ||
616 | EXTRACTOR_METATYPE_TITLE, | 597 | EXTRACTOR_METATYPE_TITLE, |
617 | EXTRACTOR_METAFORMAT_UTF8, | 598 | EXTRACTOR_METAFORMAT_UTF8, "text/plain", |
618 | "text/plain", "Bob", strlen ("Bob") + 1); | 599 | "Bob", strlen ("Bob") + 1); |
619 | carol_meta = GNUNET_CONTAINER_meta_data_create (); | 600 | carol_meta = GNUNET_CONTAINER_meta_data_create (); |
620 | GNUNET_CONTAINER_meta_data_insert (carol_meta, | 601 | GNUNET_CONTAINER_meta_data_insert (carol_meta, "<gnunet>", |
621 | "<gnunet>", | ||
622 | EXTRACTOR_METATYPE_TITLE, | 602 | EXTRACTOR_METATYPE_TITLE, |
623 | EXTRACTOR_METAFORMAT_UTF8, | 603 | EXTRACTOR_METAFORMAT_UTF8, "text/plain", |
624 | "text/plain", | ||
625 | "Carol", strlen ("Carol") + 1); | 604 | "Carol", strlen ("Carol") + 1); |
626 | kill_task = GNUNET_SCHEDULER_add_delayed (KILL_TIMEOUT, &timeout_kill, NULL); | 605 | kill_task = GNUNET_SCHEDULER_add_delayed (KILL_TIMEOUT, &timeout_kill, NULL); |
627 | GNUNET_SCHEDULER_add_now (&join_alice_task, NULL); | 606 | GNUNET_SCHEDULER_add_now (&join_alice_task, NULL); |
@@ -655,8 +634,8 @@ main (int argc, char *argv[]) | |||
655 | { | 634 | { |
656 | is_p2p = GNUNET_YES; | 635 | is_p2p = GNUNET_YES; |
657 | } | 636 | } |
658 | GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, | 637 | GNUNET_PROGRAM_run ((sizeof (argvx) / sizeof (char *)) - 1, argvx, |
659 | argvx, "test-chat", "nohelp", options, &run, NULL); | 638 | "test-chat", "nohelp", options, &run, NULL); |
660 | stop_arm (&p1); | 639 | stop_arm (&p1); |
661 | GNUNET_CONTAINER_meta_data_destroy (alice_meta); | 640 | GNUNET_CONTAINER_meta_data_destroy (alice_meta); |
662 | GNUNET_CONTAINER_meta_data_destroy (bob_meta); | 641 | GNUNET_CONTAINER_meta_data_destroy (bob_meta); |