From 9bdaa1f9b21b324963fe0f41311ae6d9c0948946 Mon Sep 17 00:00:00 2001 From: t3sserakt Date: Tue, 14 Sep 2021 14:19:31 +0200 Subject: - fixed wrong dependencies to tng version of libs, added missing block after sending --- src/include/gnunet_testing_ng_lib.h | 6 + src/testing/Makefile.am | 1 + .../testing_api_cmd_block_until_external_trigger.c | 139 +++++++++++++++++++++ src/transport/Makefile.am | 12 +- .../test_transport_plugin_cmd_simple_send.c | 8 ++ .../test_transport_plugin_cmd_simple_send_v2.c | 44 ++----- 6 files changed, 168 insertions(+), 42 deletions(-) create mode 100644 src/testing/testing_api_cmd_block_until_external_trigger.c (limited to 'src') diff --git a/src/include/gnunet_testing_ng_lib.h b/src/include/gnunet_testing_ng_lib.h index a6f8429f4..9ef42a3aa 100644 --- a/src/include/gnunet_testing_ng_lib.h +++ b/src/include/gnunet_testing_ng_lib.h @@ -1085,6 +1085,12 @@ GNUNET_TESTING_cmd_block_until_all_peers_started (const char *label, unsigned int * all_peers_started); + +struct GNUNET_TESTING_Command +GNUNET_TESTING_cmd_block_until_external_trigger (const char *label, + unsigned int * + stop_blocking); + struct GNUNET_TESTING_Command GNUNET_TESTING_cmd_send_peer_ready (const char *label, TESTING_CMD_HELPER_write_cb write_message); diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am index 3e9d15986..a584ad761 100644 --- a/src/testing/Makefile.am +++ b/src/testing/Makefile.am @@ -44,6 +44,7 @@ libgnunettesting_la_SOURCES = \ testing_api_cmd_local_test_finished.c \ testing_api_cmd_send_peer_ready.c \ testing_api_cmd_block_until_all_peers_started.c \ + testing_api_cmd_block_until_external_trigger.c \ testing_api_cmd_netjail_start.c \ testing_api_cmd_netjail_start_v2.c \ testing_api_cmd_netjail_start_testsystem.c \ diff --git a/src/testing/testing_api_cmd_block_until_external_trigger.c b/src/testing/testing_api_cmd_block_until_external_trigger.c new file mode 100644 index 000000000..2439afeaf --- /dev/null +++ b/src/testing/testing_api_cmd_block_until_external_trigger.c @@ -0,0 +1,139 @@ +/* + This file is part of GNUnet + Copyright (C) 2021 GNUnet e.V. + + GNUnet is free software: you can redistribute it and/or modify it + 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. + + GNUnet is distributed in the hope that it will be useful, but + 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 + */ + +/** + * @file testing_api_cmd_block_until_all_peers_started.c + * @brief cmd to block the interpreter loop until all peers started. + * @author t3sserakt + */ +#include "platform.h" +#include "gnunet_util_lib.h" +#include "gnunet_testing_ng_lib.h" + +/** + * Generic logging shortcut + */ +#define LOG(kind, ...) GNUNET_log (kind, __VA_ARGS__) + +/** + * Struct with information for callbacks. + * + */ +struct BlockState +{ + /** + * Flag to indicate if all peers have started. + * + */ + unsigned int *stop_blocking; +}; + + +/** + * Trait function of this cmd does nothing. + * + */ +static int +block_until_all_peers_started_traits (void *cls, + const void **ret, + const char *trait, + unsigned int index) +{ + return GNUNET_OK; +} + + +/** + * The cleanup function of this cmd frees resources the cmd allocated. + * + */ +static void +block_until_all_peers_started_cleanup (void *cls, + const struct GNUNET_TESTING_Command *cmd) +{ + struct BlockState *bs = cls; + + GNUNET_free (bs); +} + + +/** + * This function does nothing but to start the cmd. + * + */ +static void +block_until_all_peers_started_run (void *cls, + const struct GNUNET_TESTING_Command *cmd, + struct GNUNET_TESTING_Interpreter *is) +{ + LOG (GNUNET_ERROR_TYPE_DEBUG, + "block_until_all_peers_started_run!\n"); +} + + +/** + * Function to check if BlockState#all_peers_started is GNUNET_YES. In that case interpreter_next will be called. + * + */ +static int +block_until_all_peers_started_finish (void *cls, + GNUNET_SCHEDULER_TaskCallback cont, + void *cont_cls) +{ + struct BlockState *bs = cls; + unsigned int *ret = bs->stop_blocking; + + if (GNUNET_YES == *ret) + { + cont (cont_cls); + } + + return *ret; +} + + +/** + * Create command. + * + * @param label name for command. + * @param all_peers_started Flag which will be set from outside. + * @return command. + */ +struct GNUNET_TESTING_Command +GNUNET_TESTING_cmd_block_until_external_trigger (const char *label, + unsigned int * + stop_blocking) +{ + struct BlockState *bs; + + bs = GNUNET_new (struct BlockState); + bs->stop_blocking = stop_blocking; + + struct GNUNET_TESTING_Command cmd = { + .cls = bs, + .label = label, + .run = &block_until_all_peers_started_run, + .finish = &block_until_all_peers_started_finish, + .cleanup = &block_until_all_peers_started_cleanup, + .traits = &block_until_all_peers_started_traits + }; + + return cmd; +} diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am index 8bd35b5a3..561ac5e60 100644 --- a/src/transport/Makefile.am +++ b/src/transport/Makefile.am @@ -401,7 +401,7 @@ libgnunet_test_transport_plugin_cmd_simple_send_la_SOURCES = \ libgnunet_test_transport_plugin_cmd_simple_send_la_LIBADD = \ libgnunettransporttesting2.la \ libgnunettransportapplication.la \ - libgnunettransport.la \ + libgnunettransportcore.la \ $(top_builddir)/src/testing/libgnunettesting.la \ $(top_builddir)/src/peerstore/libgnunetpeerstore.la \ $(top_builddir)/src/statistics/libgnunetstatistics.la \ @@ -418,7 +418,7 @@ libgnunet_test_transport_plugin_cmd_simple_send_v2_la_SOURCES = \ libgnunet_test_transport_plugin_cmd_simple_send_v2_la_LIBADD = \ libgnunettransporttesting2.la \ libgnunettransportapplication.la \ - libgnunettransport.la \ + libgnunettransportcore.la \ $(top_builddir)/src/testing/libgnunettesting.la \ $(top_builddir)/src/peerstore/libgnunetpeerstore.la \ $(top_builddir)/src/statistics/libgnunetstatistics.la \ @@ -756,8 +756,8 @@ test_transport_simple_send_LDADD = \ $(top_builddir)/src/util/libgnunetutil.la \ $(top_builddir)/src/testbed/libgnunettestbed.la \ $(top_builddir)/src/hello/libgnunethello.la \ - libgnunettransport.la \ - libgnunettransporttesting.la + libgnunettransportcore.la \ + libgnunettransporttesting2.la test_transport_simple_send_v2_SOURCES = \ test_transport_simple_send_v2.c @@ -766,8 +766,8 @@ test_transport_simple_send_v2_LDADD = \ $(top_builddir)/src/util/libgnunetutil.la \ $(top_builddir)/src/testbed/libgnunettestbed.la \ $(top_builddir)/src/hello/libgnunethello.la \ - libgnunettransport.la \ - libgnunettransporttesting.la + libgnunettransportcore.la \ + libgnunettransporttesting2.la test_transport_testing_startstop_SOURCES = \ test_transport_testing_startstop.c diff --git a/src/transport/test_transport_plugin_cmd_simple_send.c b/src/transport/test_transport_plugin_cmd_simple_send.c index 1dc44c945..35aa07ecd 100644 --- a/src/transport/test_transport_plugin_cmd_simple_send.c +++ b/src/transport/test_transport_plugin_cmd_simple_send.c @@ -55,6 +55,11 @@ char *cfgname; */ unsigned int are_all_peers_started; +/** + * Flag indicating a received message. + */ +unsigned int message_received; + /** * Function called to check a message of type GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE being @@ -80,6 +85,7 @@ handle_test (void *cls, { LOG (GNUNET_ERROR_TYPE_ERROR, "message received\n"); + message_received = GNUNET_YES; } @@ -203,6 +209,8 @@ start_testcase (TESTING_CMD_HELPER_write_cb write_message, char *router_ip, (atoi (n) - 1) * atoi (local_m) + atoi ( m), "start-peer"), + GNUNET_TESTING_cmd_block_until_external_trigger ("block-receive", + &message_received), GNUNET_TRANSPORT_cmd_stop_peer ("stop-peer", "start-peer"), GNUNET_TESTING_cmd_system_destroy ("system-destroy", diff --git a/src/transport/test_transport_plugin_cmd_simple_send_v2.c b/src/transport/test_transport_plugin_cmd_simple_send_v2.c index ce1245296..c79b5c7e2 100644 --- a/src/transport/test_transport_plugin_cmd_simple_send_v2.c +++ b/src/transport/test_transport_plugin_cmd_simple_send_v2.c @@ -57,6 +57,11 @@ char *cfgname; */ unsigned int are_all_peers_started; +/** + * Flag indicating a received message. + */ +unsigned int message_received; + /** * Function called to check a message of type GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE being @@ -80,35 +85,7 @@ static void handle_test (void *cls, const struct GNUNET_TRANSPORT_TESTING_TestMessage *message) { - LOG (GNUNET_ERROR_TYPE_ERROR, - "message received\n"); -} - - -/** - * Function called to check a message of type GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE2 - * being received. - * - */ -static int -check_test2 (void *cls, - const struct GNUNET_TRANSPORT_TESTING_TestMessage *message) -{ - return GNUNET_OK; -} - - -/** - * Function called to handle a message of type GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE2 - * being received. - * - */ -static void -handle_test2 (void *cls, - const struct GNUNET_TRANSPORT_TESTING_TestMessage *message) -{ - LOG (GNUNET_ERROR_TYPE_ERROR, - "message received\n"); + message_received = GNUNET_YES; } @@ -120,9 +97,6 @@ static void all_peers_started () { are_all_peers_started = GNUNET_YES; - LOG (GNUNET_ERROR_TYPE_ERROR, - "setting are_all_peers_started: %d\n", - are_all_peers_started); } @@ -181,10 +155,6 @@ start_testcase (TESTING_CMD_HELPER_write_cb write_message, char *router_ip, GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE, struct GNUNET_TRANSPORT_TESTING_TestMessage, NULL), - GNUNET_MQ_hd_var_size (test2, - GNUNET_TRANSPORT_TESTING_SIMPLE_MTYPE2, - struct GNUNET_TRANSPORT_TESTING_TestMessage, - NULL), GNUNET_MQ_handler_end () }; @@ -208,6 +178,8 @@ start_testcase (TESTING_CMD_HELPER_write_cb write_message, char *router_ip, GNUNET_TRANSPORT_cmd_send_simple_v2 ("send-simple", "start-peer", num), + GNUNET_TESTING_cmd_block_until_external_trigger ("block-receive", + &message_received), GNUNET_TRANSPORT_cmd_stop_peer ("stop-peer", "start-peer"), GNUNET_TESTING_cmd_system_destroy ("system-destroy", -- cgit v1.2.3