aboutsummaryrefslogtreecommitdiff
path: root/src/namestore/test_namestore_api_zone_iteration_stop.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-07-09 14:29:34 +0000
committerChristian Grothoff <christian@grothoff.org>2016-07-09 14:29:34 +0000
commit03374cc39814fa4bfb8d96e1165c688c44d8342f (patch)
treeed772250c49b39d82b9708ec8df0ee3e07e366d1 /src/namestore/test_namestore_api_zone_iteration_stop.c
parent0c13a1e6fb0baffd83d413f313742a5f2b420297 (diff)
downloadgnunet-03374cc39814fa4bfb8d96e1165c688c44d8342f.tar.gz
gnunet-03374cc39814fa4bfb8d96e1165c688c44d8342f.zip
make namestore API less brittle/sublte to use
Diffstat (limited to 'src/namestore/test_namestore_api_zone_iteration_stop.c')
-rw-r--r--src/namestore/test_namestore_api_zone_iteration_stop.c125
1 files changed, 88 insertions, 37 deletions
diff --git a/src/namestore/test_namestore_api_zone_iteration_stop.c b/src/namestore/test_namestore_api_zone_iteration_stop.c
index 36f527da0..a5f040150 100644
--- a/src/namestore/test_namestore_api_zone_iteration_stop.c
+++ b/src/namestore/test_namestore_api_zone_iteration_stop.c
@@ -156,6 +156,13 @@ end (void *cls)
156 156
157 157
158static void 158static void
159fail_cb (void *cls)
160{
161 GNUNET_assert (0);
162}
163
164
165static void
159zone_proc (void *cls, 166zone_proc (void *cls,
160 const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone, 167 const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
161 const char *label, 168 const char *label,
@@ -163,20 +170,7 @@ zone_proc (void *cls,
163 const struct GNUNET_GNSRECORD_Data *rd) 170 const struct GNUNET_GNSRECORD_Data *rd)
164{ 171{
165 int failed = GNUNET_NO; 172 int failed = GNUNET_NO;
166 if ((zone == NULL) && (label == NULL)) 173
167 {
168 GNUNET_break (1 <= returned_records);
169 if (1 >= returned_records)
170 res = 1; /* Last iteraterator callback, we are done */
171 else
172 res = 0;
173 zi = NULL;
174 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
175 "Received last result, iteration done after receing %u results\n",
176 returned_records );
177 GNUNET_SCHEDULER_add_now (&end, NULL);
178 return;
179 }
180 GNUNET_assert (NULL != zone); 174 GNUNET_assert (NULL != zone);
181 if (0 == memcmp (zone, privkey, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey))) 175 if (0 == memcmp (zone, privkey, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey)))
182 { 176 {
@@ -288,6 +282,22 @@ zone_proc (void *cls,
288 282
289 283
290static void 284static void
285zone_proc_end (void *cls)
286{
287 GNUNET_break (1 <= returned_records);
288 if (1 >= returned_records)
289 res = 1; /* Last iteraterator callback, we are done */
290 else
291 res = 0;
292 zi = NULL;
293 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
294 "Received last result, iteration done after receing %u results\n",
295 returned_records);
296 GNUNET_SCHEDULER_add_now (&end, NULL);
297}
298
299
300static void
291put_cont (void *cls, int32_t success, const char *emsg) 301put_cont (void *cls, int32_t success, const char *emsg)
292{ 302{
293 static int c = 0; 303 static int c = 0;
@@ -312,14 +322,20 @@ put_cont (void *cls, int32_t success, const char *emsg)
312 { 322 {
313 res = 1; 323 res = 1;
314 returned_records = 0; 324 returned_records = 0;
315 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "All records created, starting iteration over all zones \n"); 325 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
316 zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, 326 "All records created, starting iteration over all zones \n");
317 NULL, 327 zi = GNUNET_NAMESTORE_zone_iteration_start (nsh,
318 &zone_proc, 328 NULL,
319 NULL); 329 &fail_cb,
330 NULL,
331 &zone_proc,
332 NULL,
333 &zone_proc_end,
334 NULL);
320 if (zi == NULL) 335 if (zi == NULL)
321 { 336 {
322 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to create zone iterator\n"); 337 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
338 "Failed to create zone iterator\n");
323 GNUNET_break (0); 339 GNUNET_break (0);
324 if (NULL != endbadly_task) 340 if (NULL != endbadly_task)
325 GNUNET_SCHEDULER_cancel (endbadly_task); 341 GNUNET_SCHEDULER_cancel (endbadly_task);
@@ -362,7 +378,6 @@ empty_zone_proc (void *cls,
362 unsigned int rd_count, 378 unsigned int rd_count,
363 const struct GNUNET_GNSRECORD_Data *rd) 379 const struct GNUNET_GNSRECORD_Data *rd)
364{ 380{
365 char *hostkey_file;
366 381
367 GNUNET_assert (nsh == cls); 382 GNUNET_assert (nsh == cls);
368 if (NULL != zone) 383 if (NULL != zone)
@@ -385,42 +400,72 @@ empty_zone_proc (void *cls,
385 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); 400 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
386 return; 401 return;
387 } 402 }
403 GNUNET_assert (0);
404}
405
388 406
407static void
408empty_zone_proc_end (void *cls)
409{
410 char *hostkey_file;
411
412 GNUNET_assert (nsh == cls);
389 zi = NULL; 413 zi = NULL;
390 GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, 414 GNUNET_asprintf(&hostkey_file,
391 "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey"); 415 "zonefiles%s%s",
392 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); 416 DIR_SEPARATOR_STR,
417 "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey");
418 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
419 "Using zonekey file `%s' \n",
420 hostkey_file);
393 privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); 421 privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file);
394 GNUNET_free (hostkey_file); 422 GNUNET_free (hostkey_file);
395 GNUNET_assert (privkey != NULL); 423 GNUNET_assert (privkey != NULL);
396 424
397 GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, 425 GNUNET_asprintf (&hostkey_file,
398 "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey"); 426 "zonefiles%s%s",
399 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); 427 DIR_SEPARATOR_STR,
428 "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey");
429 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
430 "Using zonekey file `%s'\n",
431 hostkey_file);
400 privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); 432 privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file);
401 GNUNET_free (hostkey_file); 433 GNUNET_free (hostkey_file);
402 GNUNET_assert (privkey2 != NULL); 434 GNUNET_assert (privkey2 != NULL);
403 435
404 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created record 1\n"); 436 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
437 "Created record 1\n");
405 438
406 GNUNET_asprintf(&s_name_1, "dummy1"); 439 GNUNET_asprintf(&s_name_1,
440 "dummy1");
407 s_rd_1 = create_record(1); 441 s_rd_1 = create_record(1);
408 GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_1, 442 GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_1,
409 1, s_rd_1, &put_cont, NULL); 443 1, s_rd_1, &put_cont, NULL);
410 444
411 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created record 2 \n"); 445 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
412 GNUNET_asprintf(&s_name_2, "dummy2"); 446 "Created record 2 \n");
447 GNUNET_asprintf(&s_name_2,
448 "dummy2");
413 s_rd_2 = create_record(1); 449 s_rd_2 = create_record(1);
414 GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_2, 450 GNUNET_NAMESTORE_records_store (nsh,
415 1, s_rd_2, &put_cont, NULL); 451 privkey,
452 s_name_2,
453 1,
454 s_rd_2,
455 &put_cont, NULL);
416 456
417 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created record 3\n"); 457 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
458 "Created record 3\n");
418 459
419 /* name in different zone */ 460 /* name in different zone */
420 GNUNET_asprintf(&s_name_3, "dummy3"); 461 GNUNET_asprintf(&s_name_3, "dummy3");
421 s_rd_3 = create_record(1); 462 s_rd_3 = create_record(1);
422 GNUNET_NAMESTORE_records_store(nsh, privkey2, s_name_3, 463 GNUNET_NAMESTORE_records_store(nsh,
423 1, s_rd_3, &put_cont, NULL); 464 privkey2,
465 s_name_3,
466 1,
467 s_rd_3,
468 &put_cont, NULL);
424} 469}
425 470
426 471
@@ -441,7 +486,13 @@ run (void *cls,
441 GNUNET_break (NULL != nsh); 486 GNUNET_break (NULL != nsh);
442 /* first, iterate over empty namestore */ 487 /* first, iterate over empty namestore */
443 zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, 488 zi = GNUNET_NAMESTORE_zone_iteration_start(nsh,
444 NULL, &empty_zone_proc, nsh); 489 NULL,
490 &fail_cb,
491 NULL,
492 &empty_zone_proc,
493 nsh,
494 &empty_zone_proc_end,
495 nsh);
445 if (NULL == zi) 496 if (NULL == zi)
446 { 497 {
447 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 498 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,