X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fset%2Ftest_set_api.c;h=ec5226d50aee42a41cc37dfc05447f115c2cedcd;hb=fdbe690beeec04066f18302401096eb5212c3f6a;hp=66e7a81d1f781da1d7e4cce189fc1fc56325be6e;hpb=4289fca5aeefd0652ae60bc16f90ed911c7e1c60;p=oweals%2Fgnunet.git diff --git a/src/set/test_set_api.c b/src/set/test_set_api.c index 66e7a81d1..ec5226d50 100644 --- a/src/set/test_set_api.c +++ b/src/set/test_set_api.c @@ -20,7 +20,7 @@ /** * @file set/test_set_api.c - * @brief testcase for consensus_api.c + * @brief testcase for set_api.c */ #include "platform.h" #include "gnunet_util_lib.h" @@ -36,7 +36,7 @@ static struct GNUNET_SET_Handle *set2; static struct GNUNET_SET_ListenHandle *listen_handle; const static struct GNUNET_CONFIGURATION_Handle *config; -int num_done; +static int iter_count; static void @@ -89,11 +89,17 @@ listen_cb (void *cls, const struct GNUNET_MessageHeader *context_msg, struct GNUNET_SET_Request *request) { + struct GNUNET_SET_OperationHandle *oh; + + GNUNET_assert (NULL != context_msg); + + GNUNET_assert (ntohs (context_msg->type) == GNUNET_MESSAGE_TYPE_TEST); + GNUNET_log (GNUNET_ERROR_TYPE_INFO, "listen cb called\n"); GNUNET_SET_listen_cancel (listen_handle); - GNUNET_SET_accept (request, set2, - GNUNET_SET_RESULT_ADDED, result_cb_set2, NULL); + oh = GNUNET_SET_accept (request, GNUNET_SET_RESULT_ADDED, result_cb_set2, NULL); + GNUNET_SET_commit (oh, set2); } @@ -105,11 +111,18 @@ listen_cb (void *cls, static void start (void *cls) { + struct GNUNET_SET_OperationHandle *oh; + struct GNUNET_MessageHeader context_msg; + + context_msg.size = htons (sizeof context_msg); + context_msg.type = htons (GNUNET_MESSAGE_TYPE_TEST); + listen_handle = GNUNET_SET_listen (config, GNUNET_SET_OPERATION_UNION, &app_id, listen_cb, NULL); - GNUNET_SET_evaluate (set1, &local_id, &app_id, NULL, 42, - GNUNET_SET_RESULT_ADDED, - result_cb_set1, NULL); + oh = GNUNET_SET_prepare (&local_id, &app_id, &context_msg, 42, + GNUNET_SET_RESULT_ADDED, + result_cb_set1, NULL); + GNUNET_SET_commit (oh, set1); } @@ -123,14 +136,18 @@ init_set2 (void *cls) { struct GNUNET_SET_Element element; - GNUNET_log (GNUNET_ERROR_TYPE_INFO, "initializing set 2\n"); + element.type = 0; + element.data = "hello"; element.size = strlen(element.data); GNUNET_SET_add_element (set2, &element, NULL, NULL); element.data = "quux"; element.size = strlen(element.data); + GNUNET_SET_add_element (set2, &element, NULL, NULL); + element.data = "baz"; + element.size = strlen(element.data); GNUNET_SET_add_element (set2, &element, start, NULL); } @@ -143,6 +160,8 @@ init_set1 (void) { struct GNUNET_SET_Element element; + element.type = 0; + element.data = "hello"; element.size = strlen(element.data); GNUNET_SET_add_element (set1, &element, NULL, NULL); @@ -153,10 +172,51 @@ init_set1 (void) GNUNET_log (GNUNET_ERROR_TYPE_INFO, "initialized set 1\n"); } + +static int +iter_cb (void *cls, + const struct GNUNET_SET_Element *element) +{ + if (NULL == element) + { + GNUNET_assert (iter_count == 3); + GNUNET_SET_destroy (cls); + return GNUNET_YES; + } + printf ("iter: got element\n"); + iter_count++; + return GNUNET_YES; +} + + +static void +test_iter () +{ + struct GNUNET_SET_Element element; + struct GNUNET_SET_Handle *iter_set; + + iter_set = GNUNET_SET_create (config, GNUNET_SET_OPERATION_UNION); + + element.type = 0; + + element.data = "hello"; + element.size = strlen(element.data); + GNUNET_SET_add_element (iter_set, &element, NULL, NULL); + element.data = "bar"; + element.size = strlen(element.data); + GNUNET_SET_add_element (iter_set, &element, NULL, NULL); + element.data = "quux"; + element.size = strlen(element.data); + GNUNET_SET_add_element (iter_set, &element, NULL, NULL); + + GNUNET_SET_iterate (iter_set, iter_cb, iter_set); +} + + /** * Signature of the 'main' function for a (single-peer) testcase that * is run using 'GNUNET_TESTING_peer_run'. - * + * * @param cls closure * @param cfg configuration of the peer that was started * @param peer identity of the peer that was created @@ -167,13 +227,27 @@ run (void *cls, struct GNUNET_TESTING_Peer *peer) { - static const char* app_str = "gnunet-set"; + struct GNUNET_SET_OperationHandle *my_oh; config = cfg; - GNUNET_CRYPTO_hash (app_str, strlen (app_str), &app_id); - GNUNET_CRYPTO_get_host_identity (cfg, &local_id); + GNUNET_CRYPTO_get_peer_identity (cfg, &local_id); + printf ("my id (from CRYPTO): %s\n", GNUNET_i2s (&local_id)); + GNUNET_TESTING_peer_get_identity (peer, &local_id); + printf ("my id (from TESTING): %s\n", GNUNET_i2s (&local_id)); + + test_iter (); + set1 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION); set2 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION); + GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, &app_id); + + /* test if canceling an uncommited request works! */ + my_oh = GNUNET_SET_prepare (&local_id, &app_id, NULL, 0, + GNUNET_SET_RESULT_ADDED, NULL, NULL); + + GNUNET_SET_operation_cancel (my_oh); + + /* test the real set reconciliation */ init_set1 (); }