From 5402016fcb271bbfa9c9470bd281d73b72e75bca Mon Sep 17 00:00:00 2001 From: "Schanzenbach, Martin" Date: Sun, 22 Dec 2019 22:52:08 +0900 Subject: basic tests --- src/transport/Makefile.am | 8 +- src/transport/test_communicator.c | 402 ------------------------------ src/transport/test_communicator_basic.c | 420 ++++++++++++++++++++++++++++++++ src/transport/transport-testing2.c | 35 ++- 4 files changed, 449 insertions(+), 416 deletions(-) delete mode 100644 src/transport/test_communicator.c create mode 100644 src/transport/test_communicator_basic.c (limited to 'src/transport') diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am index ff9d7aec7..5d0ba2218 100644 --- a/src/transport/Makefile.am +++ b/src/transport/Makefile.am @@ -588,7 +588,7 @@ check_PROGRAMS += \ test_transport_api_slow_ats endif check_PROGRAMS += \ -test_communicator_unix +test_communicator_basic_unix if HAVE_EXPERIMENTAL check_PROGRAMS += \ test_transport_address_switch_udp \ @@ -782,9 +782,9 @@ test_plugin_udp_LDADD = \ libgnunettransporttesting.la endif -test_communicator_unix_SOURCES = \ - test_communicator.c -test_communicator_unix_LDADD = \ +test_communicator_basic_unix_SOURCES = \ + test_communicator_basic.c +test_communicator_basic_unix_LDADD = \ libgnunettransporttesting2.la \ $(top_builddir)/src/testing/libgnunettesting.la \ $(top_builddir)/src/util/libgnunetutil.la diff --git a/src/transport/test_communicator.c b/src/transport/test_communicator.c deleted file mode 100644 index d77128b09..000000000 --- a/src/transport/test_communicator.c +++ /dev/null @@ -1,402 +0,0 @@ -/* - This file is part of GNUnet. - Copyright (C) 2019 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 transport/test_communicator.c -* @brief test the communicators -* @author Julius Bünger -* @author Martin Schanzenbach -*/ -#include "platform.h" -#include "gnunet_util_lib.h" -#include "transport-testing2.h" -#include "gnunet_ats_transport_service.h" -#include "gnunet_signatures.h" -#include "gnunet_testing_lib.h" -#include "transport.h" - -#include - - -#define LOG(kind, ...) GNUNET_log_from (kind, \ - "test_transport_communicator", \ - __VA_ARGS__) - -#define NUM_PEERS 2 - -static struct GNUNET_PeerIdentity peer_id[NUM_PEERS]; - -static char *communicator_binary; - -static struct -GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_hs[NUM_PEERS]; - -static struct GNUNET_CONFIGURATION_Handle *cfg_peers[NUM_PEERS]; - -static char **cfg_peers_name; - -static int ret; - -static struct GNUNET_TIME_Absolute start_short; - -static struct GNUNET_TIME_Absolute start_long; - -static struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *my_tc; - -#define SHORT_MESSAGE_SIZE 128 - -#define LONG_MESSAGE_SIZE 32000 - -#define SHORT_BURST_SECONDS 2 - -#define LONG_BURST_SECONDS 2 - -#define SHORT_BURST_WINDOW \ - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,SHORT_BURST_SECONDS) - -#define LONG_BURST_WINDOW \ - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,SHORT_BURST_SECONDS) - -#define BURST_SHORT 0 - -#define BURST_LONG 1 - -#define SIZE_CHECK 2 - -static char short_payload[SHORT_MESSAGE_SIZE]; - -static char long_payload[LONG_MESSAGE_SIZE]; - -static uint32_t ack = 0; - -static int phase; - -static size_t long_received = 0; - -static size_t short_received = 0; - -static void -communicator_available_cb (void *cls, - struct - GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle - *tc_h, - enum GNUNET_TRANSPORT_CommunicatorCharacteristics cc, - char *address_prefix) -{ - LOG (GNUNET_ERROR_TYPE_INFO, - "Communicator available. (cc: %u, prefix: %s)\n", - cc, - address_prefix); -} - - -static void -add_address_cb (void *cls, - struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle * - tc_h, - const char *address, - struct GNUNET_TIME_Relative expiration, - uint32_t aid, - enum GNUNET_NetworkType nt) -{ - LOG (GNUNET_ERROR_TYPE_DEBUG, - "New address. (addr: %s, expir: %" PRIu32 ", ID: %" PRIu32 ", nt: %u\n", - address, - expiration.rel_value_us, - aid, - nt); - // addresses[1] = GNUNET_strdup (address); - if (0 == strcmp ((char*) cls, cfg_peers_name[NUM_PEERS - 1])) - GNUNET_TRANSPORT_TESTING_transport_communicator_open_queue (tc_hs[0], - &peer_id[ - NUM_PEERS - - 1], - address); -} - - -/** - * @brief Callback that informs whether the requested queue will be - * established - * - * Implements #GNUNET_TRANSPORT_TESTING_QueueCreateReplyCallback. - * - * @param cls Closure - unused - * @param tc_h Communicator handle - unused - * @param will_try #GNUNET_YES if queue will be established - * #GNUNET_NO if queue will not be established (bogous address) - */ -static void -queue_create_reply_cb (void *cls, - struct - GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle * - tc_h, - int will_try) -{ - if (GNUNET_YES == will_try) - LOG (GNUNET_ERROR_TYPE_DEBUG, - "Queue will be established!\n"); - else - LOG (GNUNET_ERROR_TYPE_WARNING, - "Queue won't be established (bougus address?)!\n"); -} - - -static void -size_test (void *cls) -{ - char payload[ack]; - - memset (payload, 0, ack); - if (ack < UINT16_MAX) - { - GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, - &payload, - sizeof(payload)); - return; - } - GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, - "LONG Goodput (bytes/s): %lu\n", - (LONG_MESSAGE_SIZE * long_received) / LONG_BURST_SECONDS); - ret = 0; - GNUNET_SCHEDULER_shutdown (); - // Finished! -} - - -static void -long_test (void *cls) -{ - struct GNUNET_TIME_Relative duration = GNUNET_TIME_absolute_get_duration ( - start_long); - if (LONG_BURST_WINDOW.rel_value_us > duration.rel_value_us) - { - GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, - &long_payload, - sizeof(long_payload)); - GNUNET_SCHEDULER_add_now (&long_test, NULL); - return; - } - phase = SIZE_CHECK; - ack = 5; - GNUNET_SCHEDULER_add_now (&size_test, NULL); -} - - -static void -short_test (void *cls) -{ - struct GNUNET_TIME_Relative duration = GNUNET_TIME_absolute_get_duration ( - start_short); - if (SHORT_BURST_WINDOW.rel_value_us > duration.rel_value_us) - { - GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, - &short_payload, - sizeof(short_payload)); - - GNUNET_SCHEDULER_add_now (&short_test, NULL); - return; - } - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Short test done!\n"); - GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, - "SHORT Goodput (bytes/s): %lu - received packets: %lu\n", - (SHORT_MESSAGE_SIZE * short_received) / SHORT_BURST_SECONDS, - short_received); - start_long = GNUNET_TIME_absolute_get (); - phase = BURST_LONG; - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &long_test, NULL); -} - - -/** - * @brief Handle opening of queue - * - * Issues sending of test data - * - * Implements #GNUNET_TRANSPORT_TESTING_AddQueueCallback - * - * @param cls Closure - * @param tc_h Communicator handle - * @param tc_queue Handle to newly opened queue - */ -static void -add_queue_cb (void *cls, - struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h, - struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue * - tc_queue) -{ - if (0 != strcmp ((char*) cls, cfg_peers_name[0])) - return; // TODO? - LOG (GNUNET_ERROR_TYPE_DEBUG, - "Queue established, starting test...\n"); - start_short = GNUNET_TIME_absolute_get (); - my_tc = tc_queue; - phase = BURST_SHORT; - GNUNET_SCHEDULER_add_now (&short_test, tc_queue); -} - - -/** - * @brief Handle an incoming message - * - * Implements #GNUNET_TRANSPORT_TESTING_IncomingMessageCallback - - * @param cls Closure - * @param tc_h Handle to the receiving communicator - * @param msg Received message - */ -void -incoming_message_cb (void *cls, - struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle - *tc_h, - const char*payload, - size_t payload_len) -{ - //GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - // "Receiving payload with size %lu...\n", payload_len); - if (0 != strcmp ((char*) cls, cfg_peers_name[NUM_PEERS - 1])) - return; // TODO? - if (phase == BURST_SHORT) - { - GNUNET_assert (SHORT_MESSAGE_SIZE == payload_len); - short_received++; - } - else if (phase == BURST_LONG) - { - if (LONG_MESSAGE_SIZE != payload_len) - return; //Ignore - long_received++; - } - else // if (phase == SIZE_CHECK) { - { - if (ack != payload_len) - { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, - "Error receiving message, corrupted.\n"); - ret = 1; - GNUNET_SCHEDULER_shutdown (); - return; - } - ack += 5; // Next expected message size - GNUNET_SCHEDULER_add_now (&size_test, NULL); - } -} - - -/** - * @brief Main function called by the scheduler - * - * @param cls Closure - Handle to configuration - */ -static void -run (void *cls) -{ - memset (long_payload, 0, LONG_MESSAGE_SIZE); - memset (short_payload, 0, SHORT_MESSAGE_SIZE); - for (int i = 0; i < NUM_PEERS; i++) - { - tc_hs[i] = GNUNET_TRANSPORT_TESTING_transport_communicator_service_start ( - "transport", - communicator_binary, - cfg_peers_name[i], - &communicator_available_cb, - &add_address_cb, - &queue_create_reply_cb, - &add_queue_cb, - &incoming_message_cb, - cfg_peers_name[i]); /* cls */ - } -} - - -int -main (int argc, - char *const *argv) -{ - struct GNUNET_CRYPTO_EddsaPrivateKey *private_key; - char *communicator_name; - char *cfg_peer; - ret = 1; - - communicator_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); - GNUNET_asprintf (&communicator_binary, "gnunet-communicator-%s", - communicator_name); - cfg_peers_name = GNUNET_malloc (sizeof(char*) * NUM_PEERS); - if (GNUNET_OK != GNUNET_log_setup ("test_communicator", - "DEBUG", - "test_communicator.log")) - { - fprintf (stderr, "Unable to setup log\n"); - GNUNET_break (0); - return 2; - } - for (int i = 0; i < NUM_PEERS; i++) - { - GNUNET_asprintf ((&cfg_peer), - "test_communicator_%s_peer%u.conf", - communicator_name, i + 1); - cfg_peers_name[i] = cfg_peer; - cfg_peers[i] = GNUNET_CONFIGURATION_create (); - if (GNUNET_YES == - GNUNET_DISK_file_test (cfg_peers_name[i])) - { - if (GNUNET_SYSERR == - GNUNET_CONFIGURATION_load (cfg_peers[i], - cfg_peers_name[i])) - { - fprintf (stderr, - "Malformed configuration file `%s', exiting ...\n", - cfg_peers_name[i]); - return 1; - } - } - else - { - if (GNUNET_SYSERR == - GNUNET_CONFIGURATION_load (cfg_peers[i], - NULL)) - { - fprintf (stderr, - "Configuration file %s does not exist, exiting ...\n", - cfg_peers_name[i]); - return 1; - } - } - private_key = - GNUNET_CRYPTO_eddsa_key_create_from_configuration (cfg_peers[i]); - if (NULL == private_key) - { - LOG (GNUNET_ERROR_TYPE_ERROR, - "Unable to get peer ID\n"); - return 1; - } - GNUNET_CRYPTO_eddsa_key_get_public (private_key, - &peer_id[i].public_key); - GNUNET_free (private_key); - GNUNET_log (GNUNET_ERROR_TYPE_INFO, - "Identity of peer %u is %s\n", - i, GNUNET_i2s_full (&peer_id[i])); - } - fprintf (stderr, "Starting test...\n"); - GNUNET_SCHEDULER_run (&run, - NULL); - return ret; -} diff --git a/src/transport/test_communicator_basic.c b/src/transport/test_communicator_basic.c new file mode 100644 index 000000000..ef18d6a81 --- /dev/null +++ b/src/transport/test_communicator_basic.c @@ -0,0 +1,420 @@ +/* + This file is part of GNUnet. + Copyright (C) 2019 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 transport/test_communicator_basic.c +* @brief test the communicators +* @author Julius Bünger +* @author Martin Schanzenbach +*/ +#include "platform.h" +#include "gnunet_util_lib.h" +#include "transport-testing2.h" +#include "gnunet_ats_transport_service.h" +#include "gnunet_signatures.h" +#include "gnunet_testing_lib.h" +#include "transport.h" + +#include + + +#define LOG(kind, ...) GNUNET_log_from (kind, \ + "test_transport_communicator", \ + __VA_ARGS__) + +#define NUM_PEERS 2 + +static struct GNUNET_PeerIdentity peer_id[NUM_PEERS]; + +static char *communicator_binary; + +static struct +GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_hs[NUM_PEERS]; + +static struct GNUNET_CONFIGURATION_Handle *cfg_peers[NUM_PEERS]; + +static char **cfg_peers_name; + +static int ret; + +static struct GNUNET_TIME_Absolute start_short; + +static struct GNUNET_TIME_Absolute start_long; + +static struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue *my_tc; + +#define SHORT_MESSAGE_SIZE 128 + +#define LONG_MESSAGE_SIZE 32000 + +#define SHORT_BURST_SECONDS 2 + +#define LONG_BURST_SECONDS 2 + +#define SHORT_BURST_WINDOW \ + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,SHORT_BURST_SECONDS) + +#define LONG_BURST_WINDOW \ + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS,SHORT_BURST_SECONDS) + +#define BURST_SHORT 0 + +#define BURST_LONG 1 + +#define SIZE_CHECK 2 + +#define MAX_BUF_LEN 10 + +static int buf_len = 0; + +static char short_payload[SHORT_MESSAGE_SIZE]; + +static char long_payload[LONG_MESSAGE_SIZE]; + +static uint32_t ack = 0; + +static int phase; + +static size_t long_received = 0; + +static size_t short_received = 0; + +static void +communicator_available_cb (void *cls, + struct + GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle + *tc_h, + enum GNUNET_TRANSPORT_CommunicatorCharacteristics cc, + char *address_prefix) +{ + LOG (GNUNET_ERROR_TYPE_INFO, + "Communicator available. (cc: %u, prefix: %s)\n", + cc, + address_prefix); +} + + +static void +add_address_cb (void *cls, + struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle * + tc_h, + const char *address, + struct GNUNET_TIME_Relative expiration, + uint32_t aid, + enum GNUNET_NetworkType nt) +{ + LOG (GNUNET_ERROR_TYPE_DEBUG, + "New address. (addr: %s, expir: %" PRIu32 ", ID: %" PRIu32 ", nt: %u\n", + address, + expiration.rel_value_us, + aid, + nt); + // addresses[1] = GNUNET_strdup (address); + if (0 == strcmp ((char*) cls, cfg_peers_name[NUM_PEERS - 1])) + GNUNET_TRANSPORT_TESTING_transport_communicator_open_queue (tc_hs[0], + &peer_id[ + NUM_PEERS + - 1], + address); +} + + +/** + * @brief Callback that informs whether the requested queue will be + * established + * + * Implements #GNUNET_TRANSPORT_TESTING_QueueCreateReplyCallback. + * + * @param cls Closure - unused + * @param tc_h Communicator handle - unused + * @param will_try #GNUNET_YES if queue will be established + * #GNUNET_NO if queue will not be established (bogous address) + */ +static void +queue_create_reply_cb (void *cls, + struct + GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle * + tc_h, + int will_try) +{ + if (GNUNET_YES == will_try) + LOG (GNUNET_ERROR_TYPE_DEBUG, + "Queue will be established!\n"); + else + LOG (GNUNET_ERROR_TYPE_WARNING, + "Queue won't be established (bougus address?)!\n"); +} + + +static void +size_test (void *cls) +{ + char payload[ack]; + phase = SIZE_CHECK; + + memset (payload, 0, ack); + if (ack < 64000) //Leave some room for our protocol. + { + GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, + &payload, + sizeof(payload)); + return; + } + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Finished\n"); + GNUNET_SCHEDULER_shutdown (); + // Finished! +} + + +static void +long_test (void *cls) +{ + struct GNUNET_TIME_Relative duration = GNUNET_TIME_absolute_get_duration ( + start_long); + if (LONG_BURST_WINDOW.rel_value_us > duration.rel_value_us) + { + if (buf_len < MAX_BUF_LEN) + { + GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, + &long_payload, + sizeof(long_payload)); + buf_len++; + } + GNUNET_SCHEDULER_add_now (&long_test, NULL); + return; + } + GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, + "LONG Goodput (bytes/s): %lu - received packets: %lu\n", + (LONG_MESSAGE_SIZE * long_received) / LONG_BURST_SECONDS, + long_received); + ack = 5; + GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &size_test, NULL); +} + + +static void +short_test (void *cls) +{ + struct GNUNET_TIME_Relative duration = GNUNET_TIME_absolute_get_duration ( + start_short); + if (SHORT_BURST_WINDOW.rel_value_us > duration.rel_value_us) + { + if (buf_len < MAX_BUF_LEN) + { + GNUNET_TRANSPORT_TESTING_transport_communicator_send (my_tc, + &short_payload, + sizeof(short_payload)); + buf_len++; + } + GNUNET_SCHEDULER_add_now (&short_test, NULL); + return; + } + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Short test done!\n"); + GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, + "SHORT Goodput (bytes/s): %lu - received packets: %lu\n", + (SHORT_MESSAGE_SIZE * short_received) / SHORT_BURST_SECONDS, + short_received); + start_long = GNUNET_TIME_absolute_get (); + phase = BURST_LONG; + buf_len = 0; + GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &long_test, NULL); +} + + +/** + * @brief Handle opening of queue + * + * Issues sending of test data + * + * Implements #GNUNET_TRANSPORT_TESTING_AddQueueCallback + * + * @param cls Closure + * @param tc_h Communicator handle + * @param tc_queue Handle to newly opened queue + */ +static void +add_queue_cb (void *cls, + struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h, + struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorQueue * + tc_queue) +{ + if (0 != strcmp ((char*) cls, cfg_peers_name[0])) + return; // TODO? + LOG (GNUNET_ERROR_TYPE_DEBUG, + "Queue established, starting test...\n"); + start_short = GNUNET_TIME_absolute_get (); + my_tc = tc_queue; + buf_len = 0; + phase = BURST_SHORT; + GNUNET_SCHEDULER_add_now (&short_test, tc_queue); +} + + +/** + * @brief Handle an incoming message + * + * Implements #GNUNET_TRANSPORT_TESTING_IncomingMessageCallback + + * @param cls Closure + * @param tc_h Handle to the receiving communicator + * @param msg Received message + */ +void +incoming_message_cb (void *cls, + struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle + *tc_h, + const char*payload, + size_t payload_len) +{ + if (0 != strcmp ((char*) cls, cfg_peers_name[NUM_PEERS - 1])) + return; // TODO? + if (phase == BURST_SHORT) + { + GNUNET_assert (SHORT_MESSAGE_SIZE == payload_len); + short_received++; + buf_len--; + } + else if (phase == BURST_LONG) + { + if (LONG_MESSAGE_SIZE != payload_len) + return; // Ignore + long_received++; + buf_len--; + } + else // if (phase == SIZE_CHECK) { + { + // GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + // "Receiving payload with size %lu...\n", payload_len); + if (ack != payload_len) + { + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Error receiving message, corrupted.\n"); + ret = 1; + GNUNET_SCHEDULER_shutdown (); + return; + } + ack += 5; // Next expected message size + GNUNET_SCHEDULER_add_now (&size_test, NULL); + } +} + + +/** + * @brief Main function called by the scheduler + * + * @param cls Closure - Handle to configuration + */ +static void +run (void *cls) +{ + ret = 0; + memset (long_payload, 0, LONG_MESSAGE_SIZE); + memset (short_payload, 0, SHORT_MESSAGE_SIZE); + for (int i = 0; i < NUM_PEERS; i++) + { + tc_hs[i] = GNUNET_TRANSPORT_TESTING_transport_communicator_service_start ( + "transport", + communicator_binary, + cfg_peers_name[i], + &communicator_available_cb, + &add_address_cb, + &queue_create_reply_cb, + &add_queue_cb, + &incoming_message_cb, + cfg_peers_name[i]); /* cls */ + } +} + + +int +main (int argc, + char *const *argv) +{ + struct GNUNET_CRYPTO_EddsaPrivateKey *private_key; + char *communicator_name; + char *cfg_peer; + ret = 1; + + communicator_name = GNUNET_TESTING_get_testname_from_underscore (argv[0]); + GNUNET_asprintf (&communicator_binary, "gnunet-communicator-%s", + communicator_name); + cfg_peers_name = GNUNET_malloc (sizeof(char*) * NUM_PEERS); + if (GNUNET_OK != GNUNET_log_setup ("test_communicator_basic", + "DEBUG", + "test_communicator_basic.log")) + { + fprintf (stderr, "Unable to setup log\n"); + GNUNET_break (0); + return 2; + } + for (int i = 0; i < NUM_PEERS; i++) + { + GNUNET_asprintf ((&cfg_peer), + "test_communicator_%s_peer%u.conf", + communicator_name, i + 1); + cfg_peers_name[i] = cfg_peer; + cfg_peers[i] = GNUNET_CONFIGURATION_create (); + if (GNUNET_YES == + GNUNET_DISK_file_test (cfg_peers_name[i])) + { + if (GNUNET_SYSERR == + GNUNET_CONFIGURATION_load (cfg_peers[i], + cfg_peers_name[i])) + { + fprintf (stderr, + "Malformed configuration file `%s', exiting ...\n", + cfg_peers_name[i]); + return 1; + } + } + else + { + if (GNUNET_SYSERR == + GNUNET_CONFIGURATION_load (cfg_peers[i], + NULL)) + { + fprintf (stderr, + "Configuration file %s does not exist, exiting ...\n", + cfg_peers_name[i]); + return 1; + } + } + private_key = + GNUNET_CRYPTO_eddsa_key_create_from_configuration (cfg_peers[i]); + if (NULL == private_key) + { + LOG (GNUNET_ERROR_TYPE_ERROR, + "Unable to get peer ID\n"); + return 1; + } + GNUNET_CRYPTO_eddsa_key_get_public (private_key, + &peer_id[i].public_key); + GNUNET_free (private_key); + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Identity of peer %u is %s\n", + i, GNUNET_i2s_full (&peer_id[i])); + } + fprintf (stderr, "Starting test...\n"); + GNUNET_SCHEDULER_run (&run, + NULL); + return ret; +} diff --git a/src/transport/transport-testing2.c b/src/transport/transport-testing2.c index 230c35b4f..547f8611b 100644 --- a/src/transport/transport-testing2.c +++ b/src/transport/transport-testing2.c @@ -280,8 +280,6 @@ static int check_add_address (void *cls, const struct GNUNET_TRANSPORT_AddAddressMessage *msg) { - struct TransportClient *tc = cls; - // if (CT_COMMUNICATOR != tc->type) // { // GNUNET_break (0); @@ -568,6 +566,22 @@ disconnect_cb (void *cls, tc_h->client = NULL; } +/** + * Message was transmitted. Process the request. + * + * @param cls the client + * @param sma the send message that was sent + */ +static void +handle_send_message_ack (void *cls, + const struct GNUNET_TRANSPORT_SendMessageToAck *sma) +{ + struct GNUNET_TRANSPORT_TESTING_TransportCommunicatorHandle *tc_h = cls; + GNUNET_SERVICE_client_continue (tc_h->client); + //NOP +} + + /** * @brief Start the communicator part of the transport service @@ -584,7 +598,7 @@ transport_communicator_start ( GNUNET_MQ_hd_var_size (communicator_available, GNUNET_MESSAGE_TYPE_TRANSPORT_NEW_COMMUNICATOR, struct GNUNET_TRANSPORT_CommunicatorAvailableMessage, - &tc_h), + tc_h), // GNUNET_MQ_hd_var_size (communicator_backchannel, // GNUNET_MESSAGE_TYPE_TRANSPORT_COMMUNICATOR_BACKCHANNEL, // struct GNUNET_TRANSPORT_CommunicatorBackchannel, @@ -592,7 +606,7 @@ transport_communicator_start ( GNUNET_MQ_hd_var_size (add_address, GNUNET_MESSAGE_TYPE_TRANSPORT_ADD_ADDRESS, struct GNUNET_TRANSPORT_AddAddressMessage, - &tc_h), + tc_h), // GNUNET_MQ_hd_fixed_size (del_address, // GNUNET_MESSAGE_TYPE_TRANSPORT_DEL_ADDRESS, // struct GNUNET_TRANSPORT_DelAddressMessage, @@ -600,7 +614,7 @@ transport_communicator_start ( GNUNET_MQ_hd_var_size (incoming_msg, GNUNET_MESSAGE_TYPE_TRANSPORT_INCOMING_MSG, struct GNUNET_TRANSPORT_IncomingMessage, - NULL), + tc_h), GNUNET_MQ_hd_fixed_size (queue_create_ok, GNUNET_MESSAGE_TYPE_TRANSPORT_QUEUE_CREATE_OK, struct GNUNET_TRANSPORT_CreateQueueResponse, @@ -612,15 +626,16 @@ transport_communicator_start ( GNUNET_MQ_hd_var_size (add_queue_message, GNUNET_MESSAGE_TYPE_TRANSPORT_QUEUE_SETUP, struct GNUNET_TRANSPORT_AddQueueMessage, - NULL), + tc_h), // GNUNET_MQ_hd_fixed_size (del_queue_message, // GNUNET_MESSAGE_TYPE_TRANSPORT_QUEUE_TEARDOWN, // struct GNUNET_TRANSPORT_DelQueueMessage, // NULL), - // GNUNET_MQ_hd_fixed_size (send_message_ack, - // GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_MSG_ACK, - // struct GNUNET_TRANSPORT_SendMessageToAck, - // NULL), + GNUNET_MQ_hd_fixed_size (send_message_ack, + GNUNET_MESSAGE_TYPE_TRANSPORT_SEND_MSG_ACK, + struct GNUNET_TRANSPORT_SendMessageToAck, + tc_h), + GNUNET_MQ_handler_end () }; struct GNUNET_SERVICE_Handle *h; -- cgit v1.2.3