aboutsummaryrefslogtreecommitdiff
path: root/src/chat/test_chat_private.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/chat/test_chat_private.c')
-rw-r--r--src/chat/test_chat_private.c113
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
217static int 217static int
218member_list_cb (void *cls, 218member_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
282static int 278static int
283receive_cb (void *cls, 279receive_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
586static void 571static void
587run (void *cls, 572run (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);