diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-07-09 14:29:34 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-07-09 14:29:34 +0000 |
commit | 03374cc39814fa4bfb8d96e1165c688c44d8342f (patch) | |
tree | ed772250c49b39d82b9708ec8df0ee3e07e366d1 /src/namestore/test_namestore_api_zone_iteration.c | |
parent | 0c13a1e6fb0baffd83d413f313742a5f2b420297 (diff) | |
download | gnunet-03374cc39814fa4bfb8d96e1165c688c44d8342f.tar.gz gnunet-03374cc39814fa4bfb8d96e1165c688c44d8342f.zip |
make namestore API less brittle/sublte to use
Diffstat (limited to 'src/namestore/test_namestore_api_zone_iteration.c')
-rw-r--r-- | src/namestore/test_namestore_api_zone_iteration.c | 92 |
1 files changed, 64 insertions, 28 deletions
diff --git a/src/namestore/test_namestore_api_zone_iteration.c b/src/namestore/test_namestore_api_zone_iteration.c index 070c06870..8960be55d 100644 --- a/src/namestore/test_namestore_api_zone_iteration.c +++ b/src/namestore/test_namestore_api_zone_iteration.c | |||
@@ -156,6 +156,32 @@ end (void *cls) | |||
156 | 156 | ||
157 | 157 | ||
158 | static void | 158 | static void |
159 | zone_end (void *cls) | ||
160 | { | ||
161 | GNUNET_break (3 == returned_records); | ||
162 | if (3 == returned_records) | ||
163 | { | ||
164 | res = 0; /* Last iteraterator callback, we are done */ | ||
165 | zi = NULL; | ||
166 | } | ||
167 | else | ||
168 | res = 1; | ||
169 | |||
170 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
171 | "Received last result, iteration done after receing %u results\n", | ||
172 | returned_records); | ||
173 | GNUNET_SCHEDULER_add_now (&end, NULL); | ||
174 | } | ||
175 | |||
176 | |||
177 | static void | ||
178 | fail_cb (void *cls) | ||
179 | { | ||
180 | GNUNET_assert (0); | ||
181 | } | ||
182 | |||
183 | |||
184 | static void | ||
159 | zone_proc (void *cls, | 185 | zone_proc (void *cls, |
160 | const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone, | 186 | const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone, |
161 | const char *label, | 187 | const char *label, |
@@ -164,23 +190,6 @@ zone_proc (void *cls, | |||
164 | { | 190 | { |
165 | int failed = GNUNET_NO; | 191 | int failed = GNUNET_NO; |
166 | 192 | ||
167 | if ((zone == NULL) && (label == NULL)) | ||
168 | { | ||
169 | GNUNET_break (3 == returned_records); | ||
170 | if (3 == returned_records) | ||
171 | { | ||
172 | res = 0; /* Last iteraterator callback, we are done */ | ||
173 | zi = NULL; | ||
174 | } | ||
175 | else | ||
176 | res = 1; | ||
177 | |||
178 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
179 | "Received last result, iteration done after receing %u results\n", | ||
180 | returned_records); | ||
181 | GNUNET_SCHEDULER_add_now (&end, NULL); | ||
182 | return; | ||
183 | } | ||
184 | GNUNET_assert (NULL != zone); | 193 | GNUNET_assert (NULL != zone); |
185 | if (0 == memcmp (zone, privkey, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey))) | 194 | if (0 == memcmp (zone, privkey, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey))) |
186 | { | 195 | { |
@@ -305,7 +314,11 @@ put_cont (void *cls, int32_t success, const char *emsg) | |||
305 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "All records created, starting iteration over all zones \n"); | 314 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "All records created, starting iteration over all zones \n"); |
306 | zi = GNUNET_NAMESTORE_zone_iteration_start (nsh, | 315 | zi = GNUNET_NAMESTORE_zone_iteration_start (nsh, |
307 | NULL, | 316 | NULL, |
317 | &fail_cb, | ||
318 | NULL, | ||
308 | &zone_proc, | 319 | &zone_proc, |
320 | NULL, | ||
321 | &zone_end, | ||
309 | NULL); | 322 | NULL); |
310 | if (zi == NULL) | 323 | if (zi == NULL) |
311 | { | 324 | { |
@@ -352,8 +365,6 @@ empty_zone_proc (void *cls, | |||
352 | unsigned int rd_count, | 365 | unsigned int rd_count, |
353 | const struct GNUNET_GNSRECORD_Data *rd) | 366 | const struct GNUNET_GNSRECORD_Data *rd) |
354 | { | 367 | { |
355 | char *hostkey_file; | ||
356 | |||
357 | GNUNET_assert (nsh == cls); | 368 | GNUNET_assert (nsh == cls); |
358 | if (NULL != zone) | 369 | if (NULL != zone) |
359 | { | 370 | { |
@@ -375,18 +386,31 @@ empty_zone_proc (void *cls, | |||
375 | endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); | 386 | endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); |
376 | return; | 387 | return; |
377 | } | 388 | } |
389 | GNUNET_assert (0); | ||
390 | } | ||
378 | 391 | ||
379 | 392 | ||
393 | static void | ||
394 | empty_zone_end (void *cls) | ||
395 | { | ||
396 | char *hostkey_file; | ||
397 | |||
380 | zi = NULL; | 398 | zi = NULL; |
381 | GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, | 399 | GNUNET_asprintf (&hostkey_file, |
382 | "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey"); | 400 | "zonefiles%s%s", |
383 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); | 401 | DIR_SEPARATOR_STR, |
402 | "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey"); | ||
403 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
404 | "Using zonekey file `%s' \n", | ||
405 | hostkey_file); | ||
384 | privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); | 406 | privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); |
385 | GNUNET_free (hostkey_file); | 407 | GNUNET_free (hostkey_file); |
386 | GNUNET_assert (privkey != NULL); | 408 | GNUNET_assert (privkey != NULL); |
387 | 409 | ||
388 | GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, | 410 | GNUNET_asprintf (&hostkey_file, |
389 | "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey"); | 411 | "zonefiles%s%s", |
412 | DIR_SEPARATOR_STR, | ||
413 | "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey"); | ||
390 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); | 414 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); |
391 | privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); | 415 | privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); |
392 | GNUNET_free (hostkey_file); | 416 | GNUNET_free (hostkey_file); |
@@ -396,7 +420,9 @@ empty_zone_proc (void *cls, | |||
396 | 420 | ||
397 | GNUNET_asprintf(&s_name_1, "dummy1"); | 421 | GNUNET_asprintf(&s_name_1, "dummy1"); |
398 | s_rd_1 = create_record(1); | 422 | s_rd_1 = create_record(1); |
399 | GNUNET_NAMESTORE_records_store (nsh, privkey, s_name_1, | 423 | GNUNET_NAMESTORE_records_store (nsh, |
424 | privkey, | ||
425 | s_name_1, | ||
400 | 1, s_rd_1, | 426 | 1, s_rd_1, |
401 | &put_cont, NULL); | 427 | &put_cont, NULL); |
402 | 428 | ||
@@ -404,8 +430,12 @@ empty_zone_proc (void *cls, | |||
404 | "Created record 2 \n"); | 430 | "Created record 2 \n"); |
405 | GNUNET_asprintf(&s_name_2, "dummy2"); | 431 | GNUNET_asprintf(&s_name_2, "dummy2"); |
406 | s_rd_2 = create_record(1); | 432 | s_rd_2 = create_record(1); |
407 | GNUNET_NAMESTORE_records_store (nsh, privkey, s_name_2, | 433 | GNUNET_NAMESTORE_records_store (nsh, |
408 | 1, s_rd_2, &put_cont, NULL); | 434 | privkey, |
435 | s_name_2, | ||
436 | 1, s_rd_2, | ||
437 | &put_cont, | ||
438 | NULL); | ||
409 | 439 | ||
410 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 440 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
411 | "Created record 3\n"); | 441 | "Created record 3\n"); |
@@ -436,7 +466,13 @@ run (void *cls, | |||
436 | GNUNET_break (NULL != nsh); | 466 | GNUNET_break (NULL != nsh); |
437 | /* first, iterate over empty namestore */ | 467 | /* first, iterate over empty namestore */ |
438 | zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, | 468 | zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, |
439 | NULL, &empty_zone_proc, nsh); | 469 | NULL, |
470 | &fail_cb, | ||
471 | NULL, | ||
472 | &empty_zone_proc, | ||
473 | nsh, | ||
474 | &empty_zone_end, | ||
475 | NULL); | ||
440 | if (NULL == zi) | 476 | if (NULL == zi) |
441 | { | 477 | { |
442 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to create zone iterator\n"); | 478 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to create zone iterator\n"); |