aboutsummaryrefslogtreecommitdiff
path: root/src/social/test_social.c
diff options
context:
space:
mode:
authorGabor X Toth <*@tg-x.net>2015-05-07 12:15:58 +0000
committerGabor X Toth <*@tg-x.net>2015-05-07 12:15:58 +0000
commit4725d59b468f1f30ba2910992333ca157682ce29 (patch)
tree23715ee20879c94a3363e28ea184370a4a71e44d /src/social/test_social.c
parenta5edf8ac9f03a368c87ea6163994d4ac3d62af06 (diff)
downloadgnunet-4725d59b468f1f30ba2910992333ca157682ce29.tar.gz
gnunet-4725d59b468f1f30ba2910992333ca157682ce29.zip
psyc/social: request history & state from psycstore; more documentation, tests, cleanup
Diffstat (limited to 'src/social/test_social.c')
-rw-r--r--src/social/test_social.c118
1 files changed, 108 insertions, 10 deletions
diff --git a/src/social/test_social.c b/src/social/test_social.c
index a1bf2940c..b18c9596c 100644
--- a/src/social/test_social.c
+++ b/src/social/test_social.c
@@ -75,6 +75,9 @@ struct GNUNET_SOCIAL_Slicer *guest_slicer;
75struct GNUNET_SOCIAL_Host *hst; 75struct GNUNET_SOCIAL_Host *hst;
76struct GNUNET_SOCIAL_Guest *gst; 76struct GNUNET_SOCIAL_Guest *gst;
77 77
78struct GNUNET_SOCIAL_Place *hst_plc;
79struct GNUNET_SOCIAL_Place *gst_plc;
80
78struct GuestEnterMessage 81struct GuestEnterMessage
79{ 82{
80 struct GNUNET_PSYC_Message *msg; 83 struct GNUNET_PSYC_Message *msg;
@@ -99,6 +102,8 @@ struct TransmitClosure
99uint8_t join_req_count; 102uint8_t join_req_count;
100struct GNUNET_PSYC_Message *join_resp; 103struct GNUNET_PSYC_Message *join_resp;
101 104
105uint32_t counter;
106
102enum 107enum
103{ 108{
104 TEST_NONE = 0, 109 TEST_NONE = 0,
@@ -106,11 +111,15 @@ enum
106 TEST_GUEST_RECV_ENTRY_DCSN_REFUSE = 2, 111 TEST_GUEST_RECV_ENTRY_DCSN_REFUSE = 2,
107 TEST_HOST_ANSWER_DOOR_ADMIT = 3, 112 TEST_HOST_ANSWER_DOOR_ADMIT = 3,
108 TEST_GUEST_RECV_ENTRY_DCSN_ADMIT = 4, 113 TEST_GUEST_RECV_ENTRY_DCSN_ADMIT = 4,
109 TEST_HOST_ANNOUNCE = 5, 114 TEST_HOST_ANNOUNCE = 5,
110 TEST_HOST_ANNOUNCE_END = 6, 115 TEST_HOST_ANNOUNCE_END = 6,
111 TEST_GUEST_TALK = 7, 116 TEST_HOST_ANNOUNCE2 = 7,
112 TEST_GUEST_LEAVE = 8, 117 TEST_HOST_ANNOUNCE2_END = 8,
113 TEST_HOST_LEAVE = 9, 118 TEST_GUEST_TALK = 9,
119 TEST_GUEST_HISTORY_REPLAY = 10,
120 TEST_GUEST_HISTORY_REPLAY_LATEST = 11,
121 TEST_GUEST_LEAVE = 12,
122 TEST_HOST_LEAVE = 13,
114} test; 123} test;
115 124
116 125
@@ -148,11 +157,13 @@ cleanup ()
148 { 157 {
149 GNUNET_SOCIAL_guest_leave (gst, GNUNET_NO, NULL, NULL); 158 GNUNET_SOCIAL_guest_leave (gst, GNUNET_NO, NULL, NULL);
150 gst = NULL; 159 gst = NULL;
160 gst_plc = NULL;
151 } 161 }
152 if (NULL != hst) 162 if (NULL != hst)
153 { 163 {
154 GNUNET_SOCIAL_host_leave (hst, GNUNET_NO, NULL, NULL); 164 GNUNET_SOCIAL_host_leave (hst, GNUNET_NO, NULL, NULL);
155 hst = NULL; 165 hst = NULL;
166 hst_plc = NULL;
156 } 167 }
157 GNUNET_SCHEDULER_shutdown (); 168 GNUNET_SCHEDULER_shutdown ();
158} 169}
@@ -273,6 +284,7 @@ host_left ()
273 GNUNET_SOCIAL_slicer_destroy (host_slicer); 284 GNUNET_SOCIAL_slicer_destroy (host_slicer);
274 host_slicer = NULL; 285 host_slicer = NULL;
275 hst = NULL; 286 hst = NULL;
287 hst_plc = NULL;
276 288
277 end (); 289 end ();
278} 290}
@@ -316,6 +328,7 @@ guest_left (void *cls)
316 GNUNET_SOCIAL_slicer_destroy (guest_slicer); 328 GNUNET_SOCIAL_slicer_destroy (guest_slicer);
317 guest_slicer = NULL; 329 guest_slicer = NULL;
318 gst = NULL; 330 gst = NULL;
331 gst_plc = NULL;
319 332
320 GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL); 333 GNUNET_SCHEDULER_add_now (&schedule_host_leave, NULL);
321} 334}
@@ -331,6 +344,69 @@ guest_leave()
331 344
332 345
333static void 346static void
347schedule_guest_leave (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
348{
349 guest_leave ();
350}
351
352
353static void
354guest_recv_history_replay_latest_result (void *cls, int64_t result,
355 const void *data, uint16_t data_size)
356{
357 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
358 "Test #%u: Guest received latest history replay result: %" PRId64 "\n"
359 "%.*s\n",
360 test, result, data_size, data);
361 GNUNET_assert (2 == counter); /* message count */
362 GNUNET_assert (7 == result); /* fragment count */
363
364 GNUNET_SCHEDULER_add_now (&schedule_guest_leave, NULL);
365}
366
367
368static void
369guest_history_replay_latest ()
370{
371 test = TEST_GUEST_HISTORY_REPLAY_LATEST;
372 counter = 0;
373 GNUNET_SOCIAL_place_history_replay_latest (gst_plc, 3, "",
374 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
375 guest_slicer,
376 &guest_recv_history_replay_latest_result,
377 NULL);
378}
379
380
381static void
382guest_recv_history_replay_result (void *cls, int64_t result,
383 const void *data, uint16_t data_size)
384{
385 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
386 "Test #%u: Guest received history replay result: %" PRId64 "\n"
387 "%.*s\n",
388 test, result, data_size, data);
389 GNUNET_assert (2 == counter); /* message count */
390 GNUNET_assert (7 == result); /* fragment count */
391
392 guest_history_replay_latest ();
393}
394
395
396static void
397guest_history_replay ()
398{
399 test = TEST_GUEST_HISTORY_REPLAY;
400 counter = 0;
401 GNUNET_SOCIAL_place_history_replay (gst_plc, 1, 3, "",
402 GNUNET_PSYC_HISTORY_REPLAY_LOCAL,
403 guest_slicer,
404 &guest_recv_history_replay_result,
405 NULL);
406}
407
408
409static void
334guest_recv_method (void *cls, 410guest_recv_method (void *cls,
335 const struct GNUNET_PSYC_MessageMethod *meth, 411 const struct GNUNET_PSYC_MessageMethod *meth,
336 uint64_t message_id, 412 uint64_t message_id,
@@ -340,8 +416,8 @@ guest_recv_method (void *cls,
340{ 416{
341 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 417 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
342 "Test #%u: Guest received method for message ID %" PRIu64 ":\n" 418 "Test #%u: Guest received method for message ID %" PRIu64 ":\n"
343 "%s\n", 419 "%s (flags: %x)\n",
344 test, message_id, method_name); 420 test, message_id, method_name, flags);
345 /* FIXME: check message */ 421 /* FIXME: check message */
346} 422}
347 423
@@ -395,9 +471,22 @@ guest_recv_eom (void *cls,
395 break; 471 break;
396 472
397 case TEST_HOST_ANNOUNCE_END: 473 case TEST_HOST_ANNOUNCE_END:
474 host_announce2 ();
475 break;
476
477 case TEST_HOST_ANNOUNCE2:
478 test = TEST_HOST_ANNOUNCE2_END;
479 break;
480
481 case TEST_HOST_ANNOUNCE2_END:
398 guest_talk (); 482 guest_talk ();
399 break; 483 break;
400 484
485 case TEST_GUEST_HISTORY_REPLAY:
486 case TEST_GUEST_HISTORY_REPLAY_LATEST:
487 counter++;
488 break;
489
401 default: 490 default:
402 GNUNET_assert (0); 491 GNUNET_assert (0);
403 } 492 }
@@ -466,15 +555,22 @@ host_recv_eom (void *cls,
466 { 555 {
467 case TEST_HOST_ANNOUNCE: 556 case TEST_HOST_ANNOUNCE:
468 test = TEST_HOST_ANNOUNCE_END; 557 test = TEST_HOST_ANNOUNCE_END;
469 //host_announce2 ();
470 break; 558 break;
471 559
472 case TEST_HOST_ANNOUNCE_END: 560 case TEST_HOST_ANNOUNCE_END:
561 host_announce2 ();
562 break;
563
564 case TEST_HOST_ANNOUNCE2:
565 test = TEST_HOST_ANNOUNCE2_END;
566 break;
567
568 case TEST_HOST_ANNOUNCE2_END:
473 guest_talk (); 569 guest_talk ();
474 break; 570 break;
475 571
476 case TEST_GUEST_TALK: 572 case TEST_GUEST_TALK:
477 guest_leave (); 573 guest_history_replay ();
478 break; 574 break;
479 575
480 default: 576 default:
@@ -535,7 +631,7 @@ host_announce ()
535static void 631static void
536host_announce2 () 632host_announce2 ()
537{ 633{
538 test = TEST_HOST_ANNOUNCE; 634 test = TEST_HOST_ANNOUNCE2;
539 635
540 tmit = (struct TransmitClosure) {}; 636 tmit = (struct TransmitClosure) {};
541 tmit.env = GNUNET_ENV_environment_create (); 637 tmit.env = GNUNET_ENV_environment_create ();
@@ -667,6 +763,7 @@ guest_enter ()
667 &this_peer, 0, NULL, emsg->msg, 763 &this_peer, 0, NULL, emsg->msg,
668 guest_slicer, &guest_recv_local_enter, 764 guest_slicer, &guest_recv_local_enter,
669 &guest_recv_entry_decision, NULL); 765 &guest_recv_entry_decision, NULL);
766 gst_plc = GNUNET_SOCIAL_guest_get_place (gst);
670} 767}
671 768
672 769
@@ -727,6 +824,7 @@ id_host_ego_cb (void *cls, const struct GNUNET_IDENTITY_Ego *ego)
727 GNUNET_PSYC_CHANNEL_PRIVATE, host_slicer, 824 GNUNET_PSYC_CHANNEL_PRIVATE, host_slicer,
728 &host_entered, &host_answer_door, 825 &host_entered, &host_answer_door,
729 &host_farewell, NULL); 826 &host_farewell, NULL);
827 hst_plc = GNUNET_SOCIAL_host_get_place (hst);
730} 828}
731 829
732 830