aboutsummaryrefslogtreecommitdiff
path: root/src/testbed/test_testbed_api_operations.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/testbed/test_testbed_api_operations.c')
-rw-r--r--src/testbed/test_testbed_api_operations.c445
1 files changed, 223 insertions, 222 deletions
diff --git a/src/testbed/test_testbed_api_operations.c b/src/testbed/test_testbed_api_operations.c
index f88f85304..832a42576 100644
--- a/src/testbed/test_testbed_api_operations.c
+++ b/src/testbed/test_testbed_api_operations.c
@@ -32,13 +32,13 @@
32 * Generic logging shortcut 32 * Generic logging shortcut
33 */ 33 */
34#define LOG(kind, ...) \ 34#define LOG(kind, ...) \
35 GNUNET_log(kind, __VA_ARGS__) 35 GNUNET_log (kind, __VA_ARGS__)
36 36
37/** 37/**
38 * Delay to start step task 38 * Delay to start step task
39 */ 39 */
40#define STEP_DELAY \ 40#define STEP_DELAY \
41 GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_MILLISECONDS, 500) 41 GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, 500)
42 42
43/** 43/**
44 * Queue A. Initially the max active is set to 2 and then reduced to 0 - this 44 * Queue A. Initially the max active is set to 2 and then reduced to 0 - this
@@ -115,13 +115,14 @@ struct GNUNET_TESTBED_Operation *op9;
115/** 115/**
116 * The delay task identifier 116 * The delay task identifier
117 */ 117 */
118struct GNUNET_SCHEDULER_Task * step_task; 118struct GNUNET_SCHEDULER_Task *step_task;
119 119
120 120
121/** 121/**
122 * Enumeration of test stages 122 * Enumeration of test stages
123 */ 123 */
124enum Test { 124enum Test
125{
125 /** 126 /**
126 * Initial stage 127 * Initial stage
127 */ 128 */
@@ -241,7 +242,7 @@ enum Test result;
241 * operation can be activated. 242 * operation can be activated.
242 */ 243 */
243static void 244static void
244start_cb(void *cls); 245start_cb (void *cls);
245 246
246 247
247/** 248/**
@@ -254,7 +255,7 @@ start_cb(void *cls);
254 * in 'cls' and release all resources associated with the operation. 255 * in 'cls' and release all resources associated with the operation.
255 */ 256 */
256static void 257static void
257release_cb(void *cls); 258release_cb (void *cls);
258 259
259 260
260/** 261/**
@@ -263,79 +264,79 @@ release_cb(void *cls);
263 * @param cls NULL 264 * @param cls NULL
264 */ 265 */
265static void 266static void
266step(void *cls) 267step (void *cls)
267{ 268{
268 GNUNET_assert(NULL != step_task); 269 GNUNET_assert (NULL != step_task);
269 step_task = NULL; 270 step_task = NULL;
270 switch (result) 271 switch (result)
271 { 272 {
272 case TEST_OP1_STARTED: 273 case TEST_OP1_STARTED:
273 GNUNET_TESTBED_operation_release_(op1); 274 GNUNET_TESTBED_operation_release_ (op1);
274 GNUNET_TESTBED_operation_queue_reset_max_active_(q1, 0); 275 GNUNET_TESTBED_operation_queue_reset_max_active_ (q1, 0);
275 op3 = GNUNET_TESTBED_operation_create_(&op3, &start_cb, &release_cb); 276 op3 = GNUNET_TESTBED_operation_create_ (&op3, &start_cb, &release_cb);
276 GNUNET_TESTBED_operation_queue_insert2_(q1, op3, 2); 277 GNUNET_TESTBED_operation_queue_insert2_ (q1, op3, 2);
277 GNUNET_TESTBED_operation_queue_insert2_(q2, op3, 2); 278 GNUNET_TESTBED_operation_queue_insert2_ (q2, op3, 2);
278 GNUNET_TESTBED_operation_begin_wait_(op3); 279 GNUNET_TESTBED_operation_begin_wait_ (op3);
279 op4 = GNUNET_TESTBED_operation_create_(&op4, &start_cb, &release_cb); 280 op4 = GNUNET_TESTBED_operation_create_ (&op4, &start_cb, &release_cb);
280 GNUNET_TESTBED_operation_queue_insert2_(q1, op4, 2); 281 GNUNET_TESTBED_operation_queue_insert2_ (q1, op4, 2);
281 GNUNET_TESTBED_operation_queue_insert2_(q2, op4, 2); 282 GNUNET_TESTBED_operation_queue_insert2_ (q2, op4, 2);
282 GNUNET_TESTBED_operation_begin_wait_(op4); 283 GNUNET_TESTBED_operation_begin_wait_ (op4);
283 break; 284 break;
284 285
285 case TEST_OP1_RELEASED: 286 case TEST_OP1_RELEASED:
286 result = TEST_PAUSE; 287 result = TEST_PAUSE;
287 GNUNET_TESTBED_operation_queue_reset_max_active_(q1, 2); 288 GNUNET_TESTBED_operation_queue_reset_max_active_ (q1, 2);
288 break; 289 break;
289 290
290 case TEST_OP2_STARTED: 291 case TEST_OP2_STARTED:
291 GNUNET_TESTBED_operation_release_(op2); 292 GNUNET_TESTBED_operation_release_ (op2);
292 break; 293 break;
293 294
294 case TEST_OP3_STARTED: 295 case TEST_OP3_STARTED:
295 GNUNET_TESTBED_operation_release_(op3); 296 GNUNET_TESTBED_operation_release_ (op3);
296 break; 297 break;
297 298
298 case TEST_OP4_STARTED: 299 case TEST_OP4_STARTED:
299 GNUNET_TESTBED_operation_release_(op4); 300 GNUNET_TESTBED_operation_release_ (op4);
300 break; 301 break;
301 302
302 case TEST_OP6_RELEASED: 303 case TEST_OP6_RELEASED:
303 op8 = GNUNET_TESTBED_operation_create_(&op8, &start_cb, &release_cb); 304 op8 = GNUNET_TESTBED_operation_create_ (&op8, &start_cb, &release_cb);
304 GNUNET_TESTBED_operation_queue_insert2_(q1, op8, 2); 305 GNUNET_TESTBED_operation_queue_insert2_ (q1, op8, 2);
305 GNUNET_TESTBED_operation_queue_insert2_(q2, op8, 2); 306 GNUNET_TESTBED_operation_queue_insert2_ (q2, op8, 2);
306 result = TEST_OP8_WAITING; 307 result = TEST_OP8_WAITING;
307 GNUNET_TESTBED_operation_begin_wait_(op8); 308 GNUNET_TESTBED_operation_begin_wait_ (op8);
308 break; 309 break;
309 310
310 case TEST_OP8_STARTED: 311 case TEST_OP8_STARTED:
311 GNUNET_TESTBED_operation_inactivate_(op8); 312 GNUNET_TESTBED_operation_inactivate_ (op8);
312 result = TEST_OP8_INACTIVE_1; 313 result = TEST_OP8_INACTIVE_1;
313 step_task = GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 314 step_task = GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
314 break; 315 break;
315 316
316 case TEST_OP8_INACTIVE_1: 317 case TEST_OP8_INACTIVE_1:
317 GNUNET_TESTBED_operation_activate_(op8); 318 GNUNET_TESTBED_operation_activate_ (op8);
318 result = TEST_OP8_ACTIVE; 319 result = TEST_OP8_ACTIVE;
319 op9 = GNUNET_TESTBED_operation_create_(&op9, &start_cb, &release_cb); 320 op9 = GNUNET_TESTBED_operation_create_ (&op9, &start_cb, &release_cb);
320 GNUNET_TESTBED_operation_queue_insert2_(q1, op9, 1); 321 GNUNET_TESTBED_operation_queue_insert2_ (q1, op9, 1);
321 GNUNET_TESTBED_operation_queue_insert2_(q2, op9, 1); 322 GNUNET_TESTBED_operation_queue_insert2_ (q2, op9, 1);
322 GNUNET_TESTBED_operation_begin_wait_(op9); 323 GNUNET_TESTBED_operation_begin_wait_ (op9);
323 step_task = GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 324 step_task = GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
324 break; 325 break;
325 326
326 case TEST_OP8_ACTIVE: 327 case TEST_OP8_ACTIVE:
327 GNUNET_TESTBED_operation_inactivate_(op8); 328 GNUNET_TESTBED_operation_inactivate_ (op8);
328 /* op8 should be released by now due to above call */ 329 /* op8 should be released by now due to above call */
329 GNUNET_assert(TEST_OP8_RELEASED == result); 330 GNUNET_assert (TEST_OP8_RELEASED == result);
330 break; 331 break;
331 332
332 case TEST_OP9_STARTED: 333 case TEST_OP9_STARTED:
333 GNUNET_TESTBED_operation_release_(op9); 334 GNUNET_TESTBED_operation_release_ (op9);
334 break; 335 break;
335 336
336 default: 337 default:
337 GNUNET_assert(0); 338 GNUNET_assert (0);
338 } 339 }
339} 340}
340 341
341 342
@@ -345,71 +346,71 @@ step(void *cls)
345 * operation can be activated. 346 * operation can be activated.
346 */ 347 */
347static void 348static void
348start_cb(void *cls) 349start_cb (void *cls)
349{ 350{
350 switch (result) 351 switch (result)
351 { 352 {
352 case TEST_INIT: 353 case TEST_INIT:
353 GNUNET_assert(&op1 == cls); 354 GNUNET_assert (&op1 == cls);
354 result = TEST_OP1_STARTED; 355 result = TEST_OP1_STARTED;
355 GNUNET_assert(NULL == step_task); 356 GNUNET_assert (NULL == step_task);
356 step_task = 357 step_task =
357 GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 358 GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
358 break; 359 break;
359 360
360 case TEST_PAUSE: 361 case TEST_PAUSE:
361 GNUNET_assert(&op2 == cls); 362 GNUNET_assert (&op2 == cls);
362 result = TEST_OP2_STARTED; 363 result = TEST_OP2_STARTED;
363 GNUNET_assert(NULL == step_task); 364 GNUNET_assert (NULL == step_task);
364 step_task = 365 step_task =
365 GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 366 GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
366 break; 367 break;
367 368
368 case TEST_OP2_RELEASED: 369 case TEST_OP2_RELEASED:
369 GNUNET_assert(&op3 == cls); 370 GNUNET_assert (&op3 == cls);
370 result = TEST_OP3_STARTED; 371 result = TEST_OP3_STARTED;
371 GNUNET_assert(NULL == step_task); 372 GNUNET_assert (NULL == step_task);
372 step_task = 373 step_task =
373 GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 374 GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
374 break; 375 break;
375 376
376 case TEST_OP3_RELEASED: 377 case TEST_OP3_RELEASED:
377 GNUNET_assert(&op4 == cls); 378 GNUNET_assert (&op4 == cls);
378 result = TEST_OP4_STARTED; 379 result = TEST_OP4_STARTED;
379 GNUNET_assert(NULL == step_task); 380 GNUNET_assert (NULL == step_task);
380 step_task = 381 step_task =
381 GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 382 GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
382 break; 383 break;
383 384
384 case TEST_OP4_RELEASED: 385 case TEST_OP4_RELEASED:
385 { 386 {
386 static int nops; 387 static int nops;
387 388
388 nops++; 389 nops++;
389 if (nops == 3) 390 if (nops == 3)
390 { 391 {
391 result = TEST_OP5_6_7_STARTED; 392 result = TEST_OP5_6_7_STARTED;
392 GNUNET_TESTBED_operation_release_(op5); 393 GNUNET_TESTBED_operation_release_ (op5);
393 op5 = NULL; 394 op5 = NULL;
394 } 395 }
395 } 396 }
396 break; 397 break;
397 398
398 case TEST_OP7_RELEASED: 399 case TEST_OP7_RELEASED:
399 GNUNET_assert(&op8 == cls); 400 GNUNET_assert (&op8 == cls);
400 result = TEST_OP8_STARTED; 401 result = TEST_OP8_STARTED;
401 step_task = GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 402 step_task = GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
402 break; 403 break;
403 404
404 case TEST_OP8_RELEASED: 405 case TEST_OP8_RELEASED:
405 GNUNET_assert(&op9 == cls); 406 GNUNET_assert (&op9 == cls);
406 result = TEST_OP9_STARTED; 407 result = TEST_OP9_STARTED;
407 step_task = GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 408 step_task = GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
408 break; 409 break;
409 410
410 default: 411 default:
411 GNUNET_assert(0); 412 GNUNET_assert (0);
412 } 413 }
413} 414}
414 415
415 416
@@ -423,82 +424,82 @@ start_cb(void *cls)
423 * in 'cls' and release all resources associated with the operation. 424 * in 'cls' and release all resources associated with the operation.
424 */ 425 */
425static void 426static void
426release_cb(void *cls) 427release_cb (void *cls)
427{ 428{
428 switch (result) 429 switch (result)
429 { 430 {
430 case TEST_OP1_STARTED: 431 case TEST_OP1_STARTED:
431 GNUNET_assert(&op1 == cls); 432 GNUNET_assert (&op1 == cls);
432 result = TEST_OP1_RELEASED; 433 result = TEST_OP1_RELEASED;
433 op1 = NULL; 434 op1 = NULL;
434 step_task = 435 step_task =
435 GNUNET_SCHEDULER_add_delayed(STEP_DELAY, &step, NULL); 436 GNUNET_SCHEDULER_add_delayed (STEP_DELAY, &step, NULL);
436 break; 437 break;
437 438
438 case TEST_OP2_STARTED: 439 case TEST_OP2_STARTED:
439 GNUNET_assert(&op2 == cls); 440 GNUNET_assert (&op2 == cls);
440 result = TEST_OP2_RELEASED; 441 result = TEST_OP2_RELEASED;
441 GNUNET_assert(NULL == step_task); 442 GNUNET_assert (NULL == step_task);
442 break; 443 break;
443 444
444 case TEST_OP3_STARTED: 445 case TEST_OP3_STARTED:
445 GNUNET_assert(&op3 == cls); 446 GNUNET_assert (&op3 == cls);
446 result = TEST_OP3_RELEASED; 447 result = TEST_OP3_RELEASED;
447 GNUNET_assert(NULL == step_task); 448 GNUNET_assert (NULL == step_task);
448 break; 449 break;
449 450
450 case TEST_OP4_STARTED: 451 case TEST_OP4_STARTED:
451 GNUNET_assert(&op4 == cls); 452 GNUNET_assert (&op4 == cls);
452 result = TEST_OP4_RELEASED; 453 result = TEST_OP4_RELEASED;
453 GNUNET_assert(NULL == step_task); 454 GNUNET_assert (NULL == step_task);
454 op5 = GNUNET_TESTBED_operation_create_(&op5, &start_cb, &release_cb); 455 op5 = GNUNET_TESTBED_operation_create_ (&op5, &start_cb, &release_cb);
455 GNUNET_TESTBED_operation_queue_insert2_(q1, op5, 1); 456 GNUNET_TESTBED_operation_queue_insert2_ (q1, op5, 1);
456 GNUNET_TESTBED_operation_begin_wait_(op5); 457 GNUNET_TESTBED_operation_begin_wait_ (op5);
457 op6 = GNUNET_TESTBED_operation_create_(&op6, &start_cb, &release_cb); 458 op6 = GNUNET_TESTBED_operation_create_ (&op6, &start_cb, &release_cb);
458 GNUNET_TESTBED_operation_queue_insert2_(q2, op6, 1); 459 GNUNET_TESTBED_operation_queue_insert2_ (q2, op6, 1);
459 GNUNET_TESTBED_operation_begin_wait_(op6); 460 GNUNET_TESTBED_operation_begin_wait_ (op6);
460 op7 = GNUNET_TESTBED_operation_create_(&op7, &start_cb, &release_cb); 461 op7 = GNUNET_TESTBED_operation_create_ (&op7, &start_cb, &release_cb);
461 GNUNET_TESTBED_operation_queue_insert2_(q1, op7, 1); 462 GNUNET_TESTBED_operation_queue_insert2_ (q1, op7, 1);
462 GNUNET_TESTBED_operation_queue_insert2_(q2, op7, 1); 463 GNUNET_TESTBED_operation_queue_insert2_ (q2, op7, 1);
463 GNUNET_TESTBED_operation_begin_wait_(op7); 464 GNUNET_TESTBED_operation_begin_wait_ (op7);
464 break; 465 break;
465 466
466 case TEST_OP5_6_7_STARTED: 467 case TEST_OP5_6_7_STARTED:
467 result = TEST_OP5_RELEASED; 468 result = TEST_OP5_RELEASED;
468 op5 = NULL; 469 op5 = NULL;
469 GNUNET_TESTBED_operation_release_(op6); 470 GNUNET_TESTBED_operation_release_ (op6);
470 break; 471 break;
471 472
472 case TEST_OP5_RELEASED: 473 case TEST_OP5_RELEASED:
473 op6 = NULL; 474 op6 = NULL;
474 result = TEST_OP6_RELEASED; 475 result = TEST_OP6_RELEASED;
475 GNUNET_TESTBED_operation_inactivate_(op7); 476 GNUNET_TESTBED_operation_inactivate_ (op7);
476 step_task = GNUNET_SCHEDULER_add_now(&step, NULL); 477 step_task = GNUNET_SCHEDULER_add_now (&step, NULL);
477 break; 478 break;
478 479
479 case TEST_OP8_WAITING: 480 case TEST_OP8_WAITING:
480 GNUNET_assert(&op7 == cls); 481 GNUNET_assert (&op7 == cls);
481 op7 = NULL; 482 op7 = NULL;
482 result = TEST_OP7_RELEASED; 483 result = TEST_OP7_RELEASED;
483 break; 484 break;
484 485
485 case TEST_OP8_ACTIVE: 486 case TEST_OP8_ACTIVE:
486 result = TEST_OP8_RELEASED; 487 result = TEST_OP8_RELEASED;
487 op8 = NULL; 488 op8 = NULL;
488 break; 489 break;
489 490
490 case TEST_OP9_STARTED: 491 case TEST_OP9_STARTED:
491 GNUNET_assert(&op9 == cls); 492 GNUNET_assert (&op9 == cls);
492 result = TEST_OP9_RELEASED; 493 result = TEST_OP9_RELEASED;
493 GNUNET_TESTBED_operation_queue_destroy_(q1); 494 GNUNET_TESTBED_operation_queue_destroy_ (q1);
494 GNUNET_TESTBED_operation_queue_destroy_(q2); 495 GNUNET_TESTBED_operation_queue_destroy_ (q2);
495 q1 = NULL; 496 q1 = NULL;
496 q2 = NULL; 497 q2 = NULL;
497 break; 498 break;
498 499
499 default: 500 default:
500 GNUNET_assert(0); 501 GNUNET_assert (0);
501 } 502 }
502} 503}
503 504
504 505
@@ -511,22 +512,22 @@ release_cb(void *cls)
511 * @param cfg the configuration file handle 512 * @param cfg the configuration file handle
512 */ 513 */
513static void 514static void
514run(void *cls, char *const *args, const char *cfgfile, 515run (void *cls, char *const *args, const char *cfgfile,
515 const struct GNUNET_CONFIGURATION_Handle *config) 516 const struct GNUNET_CONFIGURATION_Handle *config)
516{ 517{
517 q1 = GNUNET_TESTBED_operation_queue_create_(OPERATION_QUEUE_TYPE_FIXED, 1); 518 q1 = GNUNET_TESTBED_operation_queue_create_ (OPERATION_QUEUE_TYPE_FIXED, 1);
518 GNUNET_assert(NULL != q1); 519 GNUNET_assert (NULL != q1);
519 q2 = GNUNET_TESTBED_operation_queue_create_(OPERATION_QUEUE_TYPE_FIXED, 2); 520 q2 = GNUNET_TESTBED_operation_queue_create_ (OPERATION_QUEUE_TYPE_FIXED, 2);
520 GNUNET_assert(NULL != q2); 521 GNUNET_assert (NULL != q2);
521 op1 = GNUNET_TESTBED_operation_create_(&op1, start_cb, release_cb); 522 op1 = GNUNET_TESTBED_operation_create_ (&op1, start_cb, release_cb);
522 GNUNET_assert(NULL != op1); 523 GNUNET_assert (NULL != op1);
523 op2 = GNUNET_TESTBED_operation_create_(&op2, start_cb, release_cb); 524 op2 = GNUNET_TESTBED_operation_create_ (&op2, start_cb, release_cb);
524 GNUNET_TESTBED_operation_queue_insert_(q1, op1); 525 GNUNET_TESTBED_operation_queue_insert_ (q1, op1);
525 GNUNET_TESTBED_operation_queue_insert_(q2, op1); 526 GNUNET_TESTBED_operation_queue_insert_ (q2, op1);
526 GNUNET_TESTBED_operation_begin_wait_(op1); 527 GNUNET_TESTBED_operation_begin_wait_ (op1);
527 GNUNET_TESTBED_operation_queue_insert_(q1, op2); 528 GNUNET_TESTBED_operation_queue_insert_ (q1, op2);
528 GNUNET_TESTBED_operation_queue_insert_(q2, op2); 529 GNUNET_TESTBED_operation_queue_insert_ (q2, op2);
529 GNUNET_TESTBED_operation_begin_wait_(op2); 530 GNUNET_TESTBED_operation_begin_wait_ (op2);
530 result = TEST_INIT; 531 result = TEST_INIT;
531} 532}
532 533
@@ -535,7 +536,7 @@ run(void *cls, char *const *args, const char *cfgfile,
535 * Main function 536 * Main function
536 */ 537 */
537int 538int
538main(int argc, char **argv) 539main (int argc, char **argv)
539{ 540{
540 int ret; 541 int ret;
541 char *const argv2[] = 542 char *const argv2[] =
@@ -544,9 +545,9 @@ main(int argc, char **argv)
544 { GNUNET_GETOPT_OPTION_END }; 545 { GNUNET_GETOPT_OPTION_END };
545 546
546 ret = 547 ret =
547 GNUNET_PROGRAM_run((sizeof(argv2) / sizeof(char *)) - 1, argv2, 548 GNUNET_PROGRAM_run ((sizeof(argv2) / sizeof(char *)) - 1, argv2,
548 "test_testbed_api_operations", "nohelp", options, 549 "test_testbed_api_operations", "nohelp", options,
549 &run, NULL); 550 &run, NULL);
550 if ((GNUNET_OK != ret) || (TEST_OP9_RELEASED != result)) 551 if ((GNUNET_OK != ret) || (TEST_OP9_RELEASED != result))
551 return 1; 552 return 1;
552 op1 = NULL; 553 op1 = NULL;