aboutsummaryrefslogtreecommitdiff
path: root/src/namestore/test_namestore_api_zone_iteration_stop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/namestore/test_namestore_api_zone_iteration_stop.c')
-rw-r--r--src/namestore/test_namestore_api_zone_iteration_stop.c142
1 files changed, 42 insertions, 100 deletions
diff --git a/src/namestore/test_namestore_api_zone_iteration_stop.c b/src/namestore/test_namestore_api_zone_iteration_stop.c
index 5b54e100e..38da3136c 100644
--- a/src/namestore/test_namestore_api_zone_iteration_stop.c
+++ b/src/namestore/test_namestore_api_zone_iteration_stop.c
@@ -18,7 +18,7 @@
18 SPDX-License-Identifier: AGPL3.0-or-later 18 SPDX-License-Identifier: AGPL3.0-or-later
19*/ 19*/
20/** 20/**
21 * @file namestore/test_namestore_api_zone_iteration.c 21 * @file namestore/test_namestore_api_zone_iteration_stop.c
22 * @brief testcase for zone iteration functionality: stop iterating of zones 22 * @brief testcase for zone iteration functionality: stop iterating of zones
23 */ 23 */
24#include "platform.h" 24#include "platform.h"
@@ -34,8 +34,6 @@
34 34
35static struct GNUNET_NAMESTORE_Handle * nsh; 35static struct GNUNET_NAMESTORE_Handle * nsh;
36 36
37static struct GNUNET_SCHEDULER_Task * endbadly_task;
38
39static struct GNUNET_CRYPTO_EcdsaPrivateKey * privkey; 37static struct GNUNET_CRYPTO_EcdsaPrivateKey * privkey;
40 38
41static struct GNUNET_CRYPTO_EcdsaPrivateKey * privkey2; 39static struct GNUNET_CRYPTO_EcdsaPrivateKey * privkey2;
@@ -59,29 +57,27 @@ static char * s_name_3;
59static struct GNUNET_GNSRECORD_Data *s_rd_3; 57static struct GNUNET_GNSRECORD_Data *s_rd_3;
60 58
61 59
62
63/** 60/**
64 * Re-establish the connection to the service. 61 * Re-establish the connection to the service.
65 * 62 *
66 * @param cls handle to use to re-connect. 63 * @param cls handle to use to re-connect.
67 */ 64 */
68static void 65static void
69endbadly (void *cls) 66end (void *cls)
70{ 67{
71 if (NULL != zi) 68 if (NULL != zi)
72 { 69 {
73 GNUNET_NAMESTORE_zone_iteration_stop (zi); 70 GNUNET_NAMESTORE_zone_iteration_stop (zi);
74 zi = NULL; 71 zi = NULL;
75 } 72 }
76
77 if (nsh != NULL) 73 if (nsh != NULL)
74 {
78 GNUNET_NAMESTORE_disconnect (nsh); 75 GNUNET_NAMESTORE_disconnect (nsh);
79 nsh = NULL; 76 nsh = NULL;
80 77 }
81 GNUNET_free_non_null(s_name_1); 78 GNUNET_free_non_null (s_name_1);
82 GNUNET_free_non_null(s_name_2); 79 GNUNET_free_non_null (s_name_2);
83 GNUNET_free_non_null(s_name_3); 80 GNUNET_free_non_null (s_name_3);
84
85 if (s_rd_1 != NULL) 81 if (s_rd_1 != NULL)
86 { 82 {
87 GNUNET_free ((void *)s_rd_1->data); 83 GNUNET_free ((void *)s_rd_1->data);
@@ -97,62 +93,23 @@ endbadly (void *cls)
97 GNUNET_free ((void *)s_rd_3->data); 93 GNUNET_free ((void *)s_rd_3->data);
98 GNUNET_free (s_rd_3); 94 GNUNET_free (s_rd_3);
99 } 95 }
100
101 if (privkey != NULL) 96 if (privkey != NULL)
97 {
102 GNUNET_free (privkey); 98 GNUNET_free (privkey);
103 privkey = NULL; 99 privkey = NULL;
104 100 }
105 if (privkey2 != NULL) 101 if (privkey2 != NULL)
102 {
106 GNUNET_free (privkey2); 103 GNUNET_free (privkey2);
107 privkey2 = NULL; 104 privkey2 = NULL;
108 res = 1; 105 }
109} 106}
110 107
111 108
112static void 109static void
113end (void *cls) 110delayed_end (void *cls)
114{ 111{
115 if (NULL != zi) 112 GNUNET_SCHEDULER_shutdown ();
116 {
117 GNUNET_NAMESTORE_zone_iteration_stop (zi);
118 zi = NULL;
119 }
120
121 if (endbadly_task != NULL)
122 {
123 GNUNET_SCHEDULER_cancel (endbadly_task);
124 endbadly_task = NULL;
125 }
126
127 if (privkey != NULL)
128 GNUNET_free (privkey);
129 privkey = NULL;
130
131 if (privkey2 != NULL)
132 GNUNET_free (privkey2);
133 privkey2 = NULL;
134
135 GNUNET_free (s_name_1);
136 GNUNET_free (s_name_2);
137 GNUNET_free (s_name_3);
138 if (s_rd_1 != NULL)
139 {
140 GNUNET_free ((void *)s_rd_1->data);
141 GNUNET_free (s_rd_1);
142 }
143 if (s_rd_2 != NULL)
144 {
145 GNUNET_free ((void *)s_rd_2->data);
146 GNUNET_free (s_rd_2);
147 }
148 if (s_rd_3 != NULL)
149 {
150 GNUNET_free ((void *)s_rd_3->data);
151 GNUNET_free (s_rd_3);
152 }
153 if (nsh != NULL)
154 GNUNET_NAMESTORE_disconnect (nsh);
155 nsh = NULL;
156} 113}
157 114
158 115
@@ -257,16 +214,13 @@ zone_proc (void *cls,
257 if (1 == returned_records) 214 if (1 == returned_records)
258 { 215 {
259 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 216 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
260 "Telling namestore to stop zone iteration\n"); 217 "Telling namestore to stop zone iteration\n");
261 GNUNET_NAMESTORE_zone_iteration_stop (zi); 218 GNUNET_NAMESTORE_zone_iteration_stop (zi);
262 zi = NULL; 219 zi = NULL;
263 if (NULL != endbadly_task)
264 {
265 GNUNET_SCHEDULER_cancel (endbadly_task);
266 endbadly_task = NULL;
267 }
268 res = 0; 220 res = 0;
269 GNUNET_SCHEDULER_add_delayed (WAIT, &end, NULL); 221 GNUNET_SCHEDULER_add_delayed (WAIT,
222 &delayed_end,
223 NULL);
270 return; 224 return;
271 } 225 }
272 returned_records ++; 226 returned_records ++;
@@ -278,7 +232,7 @@ zone_proc (void *cls,
278 else 232 else
279 { 233 {
280 GNUNET_break (0); 234 GNUNET_break (0);
281 GNUNET_SCHEDULER_add_now (&end, NULL); 235 GNUNET_SCHEDULER_shutdown ();
282 } 236 }
283} 237}
284 238
@@ -314,9 +268,7 @@ put_cont (void *cls, int32_t success, const char *emsg)
314 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to created records: `%s'\n", 268 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to created records: `%s'\n",
315 emsg); 269 emsg);
316 GNUNET_break (0); 270 GNUNET_break (0);
317 if (NULL != endbadly_task) 271 GNUNET_SCHEDULER_shutdown ();
318 GNUNET_SCHEDULER_cancel (endbadly_task);
319 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
320 return; 272 return;
321 } 273 }
322 274
@@ -339,9 +291,7 @@ put_cont (void *cls, int32_t success, const char *emsg)
339 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 291 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
340 "Failed to create zone iterator\n"); 292 "Failed to create zone iterator\n");
341 GNUNET_break (0); 293 GNUNET_break (0);
342 if (NULL != endbadly_task) 294 GNUNET_SCHEDULER_shutdown ();
343 GNUNET_SCHEDULER_cancel (endbadly_task);
344 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
345 return; 295 return;
346 } 296 }
347 } 297 }
@@ -387,9 +337,7 @@ empty_zone_proc (void *cls,
387 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 337 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
388 _("Expected empty zone but received zone private key\n")); 338 _("Expected empty zone but received zone private key\n"));
389 GNUNET_break (0); 339 GNUNET_break (0);
390 if (endbadly_task != NULL) 340 GNUNET_SCHEDULER_shutdown ();
391 GNUNET_SCHEDULER_cancel (endbadly_task);
392 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
393 return; 341 return;
394 } 342 }
395 if ((NULL != label) || (NULL != rd) || (0 != rd_count)) 343 if ((NULL != label) || (NULL != rd) || (0 != rd_count))
@@ -397,9 +345,7 @@ empty_zone_proc (void *cls,
397 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 345 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
398 _("Expected no zone content but received data\n")); 346 _("Expected no zone content but received data\n"));
399 GNUNET_break (0); 347 GNUNET_break (0);
400 if (endbadly_task != NULL) 348 GNUNET_SCHEDULER_shutdown ();
401 GNUNET_SCHEDULER_cancel (endbadly_task);
402 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
403 return; 349 return;
404 } 350 }
405 GNUNET_assert (0); 351 GNUNET_assert (0);
@@ -476,43 +422,39 @@ run (void *cls,
476 const struct GNUNET_CONFIGURATION_Handle *cfg, 422 const struct GNUNET_CONFIGURATION_Handle *cfg,
477 struct GNUNET_TESTING_Peer *peer) 423 struct GNUNET_TESTING_Peer *peer)
478{ 424{
479 endbadly_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
480 &endbadly,
481 NULL);
482 nsh = GNUNET_NAMESTORE_connect (cfg); 425 nsh = GNUNET_NAMESTORE_connect (cfg);
483 GNUNET_break (NULL != nsh); 426 GNUNET_break (NULL != nsh);
427 GNUNET_SCHEDULER_add_shutdown (&end,
428 NULL);
484 /* first, iterate over empty namestore */ 429 /* first, iterate over empty namestore */
485 zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, 430 zi = GNUNET_NAMESTORE_zone_iteration_start (nsh,
486 NULL, 431 NULL,
487 &fail_cb, 432 &fail_cb,
488 NULL, 433 NULL,
489 &empty_zone_proc, 434 &empty_zone_proc,
490 nsh, 435 nsh,
491 &empty_zone_proc_end, 436 &empty_zone_proc_end,
492 nsh); 437 nsh);
493 if (NULL == zi) 438 if (NULL == zi)
494 { 439 {
495 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 440 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
496 "Failed to create zone iterator\n"); 441 "Failed to create zone iterator\n");
497 GNUNET_break (0); 442 GNUNET_break (0);
498 GNUNET_SCHEDULER_cancel (endbadly_task); 443 GNUNET_SCHEDULER_shutdown ();
499 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
500 } 444 }
501} 445}
502 446
503 447
448#include "test_common.c"
449
450
504int 451int
505main (int argc, char *argv[]) 452main (int argc, char *argv[])
506{ 453{
507 const char *plugin_name; 454 const char *plugin_name;
508 char *cfg_name; 455 char *cfg_name;
509 456
510 plugin_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); 457 SETUP_CFG (plugin_name, cfg_name);
511 GNUNET_asprintf (&cfg_name,
512 "test_namestore_api_%s.conf",
513 plugin_name);
514 GNUNET_DISK_purge_cfg_dir (cfg_name,
515 "GNUNET_TEST_HOME");
516 res = 1; 458 res = 1;
517 if (0 != 459 if (0 !=
518 GNUNET_TESTING_peer_run ("test-namestore-api-zone-iteration-stop", 460 GNUNET_TESTING_peer_run ("test-namestore-api-zone-iteration-stop",