diff options
author | Gabor X Toth <*@tg-x.net> | 2015-05-07 12:15:58 +0000 |
---|---|---|
committer | Gabor X Toth <*@tg-x.net> | 2015-05-07 12:15:58 +0000 |
commit | 4725d59b468f1f30ba2910992333ca157682ce29 (patch) | |
tree | 23715ee20879c94a3363e28ea184370a4a71e44d /src/social/test_social.c | |
parent | a5edf8ac9f03a368c87ea6163994d4ac3d62af06 (diff) | |
download | gnunet-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.c | 118 |
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; | |||
75 | struct GNUNET_SOCIAL_Host *hst; | 75 | struct GNUNET_SOCIAL_Host *hst; |
76 | struct GNUNET_SOCIAL_Guest *gst; | 76 | struct GNUNET_SOCIAL_Guest *gst; |
77 | 77 | ||
78 | struct GNUNET_SOCIAL_Place *hst_plc; | ||
79 | struct GNUNET_SOCIAL_Place *gst_plc; | ||
80 | |||
78 | struct GuestEnterMessage | 81 | struct GuestEnterMessage |
79 | { | 82 | { |
80 | struct GNUNET_PSYC_Message *msg; | 83 | struct GNUNET_PSYC_Message *msg; |
@@ -99,6 +102,8 @@ struct TransmitClosure | |||
99 | uint8_t join_req_count; | 102 | uint8_t join_req_count; |
100 | struct GNUNET_PSYC_Message *join_resp; | 103 | struct GNUNET_PSYC_Message *join_resp; |
101 | 104 | ||
105 | uint32_t counter; | ||
106 | |||
102 | enum | 107 | enum |
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 | ||
333 | static void | 346 | static void |
347 | schedule_guest_leave (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | ||
348 | { | ||
349 | guest_leave (); | ||
350 | } | ||
351 | |||
352 | |||
353 | static void | ||
354 | guest_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 | |||
368 | static void | ||
369 | guest_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 | |||
381 | static void | ||
382 | guest_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 | |||
396 | static void | ||
397 | guest_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 | |||
409 | static void | ||
334 | guest_recv_method (void *cls, | 410 | guest_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 () | |||
535 | static void | 631 | static void |
536 | host_announce2 () | 632 | host_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 | ||