From f7c9e5c48036f08ea45357283cc844fd5ead7731 Mon Sep 17 00:00:00 2001 From: Matthias Wachs Date: Thu, 31 May 2012 11:58:18 +0000 Subject: [PATCH] - base for a testing based connection stability test --- src/integration-tests/Makefile.am | 10 ++ .../test_connection_stability.c | 126 ++++++++++++++++++ .../test_connection_stability.conf | 82 ++++++++++++ 3 files changed, 218 insertions(+) create mode 100644 src/integration-tests/test_connection_stability.c create mode 100644 src/integration-tests/test_connection_stability.conf diff --git a/src/integration-tests/Makefile.am b/src/integration-tests/Makefile.am index e4fcceb60..7c1991b91 100644 --- a/src/integration-tests/Makefile.am +++ b/src/integration-tests/Makefile.am @@ -35,6 +35,9 @@ check_SCRIPTS = \ endif # test_integration_disconnect.py +check_PROGRAMS = \ + test_connection_stability + if ENABLE_TEST_RUN TESTS = \ @@ -112,6 +115,12 @@ test_integration_connection_values_tcp_udp_http.py: test_integration_connection_ $(do_subst) < $(srcdir)/test_integration_connection_values_tcp_udp_http.py.in > test_integration_connection_values_tcp_udp_http.py chmod +x test_integration_connection_values_tcp_udp_http.py +test_connection_stability_SOURCES = \ + test_connection_stability.c +test_connection_stability_LDADD = \ + $(top_builddir)/src/testing/libgnunettesting.la \ + $(top_builddir)/src/util/libgnunetutil.la + EXTRA_DIST = \ gnunet_testing.py.in \ @@ -137,6 +146,7 @@ EXTRA_DIST = \ confs/c_no_nat_client_http_2.conf\ confs/c_no_nat_client_http.conf \ confs/c_no_nat_client_http_2.conf \ + test_connection_stability.conf \ hostkeys/0000-hostkey \ hostkeys/0001-hostkey \ hostkeys/0002-hostkey \ diff --git a/src/integration-tests/test_connection_stability.c b/src/integration-tests/test_connection_stability.c new file mode 100644 index 000000000..ce6568b78 --- /dev/null +++ b/src/integration-tests/test_connection_stability.c @@ -0,0 +1,126 @@ +/* + This file is part of GNUnet. + (C) 2009 Christian Grothoff (and other contributing authors) + + GNUnet is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3, 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 + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNUnet; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ +/** + * @file integretion-tests/test_connection_stability.c + * @brief testcase for connection stability + */ +#include "platform.h" +#include "gnunet_testing_lib.h" + +#define VERBOSE GNUNET_YES + +#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 300) + +static int ok; + +static void +end_cb (void *cls, const char *emsg) +{ + if (emsg != NULL) + { + GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Ending with error: %s\n", emsg); + ok = 1; + } + else + { +#if VERBOSE + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Daemon terminated, will now exit.\n"); +#endif + ok = 0; + } +} + + + +void +do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + struct GNUNET_TESTING_Daemon *d = cls; + + GNUNET_TESTING_daemon_stop (d, TIMEOUT, &end_cb, NULL, GNUNET_YES, GNUNET_NO); +} + + +static void +my_cb (void *cls, const struct GNUNET_PeerIdentity *id, + const struct GNUNET_CONFIGURATION_Handle *cfg, + struct GNUNET_TESTING_Daemon *d, const char *emsg) +{ + GNUNET_assert (id != NULL); +#if VERBOSE + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Daemon `%s' started, will now stop it.\n", GNUNET_i2s (id)); +#endif + GNUNET_SCHEDULER_add_now (&do_shutdown, d); +} + + +static void +run (void *cls, char *const *args, const char *cfgfile, + const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + struct GNUNET_TESTING_Daemon *d; + + ok = 1; +#if VERBOSE + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Starting daemon.\n"); +#endif + d = GNUNET_TESTING_daemon_start (cfg, TIMEOUT, GNUNET_NO, NULL, NULL, 0, NULL, + NULL, NULL, &my_cb, NULL); + GNUNET_assert (d != NULL); +} + +static int +check () +{ + char *const argv[] = { "test_connection_stability", + "-c", + "test_connection_stability.conf", +#if VERBOSE + "-L", "DEBUG", +#endif + NULL + }; + struct GNUNET_GETOPT_CommandLineOption options[] = { + GNUNET_GETOPT_OPTION_END + }; + GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv, + "test-testing", "nohelp", options, &run, &ok); + return ok; +} + +int +main (int argc, char *argv[]) +{ + int ret; + + GNUNET_log_setup ("test_connection_stability", +#if VERBOSE + "DEBUG", +#else + "WARNING", +#endif + NULL); + ret = check (); + + return ret; +} + +/* end of test_connection_stability.c */ diff --git a/src/integration-tests/test_connection_stability.conf b/src/integration-tests/test_connection_stability.conf new file mode 100644 index 000000000..ba2ae058a --- /dev/null +++ b/src/integration-tests/test_connection_stability.conf @@ -0,0 +1,82 @@ +[PATHS] +SERVICEHOME = /tmp/test_connection_stability/ +DEFAULTCONFIG = test_connection_stability.conf + +[resolver] +PORT = 2564 + +[transport] +PORT = 2565 +PLUGINS = tcp + +[arm] +PORT = 2566 +DEFAULTSERVICES = + +[statistics] +PORT = 2567 + +[transport-tcp] +PORT = 2568 +BINDTO = 127.0.0.1 + +[peerinfo] +PORT = 2569 + +[core] +PORT = 2570 + +[testing] +NUM_PEERS = 5 +WEAKRANDOM = YES +F2F = YES +HOSTKEYSFILE = ../../contrib/testing_hostkeys.dat + +[dht] +AUTOSTART = NO + +[nat] +DISABLEV6 = YES +ENABLE_UPNP = NO +BEHIND_NAT = NO +ALLOW_NAT = NO +INTERNAL_ADDRESS = 127.0.0.1 +EXTERNAL_ADDRESS = 127.0.0.1 +USE_LOCALADDR = NO + +[dns] +AUTOSTART = NO + +[nse] +AUTOSTART = NO + +[mesh] +AUTOSTART = NO + +[datastore] +AUTOSTART = NO + +[fs] +AUTOSTART = NO + +[dv] +AUTOSTART = NO + +[chat] +AUTOSTART = NO + +[vpn] +AUTOSTART = NO + +[gns] +AUTOSTART = NO + +[namestore] +AUTOSTART = NO + +[lockmanager] +AUTOSTART = NO + +[arm] +DEFAULTSERVICES = core + -- 2.25.1