X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ftestbed%2Ftest_testbed_api_controllerlink.c;h=16a3f7b916657fde00066551c29ce4ace35cb1e3;hb=d17a17ea785f91c18b5694eab3372c4e4564d95e;hp=2a880e8cb037e60143d4d6b0340271bd9d56e4bb;hpb=cbd60b5e56aac2d6711e299086383f83357794f8;p=oweals%2Fgnunet.git diff --git a/src/testbed/test_testbed_api_controllerlink.c b/src/testbed/test_testbed_api_controllerlink.c index 2a880e8cb..16a3f7b91 100644 --- a/src/testbed/test_testbed_api_controllerlink.c +++ b/src/testbed/test_testbed_api_controllerlink.c @@ -3,7 +3,7 @@ Copyright (C) 2008--2013 GNUnet e.V. GNUnet is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published + under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. @@ -11,6 +11,11 @@ WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + + SPDX-License-Identifier: AGPL3.0-or-later */ /** @@ -40,21 +45,18 @@ /** * Generic logging shortcut */ -#define LOG(kind,...) \ - GNUNET_log (kind, __VA_ARGS__) +#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__) /** * Debug logging shorthand */ -#define LOG_DEBUG(...) \ - LOG(GNUNET_ERROR_TYPE_DEBUG, __VA_ARGS__) +#define LOG_DEBUG(...) LOG (GNUNET_ERROR_TYPE_DEBUG, __VA_ARGS__) /** * Different stages in testing */ enum Stage { - /** * Initial stage */ @@ -289,15 +291,18 @@ static enum Stage result; /** * shortcut to exit during failure */ -#define FAIL_TEST(cond) do { \ - if (!(cond)) { \ - GNUNET_break(0); \ - if (NULL != abort_task) \ - GNUNET_SCHEDULER_cancel (abort_task); \ - abort_task = NULL; \ - GNUNET_SCHEDULER_shutdown (); \ - return; \ - } \ +#define FAIL_TEST(cond) \ + do \ + { \ + if (! (cond)) \ + { \ + GNUNET_break (0); \ + if (NULL != abort_task) \ + GNUNET_SCHEDULER_cancel (abort_task); \ + abort_task = NULL; \ + GNUNET_SCHEDULER_shutdown (); \ + return; \ + } \ } while (0) @@ -352,9 +357,7 @@ do_shutdown (void *cls) static void do_abort (void *cls) { - LOG (GNUNET_ERROR_TYPE_WARNING, - "Aborting in stage %d\n", - result); + LOG (GNUNET_ERROR_TYPE_WARNING, "Aborting in stage %d\n", result); abort_task = NULL; GNUNET_SCHEDULER_shutdown (); } @@ -401,14 +404,17 @@ delay_task (void *cls) op = GNUNET_TESTBED_peer_stop (NULL, slave1_peer, NULL, NULL); FAIL_TEST (NULL != op); break; + case MASTER_SLAVE2_PEERS_CONNECTED: slave3 = GNUNET_TESTBED_host_create_with_id (3, "127.0.0.1", NULL, cfg, 0); rh = GNUNET_TESTBED_register_host (mc, slave3, ®istration_cont, NULL); break; + case SLAVE2_SLAVE3_PEERS_CONNECTED: op = GNUNET_TESTBED_peer_stop (NULL, slave2_peer, NULL, NULL); FAIL_TEST (NULL != op); break; + default: FAIL_TEST (0); } @@ -425,9 +431,7 @@ delay_task (void *cls) * @param emsg NULL if peer is not NULL; else MAY contain the error description */ static void -peer_create_cb (void *cls, - struct GNUNET_TESTBED_Peer *peer, - const char *emsg) +peer_create_cb (void *cls, struct GNUNET_TESTBED_Peer *peer, const char *emsg) { FAIL_TEST (NULL != peer); FAIL_TEST (NULL == emsg); @@ -439,29 +443,32 @@ peer_create_cb (void *cls, GNUNET_TESTBED_operation_done (op); op = GNUNET_TESTBED_peer_start (NULL, master_peer, NULL, NULL); break; + case SLAVE1_LINK_SUCCESS: result = SLAVE1_PEER_CREATE_SUCCESS; slave1_peer = peer; GNUNET_TESTBED_operation_done (op); op = GNUNET_TESTBED_peer_start (NULL, slave1_peer, NULL, NULL); break; + case SLAVE2_LINK_SUCCESS: result = SLAVE2_PEER_CREATE_SUCCESS; slave2_peer = peer; GNUNET_TESTBED_operation_done (op); op = NULL; - delay_task_id = - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_SECONDS, 1), - &delay_task, - NULL); + delay_task_id = GNUNET_SCHEDULER_add_delayed ( + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1), + &delay_task, + NULL); return; + case SLAVE3_STARTED: result = SLAVE3_PEER_CREATE_SUCCESS; slave3_peer = peer; GNUNET_TESTBED_operation_done (op); op = GNUNET_TESTBED_peer_start (NULL, slave3_peer, NULL, NULL); break; + default: FAIL_TEST (0); } @@ -495,8 +502,7 @@ check_operation_success (const struct GNUNET_TESTBED_EventInformation *event) * @param event information about the event */ static void -controller_cb (void *cls, - const struct GNUNET_TESTBED_EventInformation *event) +controller_cb (void *cls, const struct GNUNET_TESTBED_EventInformation *event) { switch (result) { @@ -510,6 +516,7 @@ controller_cb (void *cls, op = GNUNET_TESTBED_peer_create (mc, slave, cfg, peer_create_cb, NULL); FAIL_TEST (NULL != op); break; + case SLAVE1_PEER_START_SUCCESS: check_operation_success (event); GNUNET_TESTBED_operation_done (op); @@ -517,6 +524,7 @@ controller_cb (void *cls, op = GNUNET_TESTBED_peer_create (mc, slave2, cfg, peer_create_cb, NULL); FAIL_TEST (NULL != op); break; + case MASTER_PEER_CREATE_SUCCESS: FAIL_TEST (GNUNET_TESTBED_ET_PEER_START == event->type); FAIL_TEST (event->details.peer_start.host == host); @@ -529,6 +537,7 @@ controller_cb (void *cls, rh = GNUNET_TESTBED_register_host (mc, slave, ®istration_cont, NULL); FAIL_TEST (NULL != rh); break; + case SLAVE1_PEER_CREATE_SUCCESS: FAIL_TEST (GNUNET_TESTBED_ET_PEER_START == event->type); FAIL_TEST (event->details.peer_start.host == slave); @@ -537,6 +546,7 @@ controller_cb (void *cls, result = SLAVE1_PEER_START_SUCCESS; op = GNUNET_TESTBED_controller_link (NULL, mc, slave2, slave, GNUNET_YES); break; + case SLAVE2_PEER_CREATE_SUCCESS: FAIL_TEST (GNUNET_TESTBED_ET_PEER_STOP == event->type); FAIL_TEST (event->details.peer_stop.peer == slave1_peer); @@ -545,6 +555,7 @@ controller_cb (void *cls, op = GNUNET_TESTBED_peer_start (NULL, slave2_peer, NULL, NULL); FAIL_TEST (NULL != op); break; + case SLAVE3_PEER_CREATE_SUCCESS: FAIL_TEST (GNUNET_TESTBED_ET_PEER_START == event->type); FAIL_TEST (event->details.peer_start.host == slave3); @@ -553,10 +564,11 @@ controller_cb (void *cls, result = SLAVE3_PEER_START_SUCCESS; sleep (1); LOG_DEBUG ("**************************************\n"); - op = GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, slave2_peer, - slave3_peer); + op = + GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, slave2_peer, slave3_peer); FAIL_TEST (NULL != op); break; + case SLAVE3_PEER_START_SUCCESS: FAIL_TEST (NULL != event); FAIL_TEST (GNUNET_TESTBED_ET_CONNECT == event->type); @@ -565,20 +577,22 @@ controller_cb (void *cls, result = SLAVE2_SLAVE3_PEERS_CONNECTED; GNUNET_TESTBED_operation_done (op); op = NULL; - delay_task_id = - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_SECONDS, 1), &delay_task, - NULL); + delay_task_id = GNUNET_SCHEDULER_add_delayed ( + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1), + &delay_task, + NULL); break; + case SLAVE1_PEER_STOP_SUCCESS: FAIL_TEST (GNUNET_TESTBED_ET_PEER_START == event->type); FAIL_TEST (event->details.peer_start.host == slave2); FAIL_TEST (event->details.peer_start.peer == slave2_peer); GNUNET_TESTBED_operation_done (op); result = SLAVE2_PEER_START_SUCCESS; - op = GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, master_peer, - slave2_peer); + op = + GNUNET_TESTBED_overlay_connect (mc, NULL, NULL, master_peer, slave2_peer); break; + case SLAVE2_PEER_START_SUCCESS: FAIL_TEST (NULL != event); FAIL_TEST (GNUNET_TESTBED_ET_CONNECT == event->type); @@ -587,11 +601,12 @@ controller_cb (void *cls, result = MASTER_SLAVE2_PEERS_CONNECTED; GNUNET_TESTBED_operation_done (op); op = NULL; - delay_task_id = - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_SECONDS, 1), &delay_task, - NULL); + delay_task_id = GNUNET_SCHEDULER_add_delayed ( + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1), + &delay_task, + NULL); break; + case SLAVE2_SLAVE3_PEERS_CONNECTED: FAIL_TEST (GNUNET_TESTBED_ET_PEER_STOP == event->type); FAIL_TEST (event->details.peer_stop.peer == slave2_peer); @@ -600,6 +615,7 @@ controller_cb (void *cls, op = GNUNET_TESTBED_peer_destroy (slave1_peer); FAIL_TEST (NULL != op); break; + case SLAVE2_PEER_STOP_SUCCESS: check_operation_success (event); GNUNET_TESTBED_operation_done (op); @@ -607,6 +623,7 @@ controller_cb (void *cls, op = GNUNET_TESTBED_peer_destroy (slave2_peer); FAIL_TEST (NULL != op); break; + case SLAVE1_PEER_DESTROY_SUCCESS: check_operation_success (event); GNUNET_TESTBED_operation_done (op); @@ -615,6 +632,7 @@ controller_cb (void *cls, op = GNUNET_TESTBED_get_slave_config (NULL, mc, slave3); FAIL_TEST (NULL != op); break; + case SLAVE2_PEER_DESTROY_SUCCESS: FAIL_TEST (NULL != event); FAIL_TEST (GNUNET_TESTBED_ET_OPERATION_FINISHED == event->type); @@ -626,6 +644,7 @@ controller_cb (void *cls, result = SLAVE3_GET_CONFIG_SUCCESS; op = GNUNET_TESTBED_controller_link (NULL, mc, slave3, slave, GNUNET_NO); break; + case SLAVE3_REGISTERED: check_operation_success (event); GNUNET_TESTBED_operation_done (op); @@ -633,23 +652,27 @@ controller_cb (void *cls, op = GNUNET_TESTBED_peer_create (mc, slave3, cfg, peer_create_cb, NULL); FAIL_TEST (NULL != op); break; + case SLAVE3_GET_CONFIG_SUCCESS: result = SLAVE3_LINK_SUCCESS; GNUNET_TESTBED_operation_done (op); op = GNUNET_TESTBED_peer_destroy (master_peer); break; + case SLAVE3_LINK_SUCCESS: check_operation_success (event); result = MASTER_PEER_DESTROY_SUCCESS; GNUNET_TESTBED_operation_done (op); op = GNUNET_TESTBED_peer_destroy (slave3_peer); break; + case MASTER_PEER_DESTROY_SUCCESS: result = SUCCESS; GNUNET_TESTBED_operation_done (op); op = NULL; GNUNET_SCHEDULER_shutdown (); break; + default: FAIL_TEST (0); } @@ -677,6 +700,7 @@ registration_cont (void *cls, const char *emsg) rh = GNUNET_TESTBED_register_host (mc, slave2, ®istration_cont, NULL); FAIL_TEST (NULL != rh); break; + case SLAVE1_REGISTERED: FAIL_TEST (NULL == emsg); FAIL_TEST (NULL != mc); @@ -685,6 +709,7 @@ registration_cont (void *cls, const char *emsg) op = GNUNET_TESTBED_controller_link (NULL, mc, slave, NULL, GNUNET_YES); FAIL_TEST (NULL != op); break; + case MASTER_SLAVE2_PEERS_CONNECTED: FAIL_TEST (NULL == emsg); FAIL_TEST (NULL != mc); @@ -693,12 +718,14 @@ registration_cont (void *cls, const char *emsg) op = GNUNET_TESTBED_controller_link (NULL, mc, slave3, NULL, GNUNET_YES); FAIL_TEST (NULL != op); break; + default: GNUNET_break (0); do_abort_now (NULL); } } + /** * Callback to signal successfull startup of the controller process * @@ -709,7 +736,8 @@ registration_cont (void *cls, const char *emsg) * GNUNET_TESTBED_controller_stop() shouldn't be called in this case */ static void -status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *config, +status_cb (void *cls, + const struct GNUNET_CONFIGURATION_Handle *config, int status) { switch (result) @@ -721,13 +749,16 @@ status_cb (void *cls, const struct GNUNET_CONFIGURATION_Handle *config, event_mask |= (1L << GNUNET_TESTBED_ET_PEER_STOP); event_mask |= (1L << GNUNET_TESTBED_ET_CONNECT); event_mask |= (1L << GNUNET_TESTBED_ET_OPERATION_FINISHED); - mc = GNUNET_TESTBED_controller_connect (host, event_mask, - &controller_cb, NULL); + mc = GNUNET_TESTBED_controller_connect (host, + event_mask, + &controller_cb, + NULL); FAIL_TEST (NULL != mc); result = MASTER_STARTED; op = GNUNET_TESTBED_peer_create (mc, host, cfg, peer_create_cb, NULL); FAIL_TEST (NULL != op); break; + default: GNUNET_break (0); cp = NULL; @@ -754,7 +785,7 @@ host_habitable_cb (void *cls, hc_handle = NULL; if (GNUNET_NO == status) { - (void) PRINTF ("%s", + (void) printf ("%s", "Unable to run the test as this system is not configured " "to use password less SSH logins to localhost.\n" "Skipping test\n"); @@ -764,8 +795,7 @@ host_habitable_cb (void *cls, result = SKIP; return; } - cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, status_cb, - NULL); + cp = GNUNET_TESTBED_controller_start ("127.0.0.1", host, status_cb, NULL); } @@ -778,34 +808,35 @@ host_habitable_cb (void *cls, * @param cfg the configuration file handle */ static void -run (void *cls, char *const *args, const char *cfgfile, +run (void *cls, + char *const *args, + const char *cfgfile, const struct GNUNET_CONFIGURATION_Handle *config) { cfg = GNUNET_CONFIGURATION_dup (config); host = GNUNET_TESTBED_host_create (NULL, NULL, cfg, 0); FAIL_TEST (NULL != host); - if (NULL == - (hc_handle = - GNUNET_TESTBED_is_host_habitable (host, config, &host_habitable_cb, - NULL))) + if (NULL == (hc_handle = GNUNET_TESTBED_is_host_habitable (host, + config, + &host_habitable_cb, + NULL))) { GNUNET_TESTBED_host_destroy (host); GNUNET_CONFIGURATION_destroy (cfg); cfg = NULL; host = NULL; - (void) PRINTF ("%s", + (void) printf ("%s", "Unable to run the test as this system is not configured " "to use password less SSH logins to localhost.\n" "Marking test as successful\n"); result = SKIP; return; } - abort_task = - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_MINUTES, 5), &do_abort, - NULL); - GNUNET_SCHEDULER_add_shutdown (&do_shutdown, - NULL); + abort_task = GNUNET_SCHEDULER_add_delayed ( + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5), + &do_abort, + NULL); + GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL); } @@ -816,30 +847,35 @@ int main (int argc, char **argv) { char *const argv2[] = { "test_testbed_api_controllerlink", - "-c", "test_testbed_api.conf", - NULL - }; - struct GNUNET_GETOPT_CommandLineOption options[] = { - GNUNET_GETOPT_OPTION_END - }; + "-c", + "test_testbed_api.conf", + NULL }; + struct GNUNET_GETOPT_CommandLineOption options[] = + { GNUNET_GETOPT_OPTION_END }; int ret; result = INIT; - ret = - GNUNET_PROGRAM_run ((sizeof (argv2) / sizeof (char *)) - 1, argv2, - "test_testbed_api_controllerlink", "nohelp", options, - &run, NULL); + ret = GNUNET_PROGRAM_run ((sizeof(argv2) / sizeof(char *)) - 1, + argv2, + "test_testbed_api_controllerlink", + "nohelp", + options, + &run, + NULL); if (GNUNET_OK != ret) return 1; switch (result) { case SUCCESS: return 0; + case SKIP: - return 77; /* Mark test as skipped */ + return 77; /* Mark test as skipped */ + default: return 1; } } + /* end of test_testbed_api_controllerlink.c */