diff options
author | t3sserakt <t3ss@posteo.de> | 2021-06-30 13:04:40 +0200 |
---|---|---|
committer | t3sserakt <t3ss@posteo.de> | 2021-06-30 13:04:40 +0200 |
commit | 13dbe5418c1e61bb3c433efa7c2dc412e08b356d (patch) | |
tree | ba53f0f1bb3f365a41c079aa3190fb98caf9d1b6 /src/testing | |
parent | 3ae831780b5681764a7d0505fa94f3fdaa43e1d8 (diff) | |
download | gnunet-13dbe5418c1e61bb3c433efa7c2dc412e08b356d.tar.gz gnunet-13dbe5418c1e61bb3c433efa7c2dc412e08b356d.zip |
- starting testbed with netjail
Diffstat (limited to 'src/testing')
-rw-r--r-- | src/testing/testing_api_loop.c | 54 |
1 files changed, 38 insertions, 16 deletions
diff --git a/src/testing/testing_api_loop.c b/src/testing/testing_api_loop.c index 1b50b9ff5..ccee76898 100644 --- a/src/testing/testing_api_loop.c +++ b/src/testing/testing_api_loop.c | |||
@@ -30,6 +30,9 @@ | |||
30 | #include "gnunet_testing_ng_lib.h" | 30 | #include "gnunet_testing_ng_lib.h" |
31 | #include "testing.h" | 31 | #include "testing.h" |
32 | 32 | ||
33 | #define CHECK_FINISHED_PERIOD \ | ||
34 | GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1) | ||
35 | |||
33 | struct GNUNET_TESTING_Interpreter *is; | 36 | struct GNUNET_TESTING_Interpreter *is; |
34 | 37 | ||
35 | /** | 38 | /** |
@@ -188,14 +191,20 @@ run_finish_task_next (void *cls) | |||
188 | struct FinishTaskClosure *ftc = cls; | 191 | struct FinishTaskClosure *ftc = cls; |
189 | const struct GNUNET_TESTING_Command *cmd = ftc->cmd; | 192 | const struct GNUNET_TESTING_Command *cmd = ftc->cmd; |
190 | struct GNUNET_TESTING_Interpreter *is = ftc->is; | 193 | struct GNUNET_TESTING_Interpreter *is = ftc->is; |
194 | unsigned int finished = cmd->finish (cmd->cls, &interpreter_next, is); | ||
191 | 195 | ||
192 | if (cmd->finish (cmd->cls, &interpreter_next, is)) | 196 | if (GNUNET_YES == finished) |
193 | { | 197 | { |
194 | is->finish_task = GNUNET_SCHEDULER_add_now (&run_finish_task_next, ftc); | 198 | is->finish_task = NULL; |
199 | } | ||
200 | else if (GNUNET_NO == finished) | ||
201 | { | ||
202 | is->finish_task = GNUNET_SCHEDULER_add_delayed (CHECK_FINISHED_PERIOD, | ||
203 | &run_finish_task_next, ftc); | ||
195 | } | 204 | } |
196 | else | 205 | else |
197 | { | 206 | { |
198 | is->finish_task = NULL; | 207 | GNUNET_TESTING_interpreter_fail (is); |
199 | } | 208 | } |
200 | 209 | ||
201 | } | 210 | } |
@@ -210,6 +219,7 @@ run_finish_task_sync (void *cls) | |||
210 | struct FinishTaskClosure *ftc; | 219 | struct FinishTaskClosure *ftc; |
211 | struct SyncState *sync_state = sync_cmd->cls; | 220 | struct SyncState *sync_state = sync_cmd->cls; |
212 | struct GNUNET_SCHEDULER_Task *finish_task = sync_state->finish_task; | 221 | struct GNUNET_SCHEDULER_Task *finish_task = sync_state->finish_task; |
222 | unsigned int finished = cmd->finish (cmd->cls, &interpreter_next, is); | ||
213 | 223 | ||
214 | GNUNET_assert (NULL != finish_task); | 224 | GNUNET_assert (NULL != finish_task); |
215 | ftc = GNUNET_new (struct FinishTaskClosure); | 225 | ftc = GNUNET_new (struct FinishTaskClosure); |
@@ -222,17 +232,21 @@ run_finish_task_sync (void *cls) | |||
222 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 232 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
223 | "The command with label %s did not finish its asynchronous task in time.\n", | 233 | "The command with label %s did not finish its asynchronous task in time.\n", |
224 | cmd->label); | 234 | cmd->label); |
225 | is->result = GNUNET_SYSERR; | 235 | GNUNET_TESTING_interpreter_fail (is); |
226 | GNUNET_SCHEDULER_shutdown (); | ||
227 | } | 236 | } |
228 | 237 | ||
229 | if (cmd->finish (cmd->cls, run_finish_task_next, ftc)) | 238 | if (GNUNET_YES == finished) |
239 | { | ||
240 | finish_task = NULL; | ||
241 | } | ||
242 | else if (GNUNET_NO == finished) | ||
230 | { | 243 | { |
231 | finish_task = GNUNET_SCHEDULER_add_now (&run_finish_task_sync, stc); | 244 | finish_task = GNUNET_SCHEDULER_add_delayed (CHECK_FINISHED_PERIOD, |
245 | &run_finish_task_sync, stc); | ||
232 | } | 246 | } |
233 | else | 247 | else |
234 | { | 248 | { |
235 | finish_task = NULL; | 249 | GNUNET_TESTING_interpreter_fail (is); |
236 | } | 250 | } |
237 | } | 251 | } |
238 | 252 | ||
@@ -252,8 +266,10 @@ start_finish_on_ref (void *cls, | |||
252 | stc->sync_cmd = cmd; | 266 | stc->sync_cmd = cmd; |
253 | stc->is = is; | 267 | stc->is = is; |
254 | sync_state->start_finish_time = GNUNET_TIME_absolute_get (); | 268 | sync_state->start_finish_time = GNUNET_TIME_absolute_get (); |
255 | sync_state->finish_task = GNUNET_SCHEDULER_add_now (&run_finish_task_sync, | 269 | sync_state->finish_task = GNUNET_SCHEDULER_add_delayed ( |
256 | stc); | 270 | CHECK_FINISHED_PERIOD, |
271 | &run_finish_task_sync, | ||
272 | stc); | ||
257 | } | 273 | } |
258 | 274 | ||
259 | 275 | ||
@@ -281,7 +297,7 @@ GNUNET_TESTING_cmd_finish (const char *finish_label, | |||
281 | 297 | ||
282 | 298 | ||
283 | const struct GNUNET_TESTING_Command | 299 | const struct GNUNET_TESTING_Command |
284 | GNUNET_TESTING_cmd_make_asynchronous (const struct GNUNET_TESTING_Command cmd) | 300 | GNUNET_TESTING_cmd_make_unblocking (const struct GNUNET_TESTING_Command cmd) |
285 | { | 301 | { |
286 | 302 | ||
287 | GNUNET_assert (NULL != cmd.finish); | 303 | GNUNET_assert (NULL != cmd.finish); |
@@ -375,10 +391,12 @@ interpreter_run (void *cls) | |||
375 | GNUNET_SCHEDULER_shutdown (); | 391 | GNUNET_SCHEDULER_shutdown (); |
376 | return; | 392 | return; |
377 | } | 393 | } |
378 | 394 | else if (NULL != cmd) | |
379 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 395 | { |
380 | "Running command `%s'\n", | 396 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
381 | cmd->label); | 397 | "Running command `%s'\n", |
398 | cmd->label); | ||
399 | } | ||
382 | cmd->start_time | 400 | cmd->start_time |
383 | = cmd->last_req_time | 401 | = cmd->last_req_time |
384 | = GNUNET_TIME_absolute_get (); | 402 | = GNUNET_TIME_absolute_get (); |
@@ -388,10 +406,14 @@ interpreter_run (void *cls) | |||
388 | is); | 406 | is); |
389 | if ((NULL != cmd->finish) && (GNUNET_NO == cmd->asynchronous_finish)) | 407 | if ((NULL != cmd->finish) && (GNUNET_NO == cmd->asynchronous_finish)) |
390 | { | 408 | { |
409 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
410 | "Next task will not be called directly!\n"); | ||
391 | ftc = GNUNET_new (struct FinishTaskClosure); | 411 | ftc = GNUNET_new (struct FinishTaskClosure); |
392 | ftc->cmd = cmd; | 412 | ftc->cmd = cmd; |
393 | ftc->is = is; | 413 | ftc->is = is; |
394 | cmd->finish_task = GNUNET_SCHEDULER_add_now (run_finish_task_next, ftc); | 414 | cmd->finish_task = GNUNET_SCHEDULER_add_delayed (CHECK_FINISHED_PERIOD, |
415 | &run_finish_task_next, | ||
416 | ftc); | ||
395 | } | 417 | } |
396 | else | 418 | else |
397 | { | 419 | { |