diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-08-24 17:52:55 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-08-24 17:52:55 +0000 |
commit | d78b1ed8679e564865d86e8693939c2e9ff60c75 (patch) | |
tree | 25c0f2ece22df0460a4b8d1dc124b2ee6bf54896 /src/testbed/test_testbed_api_controllerlink.c | |
parent | 00f9e9d51ce75db87e7dec55da378e1ae495d6da (diff) | |
download | gnunet-d78b1ed8679e564865d86e8693939c2e9ff60c75.tar.gz gnunet-d78b1ed8679e564865d86e8693939c2e9ff60c75.zip |
peer start/stop forwarding with tests
Diffstat (limited to 'src/testbed/test_testbed_api_controllerlink.c')
-rw-r--r-- | src/testbed/test_testbed_api_controllerlink.c | 92 |
1 files changed, 87 insertions, 5 deletions
diff --git a/src/testbed/test_testbed_api_controllerlink.c b/src/testbed/test_testbed_api_controllerlink.c index 48ce2546e..a5f84b6ce 100644 --- a/src/testbed/test_testbed_api_controllerlink.c +++ b/src/testbed/test_testbed_api_controllerlink.c | |||
@@ -88,6 +88,26 @@ enum Stage | |||
88 | SLAVE2_PEER_CREATE_SUCCESS, | 88 | SLAVE2_PEER_CREATE_SUCCESS, |
89 | 89 | ||
90 | /** | 90 | /** |
91 | * Peer startup on slave 1 successful | ||
92 | */ | ||
93 | SLAVE1_PEER_START_SUCCESS, | ||
94 | |||
95 | /** | ||
96 | * Peer on slave 1 successfully stopped | ||
97 | */ | ||
98 | SLAVE1_PEER_STOP_SUCCESS, | ||
99 | |||
100 | /** | ||
101 | * Peer startup on slave 2 successful | ||
102 | */ | ||
103 | SLAVE2_PEER_START_SUCCESS, | ||
104 | |||
105 | /** | ||
106 | * Peer on slave 2 successfully stopped | ||
107 | */ | ||
108 | SLAVE2_PEER_STOP_SUCCESS, | ||
109 | |||
110 | /** | ||
91 | * Peer destroy on slave 1 successful | 111 | * Peer destroy on slave 1 successful |
92 | */ | 112 | */ |
93 | SLAVE1_PEER_DESTROY_SUCCESS, | 113 | SLAVE1_PEER_DESTROY_SUCCESS, |
@@ -200,7 +220,7 @@ do_shutdown (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
200 | * @param tc the task context | 220 | * @param tc the task context |
201 | */ | 221 | */ |
202 | static void | 222 | static void |
203 | do_abort (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc) | 223 | do_abort (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
204 | { | 224 | { |
205 | LOG (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n"); | 225 | LOG (GNUNET_ERROR_TYPE_WARNING, "Test timedout -- Aborting\n"); |
206 | abort_task = GNUNET_SCHEDULER_NO_TASK; | 226 | abort_task = GNUNET_SCHEDULER_NO_TASK; |
@@ -209,6 +229,31 @@ do_abort (void *cls, const const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
209 | 229 | ||
210 | 230 | ||
211 | /** | 231 | /** |
232 | * Task for inserting delay between tests | ||
233 | * | ||
234 | * @param | ||
235 | * @return | ||
236 | */ | ||
237 | static void | ||
238 | delay_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | ||
239 | { | ||
240 | switch (result) | ||
241 | { | ||
242 | case SLAVE1_PEER_START_SUCCESS: | ||
243 | op = GNUNET_TESTBED_peer_stop (slave1_peer); | ||
244 | GNUNET_assert (NULL != op); | ||
245 | break; | ||
246 | case SLAVE2_PEER_START_SUCCESS: | ||
247 | op = GNUNET_TESTBED_peer_stop (slave2_peer); | ||
248 | GNUNET_assert (NULL != op); | ||
249 | break; | ||
250 | default: | ||
251 | GNUNET_assert (0); | ||
252 | } | ||
253 | } | ||
254 | |||
255 | |||
256 | /** | ||
212 | * Functions of this signature are called when a peer has been successfully | 257 | * Functions of this signature are called when a peer has been successfully |
213 | * created | 258 | * created |
214 | * | 259 | * |
@@ -237,7 +282,7 @@ peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg) | |||
237 | result = SLAVE2_PEER_CREATE_SUCCESS; | 282 | result = SLAVE2_PEER_CREATE_SUCCESS; |
238 | slave2_peer = peer; | 283 | slave2_peer = peer; |
239 | GNUNET_TESTBED_operation_done (op); | 284 | GNUNET_TESTBED_operation_done (op); |
240 | op = GNUNET_TESTBED_peer_destroy (slave1_peer); | 285 | op = GNUNET_TESTBED_peer_start (slave1_peer); |
241 | GNUNET_assert (NULL != op); | 286 | GNUNET_assert (NULL != op); |
242 | break; | 287 | break; |
243 | default: | 288 | default: |
@@ -297,11 +342,47 @@ controller_cb(void *cls, const struct GNUNET_TESTBED_EventInformation *event) | |||
297 | GNUNET_assert (NULL != op); | 342 | GNUNET_assert (NULL != op); |
298 | break; | 343 | break; |
299 | case SLAVE2_PEER_CREATE_SUCCESS: | 344 | case SLAVE2_PEER_CREATE_SUCCESS: |
345 | GNUNET_assert (GNUNET_TESTBED_ET_PEER_START == event->type); | ||
346 | GNUNET_assert (event->details.peer_start.host == slave); | ||
347 | GNUNET_assert (event->details.peer_start.peer == slave1_peer); | ||
348 | GNUNET_TESTBED_operation_done (op); | ||
349 | result = SLAVE1_PEER_START_SUCCESS; | ||
350 | GNUNET_SCHEDULER_add_delayed | ||
351 | (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1), | ||
352 | &delay_task, NULL); | ||
353 | break; | ||
354 | case SLAVE1_PEER_START_SUCCESS: | ||
355 | GNUNET_assert (GNUNET_TESTBED_ET_PEER_STOP == event->type); | ||
356 | GNUNET_assert (event->details.peer_stop.peer == slave1_peer); | ||
357 | GNUNET_TESTBED_operation_done (op); | ||
358 | result = SLAVE1_PEER_STOP_SUCCESS; | ||
359 | op = GNUNET_TESTBED_peer_start (slave2_peer); | ||
360 | GNUNET_assert (NULL != op); | ||
361 | break; | ||
362 | case SLAVE1_PEER_STOP_SUCCESS: | ||
363 | GNUNET_assert (GNUNET_TESTBED_ET_PEER_START == event->type); | ||
364 | GNUNET_assert (event->details.peer_start.host == slave2); | ||
365 | GNUNET_assert (event->details.peer_start.peer == slave2_peer); | ||
366 | GNUNET_TESTBED_operation_done (op); | ||
367 | result = SLAVE2_PEER_START_SUCCESS; | ||
368 | GNUNET_SCHEDULER_add_delayed | ||
369 | (GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1), | ||
370 | &delay_task, NULL); | ||
371 | break; | ||
372 | case SLAVE2_PEER_START_SUCCESS: | ||
373 | GNUNET_assert (GNUNET_TESTBED_ET_PEER_STOP == event->type); | ||
374 | GNUNET_assert (event->details.peer_stop.peer == slave2_peer); | ||
375 | GNUNET_TESTBED_operation_done (op); | ||
376 | result = SLAVE2_PEER_STOP_SUCCESS; | ||
377 | op = GNUNET_TESTBED_peer_destroy (slave1_peer); | ||
378 | GNUNET_assert (NULL != op); | ||
379 | break; | ||
380 | case SLAVE2_PEER_STOP_SUCCESS: | ||
300 | check_operation_success (event); | 381 | check_operation_success (event); |
301 | GNUNET_TESTBED_operation_done (op); | 382 | GNUNET_TESTBED_operation_done (op); |
302 | result = SLAVE1_PEER_DESTROY_SUCCESS; | 383 | result = SLAVE1_PEER_DESTROY_SUCCESS; |
303 | op = GNUNET_TESTBED_peer_destroy (slave2_peer); | 384 | op = GNUNET_TESTBED_peer_destroy (slave2_peer); |
304 | GNUNET_assert (NULL != slave2_peer); | 385 | GNUNET_assert (NULL != op); |
305 | break; | 386 | break; |
306 | case SLAVE1_PEER_DESTROY_SUCCESS: | 387 | case SLAVE1_PEER_DESTROY_SUCCESS: |
307 | check_operation_success (event); | 388 | check_operation_success (event); |
@@ -438,13 +519,14 @@ int main (int argc, char **argv) | |||
438 | GNUNET_assert (GNUNET_SYSERR != ret); | 519 | GNUNET_assert (GNUNET_SYSERR != ret); |
439 | (void) usleep (300); | 520 | (void) usleep (300); |
440 | } while (GNUNET_NO == ret); | 521 | } while (GNUNET_NO == ret); |
522 | GNUNET_OS_process_destroy (auxp); | ||
441 | if (0 != code) | 523 | if (0 != code) |
442 | { | 524 | { |
443 | (void) printf ("Unable to run the test as this system is not configured " | 525 | (void) printf ("Unable to run the test as this system is not configured " |
444 | "to use password less SSH logins to localhost.\n" | 526 | "to use password less SSH logins to localhost.\n" |
445 | "Marking test as successful\n"); | 527 | "Marking test as successful\n"); |
446 | return 0; | 528 | return 0; |
447 | } | 529 | } |
448 | result = INIT; | 530 | result = INIT; |
449 | ret = GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2, | 531 | ret = GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2, |
450 | "test_testbed_api_controllerlink", "nohelp", options, &run, | 532 | "test_testbed_api_controllerlink", "nohelp", options, &run, |