diff options
Diffstat (limited to 'src/testbed/test_testbed_api_operations.c')
-rw-r--r-- | src/testbed/test_testbed_api_operations.c | 61 |
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 | */ |
90 | struct GNUNET_TESTBED_Operation *op7; | 92 | struct 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 | */ | ||
98 | struct GNUNET_TESTBED_Operation *op8; | ||
99 | |||
100 | /** | ||
93 | * The delay task identifier | 101 | * The delay task identifier |
94 | */ | 102 | */ |
95 | GNUNET_SCHEDULER_TaskIdentifier step_task; | 103 | GNUNET_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; |