X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fset%2Ftest_set_api.c;h=ec5226d50aee42a41cc37dfc05447f115c2cedcd;hb=fdbe690beeec04066f18302401096eb5212c3f6a;hp=db82b83b479715316dad071b0304f9532ded76a4;hpb=a900b29ddaa9ea46c731b054b5e3ef3e725b95a8;p=oweals%2Fgnunet.git diff --git a/src/set/test_set_api.c b/src/set/test_set_api.c index db82b83b4..ec5226d50 100644 --- a/src/set/test_set_api.c +++ b/src/set/test_set_api.c @@ -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 @@ -91,6 +91,10 @@ listen_cb (void *cls, { 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); @@ -108,10 +112,14 @@ 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); - oh = GNUNET_SET_prepare (&local_id, &app_id, NULL, 42, + oh = GNUNET_SET_prepare (&local_id, &app_id, &context_msg, 42, GNUNET_SET_RESULT_ADDED, result_cb_set1, NULL); GNUNET_SET_commit (oh, set1); @@ -128,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); } @@ -148,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); @@ -159,10 +173,50 @@ init_set1 (void) } +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 @@ -173,14 +227,27 @@ run (void *cls, struct GNUNET_TESTING_Peer *peer) { + struct GNUNET_SET_OperationHandle *my_oh; + config = cfg; - GNUNET_CRYPTO_get_host_identity (cfg, &local_id); - printf ("my id (from CRYPTO): %s\n", GNUNET_h2s (&local_id.hashPubKey)); + 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_h2s (&local_id.hashPubKey)); + 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 (); }