GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
{
struct GNUNET_TIME_Absolute av;
- av.value = now.value + 200000 - i * 1000;
+ av.value = now.value + 20000000 - i * 1000;
return av;
}
RP_GET_MULTIPLE_DONE,
RP_UPDATE,
RP_UPDATE_VALIDATE,
- RP_UPDATE_DONE
+ RP_UPDATE_DONE,
+ RP_ERROR
};
GNUNET_HashCode key;
int i;
int rid;
- int *iptr;
struct GNUNET_SCHEDULER_Handle *sched;
const struct GNUNET_CONFIGURATION_Handle *cfg;
void *data;
{
struct CpsRunContext *crc = cls;
if (GNUNET_OK != success)
- GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
- "%s\n", msg);
- GNUNET_assert (GNUNET_OK == success);
+ {
+ ok = 42;
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "%s\n", msg);
+ GNUNET_SCHEDULER_shutdown (crc->sched);
+ return;
+ }
GNUNET_free_non_null (crc->data);
crc->data = NULL;
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
GNUNET_assert (0 < success);
crc->rid = success;
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
const GNUNET_HashCode * key,
uint32_t size,
const void *data,
- uint32_t type,
+ enum GNUNET_BLOCK_Type type,
uint32_t priority,
uint32_t anonymity,
struct GNUNET_TIME_Absolute
crc->i = ITERATIONS;
}
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
GNUNET_assert (priority == get_priority (i));
GNUNET_assert (anonymity == get_anonymity(i));
GNUNET_assert (expiration.value == get_expiration(i).value);
+ GNUNET_DATASTORE_get_next (datastore, GNUNET_YES);
}
static void
delete_value (void *cls,
- const GNUNET_HashCode * key,
- uint32_t size,
- const void *data,
- uint32_t type,
- uint32_t priority,
- uint32_t anonymity,
- struct GNUNET_TIME_Absolute
- expiration, uint64_t uid)
+ const GNUNET_HashCode * key,
+ uint32_t size,
+ const void *data,
+ enum GNUNET_BLOCK_Type type,
+ uint32_t priority,
+ uint32_t anonymity,
+ struct GNUNET_TIME_Absolute
+ expiration, uint64_t uid)
{
struct CpsRunContext *crc = cls;
if (key == NULL)
{
- crc->phase = RP_DO_DEL;
+ if (crc->data == NULL)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Content %u not found!\n",
+ crc->i);
+ crc->phase = RP_ERROR;
+ }
+ else
+ {
+ crc->phase = RP_DO_DEL;
+ }
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
crc->key = *key;
crc->data = GNUNET_malloc (size);
memcpy (crc->data, data, size);
+ GNUNET_DATASTORE_get_next (datastore, GNUNET_YES);
}
static void
check_nothing (void *cls,
- const GNUNET_HashCode * key,
- uint32_t size,
- const void *data,
- uint32_t type,
- uint32_t priority,
- uint32_t anonymity,
- struct GNUNET_TIME_Absolute
- expiration, uint64_t uid)
+ const GNUNET_HashCode * key,
+ uint32_t size,
+ const void *data,
+ enum GNUNET_BLOCK_Type type,
+ uint32_t priority,
+ uint32_t anonymity,
+ struct GNUNET_TIME_Absolute
+ expiration, uint64_t uid)
{
struct CpsRunContext *crc = cls;
GNUNET_assert (key == NULL);
crc->phase = RP_RESERVE;
}
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
const GNUNET_HashCode * key,
uint32_t size,
const void *data,
- uint32_t type,
+ enum GNUNET_BLOCK_Type type,
uint32_t priority,
uint32_t anonymity,
struct GNUNET_TIME_Absolute
if (key == NULL)
{
- GNUNET_assert (crc->phase == RP_GET_MULTIPLE_DONE);
- crc->phase = RP_UPDATE;
+ if (crc->phase != RP_GET_MULTIPLE_DONE)
+ {
+ GNUNET_break (0);
+ crc->phase = RP_ERROR;
+ }
+ else
+ {
+ crc->phase = RP_UPDATE;
+ }
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
return;
}
- crc->phase++;
+ switch (crc->phase)
+ {
+ case RP_GET_MULTIPLE:
+ crc->phase = RP_GET_MULTIPLE_NEXT;
+ break;
+ case RP_GET_MULTIPLE_NEXT:
+ crc->phase = RP_GET_MULTIPLE_DONE;
+ break;
+ case RP_GET_MULTIPLE_DONE:
+ /* do not advance further */
+ break;
+ default:
+ GNUNET_break (0);
+ break;
+ }
+#if VERBOSE
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+ "Test in phase %u\n", crc->phase);
+#endif
if (priority == get_priority (42))
crc->uid = uid;
+ GNUNET_DATASTORE_get_next (datastore, GNUNET_YES);
}
const GNUNET_HashCode * key,
uint32_t size,
const void *data,
- uint32_t type,
+ enum GNUNET_BLOCK_Type type,
uint32_t priority,
uint32_t anonymity,
struct GNUNET_TIME_Absolute
GNUNET_assert (crc->phase == RP_UPDATE_DONE);
crc->phase = RP_DONE;
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
}
else
GNUNET_assert (size == get_size (43));
+ GNUNET_DATASTORE_get_next (datastore, GNUNET_YES);
}
get_priority (crc->i),
get_anonymity (crc->i),
get_expiration (crc->i),
- TIMEOUT,
+ 1, 1, TIMEOUT,
&check_success,
crc);
crc->i++;
GNUNET_DATASTORE_get (datastore,
&crc->key,
get_type (crc->i),
+ 1, 1, TIMEOUT,
&check_value,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_DEL:
crc->i--;
"DEL",
crc->i);
#endif
+ crc->data = NULL;
GNUNET_CRYPTO_hash (&crc->i, sizeof (int), &crc->key);
GNUNET_DATASTORE_get (datastore,
&crc->key,
get_type (crc->i),
+ 1, 1, TIMEOUT,
&delete_value,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_DO_DEL:
#if VERBOSE
&crc->key,
crc->size,
crc->data,
+ 1, 1, TIMEOUT,
&check_success,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_DELVALIDATE:
crc->i--;
GNUNET_DATASTORE_get (datastore,
&crc->key,
get_type (crc->i),
+ 1, 1, TIMEOUT,
&check_nothing,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_RESERVE:
crc->phase = RP_PUT_MULTIPLE;
GNUNET_DATASTORE_reserve (datastore,
128*1024,
2,
+ 1, 1, TIMEOUT,
&get_reserved,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_PUT_MULTIPLE:
crc->phase = RP_PUT_MULTIPLE_NEXT;
get_priority (42),
get_anonymity (42),
get_expiration (42),
- TIMEOUT,
+ 1, 1, TIMEOUT,
&check_success,
crc);
break;
get_priority (43),
get_anonymity (43),
get_expiration (43),
- TIMEOUT,
+ 1, 1, TIMEOUT,
&check_success,
crc);
break;
GNUNET_DATASTORE_get (datastore,
&crc->key,
get_type (42),
+ 1, 1, TIMEOUT,
&check_multiple,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_GET_MULTIPLE_NEXT:
case RP_GET_MULTIPLE_DONE:
crc->uid,
100,
get_expiration (42),
+ 1, 1, TIMEOUT,
&check_success,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_UPDATE_VALIDATE:
GNUNET_DATASTORE_get (datastore,
&crc->key,
get_type (42),
+ 1, 1, TIMEOUT,
&check_update,
- crc,
- TIMEOUT);
+ crc);
break;
case RP_UPDATE_DONE:
GNUNET_assert (0);
GNUNET_DATASTORE_disconnect (datastore, GNUNET_YES);
GNUNET_free (crc);
ok = 0;
+ break;
+ case RP_ERROR:
+ GNUNET_DATASTORE_disconnect (datastore, GNUNET_YES);
+ GNUNET_free (crc);
+ ok = 43;
+ break;
}
}
now = GNUNET_TIME_absolute_get ();
datastore = GNUNET_DATASTORE_connect (cfg, sched);
GNUNET_SCHEDULER_add_continuation (crc->sched,
- GNUNET_NO,
&run_continuation,
crc,
GNUNET_SCHEDULER_REASON_PREREQ_DONE);
struct GNUNET_GETOPT_CommandLineOption options[] = {
GNUNET_GETOPT_OPTION_END
};
- pid = GNUNET_OS_start_process ("gnunet-service-datastore",
- "gnunet-service-datastore",
+ pid = GNUNET_OS_start_process (NULL, NULL, "gnunet-service-arm",
+ "gnunet-service-arm",
#if VERBOSE
"-L", "DEBUG",
#endif
"-c", "test_datastore_api_data.conf", NULL);
- sleep (1);
GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1,
argv, "test-datastore-api", "nohelp",
options, &run, NULL);
{
int ret;
- GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore");
+ GNUNET_DISK_directory_remove ("/tmp/test-gnunet-datastore");
GNUNET_log_setup ("test-datastore-api",
#if VERBOSE
"DEBUG",
#endif
NULL);
ret = check ();
- GNUNET_DISK_directory_remove ("/tmp/test-gnunetd-datastore");
+ GNUNET_DISK_directory_remove ("/tmp/test-gnunet-datastore");
return ret;
}