aboutsummaryrefslogtreecommitdiff
path: root/src/psyc
diff options
context:
space:
mode:
authorGabor X Toth <*@tg-x.net>2014-07-24 09:30:18 +0000
committerGabor X Toth <*@tg-x.net>2014-07-24 09:30:18 +0000
commited695105d53300157340dbb801a570c63f4c7862 (patch)
treecd7b72726f740f81b01075b9796679a9524d29ff /src/psyc
parentb618f1ebf6121fd8652c44a43b70724d883b73e4 (diff)
downloadgnunet-ed695105d53300157340dbb801a570c63f4c7862.tar.gz
gnunet-ed695105d53300157340dbb801a570c63f4c7862.zip
psyc: fix timing-related test failure
Diffstat (limited to 'src/psyc')
-rw-r--r--src/psyc/test_psyc.c92
1 files changed, 56 insertions, 36 deletions
diff --git a/src/psyc/test_psyc.c b/src/psyc/test_psyc.c
index 2f6c8f628..da69f40b1 100644
--- a/src/psyc/test_psyc.c
+++ b/src/psyc/test_psyc.c
@@ -41,23 +41,23 @@
41/** 41/**
42 * Return value from 'main'. 42 * Return value from 'main'.
43 */ 43 */
44static int res; 44int res;
45 45
46static const struct GNUNET_CONFIGURATION_Handle *cfg; 46const struct GNUNET_CONFIGURATION_Handle *cfg;
47 47
48/** 48/**
49 * Handle for task for timeout termination. 49 * Handle for task for timeout termination.
50 */ 50 */
51static GNUNET_SCHEDULER_TaskIdentifier end_badly_task; 51GNUNET_SCHEDULER_TaskIdentifier end_badly_task;
52 52
53static struct GNUNET_PSYC_Master *mst; 53struct GNUNET_PSYC_Master *mst;
54static struct GNUNET_PSYC_Slave *slv; 54struct GNUNET_PSYC_Slave *slv;
55 55
56static struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key; 56struct GNUNET_CRYPTO_EddsaPrivateKey *channel_key;
57static struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_key; 57struct GNUNET_CRYPTO_EcdsaPrivateKey *slave_key;
58 58
59static struct GNUNET_CRYPTO_EddsaPublicKey channel_pub_key; 59struct GNUNET_CRYPTO_EddsaPublicKey channel_pub_key;
60static struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key; 60struct GNUNET_CRYPTO_EcdsaPublicKey slave_pub_key;
61 61
62struct TransmitClosure 62struct TransmitClosure
63{ 63{
@@ -76,7 +76,7 @@ struct TransmitClosure
76 76
77struct TransmitClosure *tmit; 77struct TransmitClosure *tmit;
78 78
79static uint8_t join_req_count; 79uint8_t join_req_count;
80 80
81enum 81enum
82{ 82{
@@ -86,7 +86,7 @@ enum
86} test; 86} test;
87 87
88 88
89static void 89void
90master_transmit (); 90master_transmit ();
91 91
92 92
@@ -115,7 +115,7 @@ void slave_parted (void *cls)
115/** 115/**
116 * Clean up all resources used. 116 * Clean up all resources used.
117 */ 117 */
118static void 118void
119cleanup () 119cleanup ()
120{ 120{
121 if (NULL != slv) 121 if (NULL != slv)
@@ -134,7 +134,7 @@ cleanup ()
134 * @param cls NULL 134 * @param cls NULL
135 * @param tc scheduler context 135 * @param tc scheduler context
136 */ 136 */
137static void 137void
138end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 138end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
139{ 139{
140 res = 1; 140 res = 1;
@@ -149,7 +149,7 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
149 * @param cls NULL 149 * @param cls NULL
150 * @param tc scheduler context 150 * @param tc scheduler context
151 */ 151 */
152static void 152void
153end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 153end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
154{ 154{
155 res = 0; 155 res = 0;
@@ -161,7 +161,7 @@ end_normally (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
161/** 161/**
162 * Finish the test case (successfully). 162 * Finish the test case (successfully).
163 */ 163 */
164static void 164void
165end () 165end ()
166{ 166{
167 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ending tests.\n"); 167 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Ending tests.\n");
@@ -176,7 +176,7 @@ end ()
176} 176}
177 177
178 178
179static void 179void
180master_message_cb (void *cls, uint64_t message_id, uint32_t flags, 180master_message_cb (void *cls, uint64_t message_id, uint32_t flags,
181 const struct GNUNET_PSYC_MessageHeader *msg) 181 const struct GNUNET_PSYC_MessageHeader *msg)
182{ 182{
@@ -188,7 +188,7 @@ master_message_cb (void *cls, uint64_t message_id, uint32_t flags,
188} 188}
189 189
190 190
191static void 191void
192master_message_part_cb (void *cls, uint64_t message_id, 192master_message_part_cb (void *cls, uint64_t message_id,
193 uint64_t data_offset, uint32_t flags, 193 uint64_t data_offset, uint32_t flags,
194 const struct GNUNET_MessageHeader *msg) 194 const struct GNUNET_MessageHeader *msg)
@@ -233,7 +233,7 @@ master_message_part_cb (void *cls, uint64_t message_id,
233} 233}
234 234
235 235
236static void 236void
237slave_message_cb (void *cls, uint64_t message_id, uint32_t flags, 237slave_message_cb (void *cls, uint64_t message_id, uint32_t flags,
238 const struct GNUNET_PSYC_MessageHeader *msg) 238 const struct GNUNET_PSYC_MessageHeader *msg)
239{ 239{
@@ -245,7 +245,7 @@ slave_message_cb (void *cls, uint64_t message_id, uint32_t flags,
245} 245}
246 246
247 247
248static void 248void
249slave_message_part_cb (void *cls, uint64_t message_id, 249slave_message_part_cb (void *cls, uint64_t message_id,
250 uint64_t data_offset, uint32_t flags, 250 uint64_t data_offset, uint32_t flags,
251 const struct GNUNET_MessageHeader *msg) 251 const struct GNUNET_MessageHeader *msg)
@@ -278,7 +278,7 @@ slave_message_part_cb (void *cls, uint64_t message_id,
278} 278}
279 279
280 280
281static void 281void
282transmit_resume (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 282transmit_resume (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
283{ 283{
284 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmission resumed.\n"); 284 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Transmission resumed.\n");
@@ -290,7 +290,7 @@ transmit_resume (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
290} 290}
291 291
292 292
293static int 293int
294tmit_notify_data (void *cls, uint16_t *data_size, void *data) 294tmit_notify_data (void *cls, uint16_t *data_size, void *data)
295{ 295{
296 struct TransmitClosure *tmit = cls; 296 struct TransmitClosure *tmit = cls;
@@ -332,7 +332,7 @@ tmit_notify_data (void *cls, uint16_t *data_size, void *data)
332} 332}
333 333
334 334
335static int 335int
336tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper, 336tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
337 uint32_t *full_value_size) 337 uint32_t *full_value_size)
338{ 338{
@@ -408,11 +408,11 @@ tmit_notify_mod (void *cls, uint16_t *data_size, void *data, uint8_t *oper,
408} 408}
409 409
410 410
411static void 411void
412slave_join (); 412slave_join ();
413 413
414 414
415static void 415void
416join_decision_cb (void *cls, 416join_decision_cb (void *cls,
417 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn, 417 const struct GNUNET_PSYC_JoinDecisionMessage *dcsn,
418 int is_admitted, 418 int is_admitted,
@@ -449,7 +449,7 @@ join_decision_cb (void *cls,
449} 449}
450 450
451 451
452static void 452void
453join_request_cb (void *cls, 453join_request_cb (void *cls,
454 const struct GNUNET_PSYC_JoinRequestMessage *req, 454 const struct GNUNET_PSYC_JoinRequestMessage *req,
455 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key, 455 const struct GNUNET_CRYPTO_EcdsaPublicKey *slave_key,
@@ -468,7 +468,7 @@ join_request_cb (void *cls,
468} 468}
469 469
470 470
471static void 471void
472slave_connect_cb (void *cls, uint64_t max_message_id) 472slave_connect_cb (void *cls, uint64_t max_message_id)
473{ 473{
474 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 474 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -476,12 +476,12 @@ slave_connect_cb (void *cls, uint64_t max_message_id)
476} 476}
477 477
478 478
479static void 479void
480slave_join () 480slave_join ()
481{ 481{
482 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Joining slave.\n"); 482 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Joining slave.\n");
483 483
484 struct GNUNET_PeerIdentity origin; // FIXME: this peer 484 struct GNUNET_PeerIdentity origin = {}; // FIXME: this peer
485 struct GNUNET_ENV_Environment *env = GNUNET_ENV_environment_create (); 485 struct GNUNET_ENV_Environment *env = GNUNET_ENV_environment_create ();
486 GNUNET_ENV_environment_add (env, GNUNET_ENV_OP_ASSIGN, 486 GNUNET_ENV_environment_add (env, GNUNET_ENV_OP_ASSIGN,
487 "_foo", "bar baz", 7); 487 "_foo", "bar baz", 7);
@@ -498,7 +498,7 @@ slave_join ()
498} 498}
499 499
500 500
501static void 501void
502master_transmit () 502master_transmit ()
503{ 503{
504 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Master sending message to all.\n"); 504 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Master sending message to all.\n");
@@ -550,7 +550,7 @@ master_transmit ()
550} 550}
551 551
552 552
553static void 553void
554master_start_cb (void *cls, uint64_t max_message_id) 554master_start_cb (void *cls, uint64_t max_message_id)
555{ 555{
556 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 556 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -559,6 +559,23 @@ master_start_cb (void *cls, uint64_t max_message_id)
559} 559}
560 560
561 561
562void
563master_start ()
564{
565 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Starting master.\n");
566 mst = GNUNET_PSYC_master_start (cfg, channel_key, GNUNET_PSYC_CHANNEL_PRIVATE,
567 &master_start_cb, &join_request_cb,
568 &master_message_cb, &master_message_part_cb,
569 NULL);
570}
571
572void
573schedule_master_start (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
574{
575 master_start ();
576}
577
578
562/** 579/**
563 * Main function of the test, run from scheduler. 580 * Main function of the test, run from scheduler.
564 * 581 *
@@ -566,7 +583,7 @@ master_start_cb (void *cls, uint64_t max_message_id)
566 * @param cfg configuration we use (also to connect to PSYC service) 583 * @param cfg configuration we use (also to connect to PSYC service)
567 * @param peer handle to access more of the peer (not used) 584 * @param peer handle to access more of the peer (not used)
568 */ 585 */
569static void 586void
570#if DEBUG_TEST_PSYC 587#if DEBUG_TEST_PSYC
571run (void *cls, char *const *args, const char *cfgfile, 588run (void *cls, char *const *args, const char *cfgfile,
572 const struct GNUNET_CONFIGURATION_Handle *c) 589 const struct GNUNET_CONFIGURATION_Handle *c)
@@ -585,11 +602,14 @@ run (void *cls,
585 GNUNET_CRYPTO_eddsa_key_get_public (channel_key, &channel_pub_key); 602 GNUNET_CRYPTO_eddsa_key_get_public (channel_key, &channel_pub_key);
586 GNUNET_CRYPTO_ecdsa_key_get_public (slave_key, &slave_pub_key); 603 GNUNET_CRYPTO_ecdsa_key_get_public (slave_key, &slave_pub_key);
587 604
588 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Starting master.\n"); 605#if DEBUG_TEST_PSYC
589 mst = GNUNET_PSYC_master_start (cfg, channel_key, GNUNET_PSYC_CHANNEL_PRIVATE, 606 master_start ();
590 &master_start_cb, &join_request_cb, 607#else
591 &master_message_cb, &master_message_part_cb, 608 /* Allow some time for the services to initialize. */
592 NULL); 609 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
610 &schedule_master_start, NULL);
611#endif
612 return;
593} 613}
594 614
595 615