aboutsummaryrefslogtreecommitdiff
path: root/src/set/test_set_api.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/set/test_set_api.c')
-rw-r--r--src/set/test_set_api.c81
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;
55static void 55static void
56result_cb_set1 (void *cls, 56result_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,
101static void 102static void
102result_cb_set2 (void *cls, 103result_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
238iter_cb (void *cls, 250iter_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 */