diff options
Diffstat (limited to 'src/set/test_set_api.c')
-rw-r--r-- | src/set/test_set_api.c | 81 |
1 files changed, 58 insertions, 23 deletions
diff --git a/src/set/test_set_api.c b/src/set/test_set_api.c index 21af45f8a..ca7d8a4e2 100644 --- a/src/set/test_set_api.c +++ b/src/set/test_set_api.c | |||
@@ -55,6 +55,7 @@ static struct GNUNET_SCHEDULER_Task *tt; | |||
55 | static void | 55 | static void |
56 | result_cb_set1 (void *cls, | 56 | result_cb_set1 (void *cls, |
57 | const struct GNUNET_SET_Element *element, | 57 | const struct GNUNET_SET_Element *element, |
58 | uint64_t size, | ||
58 | enum GNUNET_SET_Status status) | 59 | enum GNUNET_SET_Status status) |
59 | { | 60 | { |
60 | switch (status) | 61 | switch (status) |
@@ -101,6 +102,7 @@ result_cb_set1 (void *cls, | |||
101 | static void | 102 | static void |
102 | result_cb_set2 (void *cls, | 103 | result_cb_set2 (void *cls, |
103 | const struct GNUNET_SET_Element *element, | 104 | const struct GNUNET_SET_Element *element, |
105 | uint64_t size, | ||
104 | enum GNUNET_SET_Status status) | 106 | enum GNUNET_SET_Status status) |
105 | { | 107 | { |
106 | switch (status) | 108 | switch (status) |
@@ -114,6 +116,7 @@ result_cb_set2 (void *cls, | |||
114 | oh2 = NULL; | 116 | oh2 = NULL; |
115 | fprintf (stderr, | 117 | fprintf (stderr, |
116 | "set 2: received failure status\n"); | 118 | "set 2: received failure status\n"); |
119 | GNUNET_SCHEDULER_shutdown (); | ||
117 | ret = 1; | 120 | ret = 1; |
118 | break; | 121 | break; |
119 | case GNUNET_SET_STATUS_DONE: | 122 | case GNUNET_SET_STATUS_DONE: |
@@ -145,10 +148,9 @@ listen_cb (void *cls, | |||
145 | GNUNET_assert (ntohs (context_msg->type) == GNUNET_MESSAGE_TYPE_DUMMY); | 148 | GNUNET_assert (ntohs (context_msg->type) == GNUNET_MESSAGE_TYPE_DUMMY); |
146 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 149 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
147 | "listen cb called\n"); | 150 | "listen cb called\n"); |
148 | GNUNET_SET_listen_cancel (listen_handle); | ||
149 | listen_handle = NULL; | ||
150 | oh2 = GNUNET_SET_accept (request, | 151 | oh2 = GNUNET_SET_accept (request, |
151 | GNUNET_SET_RESULT_ADDED, | 152 | GNUNET_SET_RESULT_ADDED, |
153 | (struct GNUNET_SET_Option[]) { 0 }, | ||
152 | &result_cb_set2, | 154 | &result_cb_set2, |
153 | NULL); | 155 | NULL); |
154 | GNUNET_SET_commit (oh2, | 156 | GNUNET_SET_commit (oh2, |
@@ -179,6 +181,7 @@ start (void *cls) | |||
179 | &app_id, | 181 | &app_id, |
180 | &context_msg, | 182 | &context_msg, |
181 | GNUNET_SET_RESULT_ADDED, | 183 | GNUNET_SET_RESULT_ADDED, |
184 | (struct GNUNET_SET_Option[]) { 0 }, | ||
182 | &result_cb_set1, | 185 | &result_cb_set1, |
183 | NULL); | 186 | NULL); |
184 | GNUNET_SET_commit (oh1, | 187 | GNUNET_SET_commit (oh1, |
@@ -196,19 +199,25 @@ init_set2 (void *cls) | |||
196 | { | 199 | { |
197 | struct GNUNET_SET_Element element; | 200 | struct GNUNET_SET_Element element; |
198 | 201 | ||
199 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "initializing set 2\n"); | 202 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
203 | "initializing set 2\n"); | ||
200 | 204 | ||
201 | element.element_type = 0; | 205 | element.element_type = 0; |
202 | |||
203 | element.data = "hello"; | 206 | element.data = "hello"; |
204 | element.size = strlen(element.data); | 207 | element.size = strlen(element.data); |
205 | GNUNET_SET_add_element (set2, &element, NULL, NULL); | 208 | GNUNET_SET_add_element (set2, |
209 | &element, | ||
210 | NULL, NULL); | ||
206 | element.data = "quux"; | 211 | element.data = "quux"; |
207 | element.size = strlen(element.data); | 212 | element.size = strlen(element.data); |
208 | GNUNET_SET_add_element (set2, &element, NULL, NULL); | 213 | GNUNET_SET_add_element (set2, |
214 | &element, | ||
215 | NULL, NULL); | ||
209 | element.data = "baz"; | 216 | element.data = "baz"; |
210 | element.size = strlen(element.data); | 217 | element.size = strlen(element.data); |
211 | GNUNET_SET_add_element (set2, &element, &start, NULL); | 218 | GNUNET_SET_add_element (set2, |
219 | &element, | ||
220 | &start, NULL); | ||
212 | } | 221 | } |
213 | 222 | ||
214 | 223 | ||
@@ -221,14 +230,17 @@ init_set1 (void) | |||
221 | struct GNUNET_SET_Element element; | 230 | struct GNUNET_SET_Element element; |
222 | 231 | ||
223 | element.element_type = 0; | 232 | element.element_type = 0; |
224 | |||
225 | element.data = "hello"; | 233 | element.data = "hello"; |
226 | element.size = strlen(element.data); | 234 | element.size = strlen(element.data); |
227 | GNUNET_SET_add_element (set1, &element, NULL, NULL); | 235 | GNUNET_SET_add_element (set1, |
236 | &element, | ||
237 | NULL, NULL); | ||
228 | element.data = "bar"; | 238 | element.data = "bar"; |
229 | element.size = strlen(element.data); | 239 | element.size = strlen(element.data); |
230 | GNUNET_SET_add_element (set1, &element, init_set2, NULL); | 240 | GNUNET_SET_add_element (set1, |
231 | 241 | &element, | |
242 | &init_set2, | ||
243 | NULL); | ||
232 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | 244 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
233 | "initialized set 1\n"); | 245 | "initialized set 1\n"); |
234 | } | 246 | } |
@@ -238,10 +250,15 @@ static int | |||
238 | iter_cb (void *cls, | 250 | iter_cb (void *cls, |
239 | const struct GNUNET_SET_Element *element) | 251 | const struct GNUNET_SET_Element *element) |
240 | { | 252 | { |
253 | struct GNUNET_SET_Handle *set = cls; | ||
254 | |||
241 | if (NULL == element) | 255 | if (NULL == element) |
242 | { | 256 | { |
243 | GNUNET_assert (3 == iter_count); | 257 | GNUNET_assert (3 == iter_count); |
244 | GNUNET_SET_destroy (cls); | 258 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
259 | "Iteration finished, destroying set %p\n", | ||
260 | set); | ||
261 | GNUNET_SET_destroy (set); | ||
245 | return GNUNET_YES; | 262 | return GNUNET_YES; |
246 | } | 263 | } |
247 | iter_count++; | 264 | iter_count++; |
@@ -258,21 +275,31 @@ test_iter () | |||
258 | struct GNUNET_SET_Element element; | 275 | struct GNUNET_SET_Element element; |
259 | struct GNUNET_SET_Handle *iter_set; | 276 | struct GNUNET_SET_Handle *iter_set; |
260 | 277 | ||
261 | iter_set = GNUNET_SET_create (config, GNUNET_SET_OPERATION_UNION); | 278 | iter_set = GNUNET_SET_create (config, |
262 | 279 | GNUNET_SET_OPERATION_UNION); | |
280 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
281 | "Testing iteration over 3 elements on set %p\n", | ||
282 | iter_set); | ||
263 | element.element_type = 0; | 283 | element.element_type = 0; |
264 | 284 | ||
265 | element.data = "hello"; | 285 | element.data = "hello"; |
266 | element.size = strlen(element.data); | 286 | element.size = strlen(element.data); |
267 | GNUNET_SET_add_element (iter_set, &element, NULL, NULL); | 287 | GNUNET_SET_add_element (iter_set, |
288 | &element, | ||
289 | NULL, NULL); | ||
268 | element.data = "bar"; | 290 | element.data = "bar"; |
269 | element.size = strlen(element.data); | 291 | element.size = strlen(element.data); |
270 | GNUNET_SET_add_element (iter_set, &element, NULL, NULL); | 292 | GNUNET_SET_add_element (iter_set, |
293 | &element, | ||
294 | NULL, NULL); | ||
271 | element.data = "quux"; | 295 | element.data = "quux"; |
272 | element.size = strlen(element.data); | 296 | element.size = strlen(element.data); |
273 | GNUNET_SET_add_element (iter_set, &element, NULL, NULL); | 297 | GNUNET_SET_add_element (iter_set, |
274 | 298 | &element, | |
275 | GNUNET_SET_iterate (iter_set, iter_cb, iter_set); | 299 | NULL, NULL); |
300 | GNUNET_SET_iterate (iter_set, | ||
301 | &iter_cb, | ||
302 | iter_set); | ||
276 | } | 303 | } |
277 | 304 | ||
278 | 305 | ||
@@ -368,19 +395,27 @@ run (void *cls, | |||
368 | GNUNET_i2s (&local_id)); | 395 | GNUNET_i2s (&local_id)); |
369 | test_iter (); | 396 | test_iter (); |
370 | 397 | ||
371 | set1 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION); | 398 | set1 = GNUNET_SET_create (cfg, |
372 | set2 = GNUNET_SET_create (cfg, GNUNET_SET_OPERATION_UNION); | 399 | GNUNET_SET_OPERATION_UNION); |
400 | set2 = GNUNET_SET_create (cfg, | ||
401 | GNUNET_SET_OPERATION_UNION); | ||
402 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
403 | "Created sets %p and %p for union operation\n", | ||
404 | set1, | ||
405 | set2); | ||
373 | GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, | 406 | GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, |
374 | &app_id); | 407 | &app_id); |
375 | 408 | ||
376 | ///* test if canceling an uncommited request works! */ | 409 | /* test if canceling an uncommited request works! */ |
410 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
411 | "Launching and instantly stopping set operation\n"); | ||
377 | my_oh = GNUNET_SET_prepare (&local_id, | 412 | my_oh = GNUNET_SET_prepare (&local_id, |
378 | &app_id, | 413 | &app_id, |
379 | NULL, | 414 | NULL, |
380 | GNUNET_SET_RESULT_ADDED, | 415 | GNUNET_SET_RESULT_ADDED, |
416 | (struct GNUNET_SET_Option[]) { 0 }, | ||
381 | NULL, | 417 | NULL, |
382 | NULL); | 418 | NULL); |
383 | |||
384 | GNUNET_SET_operation_cancel (my_oh); | 419 | GNUNET_SET_operation_cancel (my_oh); |
385 | 420 | ||
386 | /* test the real set reconciliation */ | 421 | /* test the real set reconciliation */ |