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.c61
1 files changed, 55 insertions, 6 deletions
diff --git a/src/testbed/test_testbed_api_operations.c b/src/testbed/test_testbed_api_operations.c
index e4d3b72fa..af3e68c20 100644
--- a/src/testbed/test_testbed_api_operations.c
+++ b/src/testbed/test_testbed_api_operations.c
@@ -85,11 +85,19 @@ struct GNUNET_TESTBED_Operation *op6;
85 85
86/** 86/**
87 * This operation is started after op4 is released and should consume 1 resource 87 * This operation is started after op4 is released and should consume 1 resource
88 * on both queues q1 and q1. It should be started along with op5 and op6 88 * on both queues q1 and q1. It should be started along with op5 and op6. It is
89 * then inactivated when op6 is released. op8's start should release this
90 * operation implicitly.
89 */ 91 */
90struct GNUNET_TESTBED_Operation *op7; 92struct GNUNET_TESTBED_Operation *op7;
91 93
92/** 94/**
95 * This operation is started after op6 is finished in step task. It consumes 2
96 * resources on both queues q1 and q1.
97 */
98struct GNUNET_TESTBED_Operation *op8;
99
100/**
93 * The delay task identifier 101 * The delay task identifier
94 */ 102 */
95GNUNET_SCHEDULER_TaskIdentifier step_task; 103GNUNET_SCHEDULER_TaskIdentifier step_task;
@@ -167,9 +175,24 @@ enum Test
167 TEST_OP6_RELEASED, 175 TEST_OP6_RELEASED,
168 176
169 /** 177 /**
178 * op8 has began waiting
179 */
180 TEST_OP8_WAITING,
181
182 /**
170 * op7 has released 183 * op7 has released
171 */ 184 */
172 TEST_OP7_RELEASED 185 TEST_OP7_RELEASED,
186
187 /**
188 * op8 has started
189 */
190 TEST_OP8_STARTED,
191
192 /**
193 * op8 has been released
194 */
195 TEST_OP8_RELEASED
173}; 196};
174 197
175/** 198/**
@@ -238,6 +261,16 @@ step (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
238 case TEST_OP4_STARTED: 261 case TEST_OP4_STARTED:
239 GNUNET_TESTBED_operation_release_ (op4); 262 GNUNET_TESTBED_operation_release_ (op4);
240 break; 263 break;
264 case TEST_OP6_RELEASED:
265 op8 = GNUNET_TESTBED_operation_create_ (&op8, &start_cb, &release_cb);
266 GNUNET_TESTBED_operation_queue_insert2_ (q1, op8, 2);
267 GNUNET_TESTBED_operation_queue_insert2_ (q2, op8, 2);
268 result = TEST_OP8_WAITING;
269 GNUNET_TESTBED_operation_begin_wait_ (op8);
270 break;
271 case TEST_OP8_STARTED:
272 GNUNET_TESTBED_operation_release_ (op8);
273 break;
241 default: 274 default:
242 GNUNET_assert (0); 275 GNUNET_assert (0);
243 } 276 }
@@ -295,6 +328,11 @@ start_cb (void *cls)
295 } 328 }
296 } 329 }
297 break; 330 break;
331 case TEST_OP7_RELEASED:
332 GNUNET_assert (&op8 == cls);
333 result = TEST_OP8_STARTED;
334 step_task = GNUNET_SCHEDULER_add_now (&step, NULL);
335 break;
298 default: 336 default:
299 GNUNET_assert (0); 337 GNUNET_assert (0);
300 } 338 }
@@ -356,11 +394,17 @@ release_cb (void *cls)
356 case TEST_OP5_RELEASED: 394 case TEST_OP5_RELEASED:
357 op6 = NULL; 395 op6 = NULL;
358 result = TEST_OP6_RELEASED; 396 result = TEST_OP6_RELEASED;
359 GNUNET_TESTBED_operation_release_ (op7); 397 GNUNET_TESTBED_operation_inactivate_ (op7);
398 step_task = GNUNET_SCHEDULER_add_now (&step, NULL);
360 break; 399 break;
361 case TEST_OP6_RELEASED: 400 case TEST_OP8_WAITING:
362 result = TEST_OP7_RELEASED; 401 GNUNET_assert (&op7 == cls);
363 op7 = NULL; 402 op7 = NULL;
403 result = TEST_OP7_RELEASED;
404 break;
405 case TEST_OP8_STARTED:
406 result = TEST_OP8_RELEASED;
407 op8 = NULL;
364 GNUNET_TESTBED_operation_queue_destroy_ (q1); 408 GNUNET_TESTBED_operation_queue_destroy_ (q1);
365 GNUNET_TESTBED_operation_queue_destroy_ (q2); 409 GNUNET_TESTBED_operation_queue_destroy_ (q2);
366 q1 = NULL; 410 q1 = NULL;
@@ -417,11 +461,16 @@ main (int argc, char **argv)
417 GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2, 461 GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2,
418 "test_testbed_api_operations", "nohelp", options, 462 "test_testbed_api_operations", "nohelp", options,
419 &run, NULL); 463 &run, NULL);
420 if ((GNUNET_OK != ret) || (TEST_OP7_RELEASED != result)) 464 if ((GNUNET_OK != ret) || (TEST_OP8_RELEASED != result))
421 return 1; 465 return 1;
422 op1 = NULL; 466 op1 = NULL;
423 op2 = NULL; 467 op2 = NULL;
424 op3 = NULL; 468 op3 = NULL;
469 op4 = NULL;
470 op5 = NULL;
471 op6 = NULL;
472 op7 = NULL;
473 op8 = NULL;
425 q1 = NULL; 474 q1 = NULL;
426 q2 = NULL; 475 q2 = NULL;
427 return 0; 476 return 0;