aboutsummaryrefslogtreecommitdiff
path: root/src/namestore/test_namestore_api_zone_iteration_specific_zone.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_specific_zone.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_specific_zone.c')
-rw-r--r--src/namestore/test_namestore_api_zone_iteration_specific_zone.c162
1 files changed, 104 insertions, 58 deletions
diff --git a/src/namestore/test_namestore_api_zone_iteration_specific_zone.c b/src/namestore/test_namestore_api_zone_iteration_specific_zone.c
index 1a0279f50..c5ae927b0 100644
--- a/src/namestore/test_namestore_api_zone_iteration_specific_zone.c
+++ b/src/namestore/test_namestore_api_zone_iteration_specific_zone.c
@@ -156,30 +156,21 @@ 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,
162 unsigned int rd_count, 169 unsigned int rd_count,
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))
167 {
168 GNUNET_break (2 == returned_records);
169 if (2 == returned_records)
170 {
171 res = 0; /* Last iteraterator callback, we are done */
172 zi = NULL;
173 }
174 else
175 res = 1;
176 173
177 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
178 "Received last result, iteration done after receing %u results\n",
179 returned_records );
180 GNUNET_SCHEDULER_add_now (&end, NULL);
181 return;
182 }
183 GNUNET_assert (NULL != zone); 174 GNUNET_assert (NULL != zone);
184 if (0 == memcmp (zone, 175 if (0 == memcmp (zone,
185 privkey, 176 privkey,
@@ -258,6 +249,25 @@ zone_proc (void *cls,
258 249
259 250
260static void 251static void
252zone_proc_end (void *cls)
253{
254 GNUNET_break (2 == returned_records);
255 if (2 == returned_records)
256 {
257 res = 0; /* Last iteraterator callback, we are done */
258 zi = NULL;
259 }
260 else
261 res = 1;
262
263 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
264 "Received last result, iteration done after receing %u results\n",
265 returned_records);
266 GNUNET_SCHEDULER_add_now (&end, NULL);
267}
268
269
270static void
261put_cont (void *cls, int32_t success, const char *emsg) 271put_cont (void *cls, int32_t success, const char *emsg)
262{ 272{
263 static int c = 0; 273 static int c = 0;
@@ -288,8 +298,12 @@ put_cont (void *cls, int32_t success, const char *emsg)
288 "All records created, starting iteration over all zones \n"); 298 "All records created, starting iteration over all zones \n");
289 zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, 299 zi = GNUNET_NAMESTORE_zone_iteration_start(nsh,
290 privkey, 300 privkey,
301 &fail_cb,
302 NULL,
291 &zone_proc, 303 &zone_proc,
292 NULL); 304 NULL,
305 &zone_proc_end,
306 NULL);
293 if (zi == NULL) 307 if (zi == NULL)
294 { 308 {
295 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 309 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -336,42 +350,55 @@ empty_zone_proc (void *cls,
336 unsigned int rd_count, 350 unsigned int rd_count,
337 const struct GNUNET_GNSRECORD_Data *rd) 351 const struct GNUNET_GNSRECORD_Data *rd)
338{ 352{
339 char *hostkey_file;
340
341 GNUNET_assert (nsh == cls); 353 GNUNET_assert (nsh == cls);
342 if (NULL != zone) 354 if (NULL != zone)
343 { 355 {
344 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 356 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
345 _("Expected empty zone but received zone private key\n")); 357 _("Expected empty zone but received zone private key\n"));
346 GNUNET_break (0); 358 GNUNET_break (0);
347 if (endbadly_task != NULL) 359 if (endbadly_task != NULL)
348 GNUNET_SCHEDULER_cancel (endbadly_task); 360 GNUNET_SCHEDULER_cancel (endbadly_task);
349 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); 361 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
350 return; 362 return;
351 } 363 }
352 if ((NULL != label) || (NULL != rd) || (0 != rd_count)) 364 if ((NULL != label) || (NULL != rd) || (0 != rd_count))
353 { 365 {
354 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 366 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
355 _("Expected no zone content but received data\n")); 367 _("Expected no zone content but received data\n"));
356 GNUNET_break (0); 368 GNUNET_break (0);
357 if (endbadly_task != NULL) 369 if (endbadly_task != NULL)
358 GNUNET_SCHEDULER_cancel (endbadly_task); 370 GNUNET_SCHEDULER_cancel (endbadly_task);
359 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); 371 endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL);
360 return; 372 return;
361 } 373 }
374 GNUNET_assert (0);
375}
362 376
363 377
378static void
379empty_zone_proc_end (void *cls)
380{
381 char *hostkey_file;
382
364 zi = NULL; 383 zi = NULL;
365 GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, 384 GNUNET_asprintf (&hostkey_file,
366 "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey"); 385 "zonefiles%s%s",
367 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); 386 DIR_SEPARATOR_STR,
368 privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); 387 "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey");
388 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
389 "Using zonekey file `%s'\n",
390 hostkey_file);
391 privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file (hostkey_file);
369 GNUNET_free (hostkey_file); 392 GNUNET_free (hostkey_file);
370 GNUNET_assert (privkey != NULL); 393 GNUNET_assert (privkey != NULL);
371 394
372 GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, 395 GNUNET_asprintf(&hostkey_file,
373 "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey"); 396 "zonefiles%s%s",
374 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); 397 DIR_SEPARATOR_STR,
398 "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey");
399 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
400 "Using zonekey file `%s' \n",
401 hostkey_file);
375 privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); 402 privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file);
376 GNUNET_free (hostkey_file); 403 GNUNET_free (hostkey_file);
377 GNUNET_assert (privkey2 != NULL); 404 GNUNET_assert (privkey2 != NULL);
@@ -380,25 +407,39 @@ empty_zone_proc (void *cls,
380 "Created record 1\n"); 407 "Created record 1\n");
381 408
382 GNUNET_asprintf(&s_name_1, "dummy1"); 409 GNUNET_asprintf(&s_name_1, "dummy1");
383 s_rd_1 = create_record(1); 410 s_rd_1 = create_record (1);
384 GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_1, 411 GNUNET_NAMESTORE_records_store (nsh,
385 1, s_rd_1, &put_cont, NULL); 412 privkey,
413 s_name_1,
414 1,
415 s_rd_1,
416 &put_cont,
417 NULL);
386 418
387 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 419 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
388 "Created record 2 \n"); 420 "Created record 2 \n");
389 GNUNET_asprintf(&s_name_2, "dummy2"); 421 GNUNET_asprintf(&s_name_2, "dummy2");
390 s_rd_2 = create_record(1); 422 s_rd_2 = create_record (1);
391 GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_2, 423 GNUNET_NAMESTORE_records_store (nsh,
392 1, s_rd_2, &put_cont, NULL); 424 privkey,
425 s_name_2,
426 1,
427 s_rd_2,
428 &put_cont,
429 NULL);
393 430
394 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 431 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
395 "Created record 3\n"); 432 "Created record 3\n");
396 433
397 /* name in different zone */ 434 /* name in different zone */
398 GNUNET_asprintf(&s_name_3, "dummy3"); 435 GNUNET_asprintf(&s_name_3, "dummy3");
399 s_rd_3 = create_record(1); 436 s_rd_3 = create_record (1);
400 GNUNET_NAMESTORE_records_store(nsh, privkey2, s_name_3, 437 GNUNET_NAMESTORE_records_store (nsh,
401 1, s_rd_3, &put_cont, NULL); 438 privkey2,
439 s_name_3,
440 1, s_rd_3,
441 &put_cont,
442 NULL);
402} 443}
403 444
404 445
@@ -423,7 +464,12 @@ run (void *cls,
423 /* first, iterate over empty namestore */ 464 /* first, iterate over empty namestore */
424 zi = GNUNET_NAMESTORE_zone_iteration_start (nsh, 465 zi = GNUNET_NAMESTORE_zone_iteration_start (nsh,
425 NULL, 466 NULL,
426 &empty_zone_proc, nsh); 467 &fail_cb,
468 NULL,
469 &empty_zone_proc,
470 nsh,
471 &empty_zone_proc_end,
472 nsh);
427 if (NULL == zi) 473 if (NULL == zi)
428 { 474 {
429 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 475 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,