From eaa7823b3793e185f947f8bf4ad254078f7d915d Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Thu, 31 May 2012 21:44:02 +0000 Subject: -test case for service_startup() --- src/testing/Makefile.am | 12 ++- src/testing/test_testing_new_servicestartup.c | 110 ++++++++++++++++++++++++++ src/testing/testing_new.c | 4 +- 3 files changed, 123 insertions(+), 3 deletions(-) create mode 100644 src/testing/test_testing_new_servicestartup.c (limited to 'src/testing') diff --git a/src/testing/Makefile.am b/src/testing/Makefile.am index 50b6d77b3..572c03330 100644 --- a/src/testing/Makefile.am +++ b/src/testing/Makefile.am @@ -91,7 +91,8 @@ check_PROGRAMS = \ test_testing_topology_none \ test_testing_topology_scale_free \ test_testing_new_portreservation \ - test_testing_new_peerstartup + test_testing_new_peerstartup \ + test_testing_new_servicestartup if ENABLE_TEST_RUN TESTS = \ @@ -101,7 +102,8 @@ TESTS = \ test_testing_group \ test_testing_peergroup \ test_testing_new_portreservation \ - test_testing_new_peerstartup + test_testing_new_peerstartup \ + test_testing_new_servicestartup endif gnunet_testing_SOURCES = \ @@ -279,6 +281,12 @@ test_testing_new_peerstartup_LDADD = \ $(top_builddir)/src/testing/libgnunettesting_new.la \ $(top_builddir)/src/util/libgnunetutil.la +test_testing_new_servicestartup_SOURCES = \ + test_testing_new_servicestartup.c +test_testing_new_servicestartup_LDADD = \ + $(top_builddir)/src/testing/libgnunettesting_new.la \ + $(top_builddir)/src/util/libgnunetutil.la + EXTRA_DIST = \ test_testing_defaults.conf \ test_testing_data.conf \ diff --git a/src/testing/test_testing_new_servicestartup.c b/src/testing/test_testing_new_servicestartup.c new file mode 100644 index 000000000..3b9868869 --- /dev/null +++ b/src/testing/test_testing_new_servicestartup.c @@ -0,0 +1,110 @@ +/* + This file is part of GNUnet + (C) 2008, 2009, 2012 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 testing/test_testing_new_servicestartup.c + * @brief test case for testing service startup using new testing API + * @author Sree Harsha Totakura + */ + +#include "platform.h" +#include "gnunet_testing_lib-new.h" + + +#define LOG(kind,...) \ + GNUNET_log (kind, __VA_ARGS__) + +#define TIME_REL_SEC(sec) \ + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, sec) + +/** + * Global test status + */ +static int test_success; + +/** + * The shutdown task. Used to signal that testing is done and service has to be + * stopped + * + * @param cls NULL + */ +static void +shutdown_task(void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + test_success = GNUNET_YES; + GNUNET_SCHEDULER_shutdown (); +} + + +/** + * The testing callback function + * + * @param cls NULL + * @param cfg the configuration with which the current testing service is run + */ +static void +test_run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg) +{ + GNUNET_assert (NULL == cls); + GNUNET_assert (NULL != cfg); + LOG (GNUNET_ERROR_TYPE_DEBUG, "Service arm started successfully\n"); + GNUNET_SCHEDULER_add_delayed (TIME_REL_SEC (3), &shutdown_task, NULL); +} + + +/** + * The main point of execution + */ +int main (int argc, char *argv[]) +{ + char *_tmpdir; + char *tmpdir; +#ifdef MINGW + char *tmpdir_w; +#endif + + GNUNET_log_setup ("test_testing_new_servicestartup", "DEBUG", NULL); + _tmpdir = getenv ("TMP"); + if (NULL == _tmpdir) + _tmpdir = getenv ("TEMP"); + if (NULL == _tmpdir) + _tmpdir = getenv ("TMPDIR"); + if (NULL == _tmpdir) + _tmpdir = "/tmp"; + GNUNET_asprintf (&tmpdir, "%s/%s", _tmpdir, "test-gnunet-testing_new-XXXXXX"); +#ifdef MINGW + tmpdir_w = GNUNET_malloc (MAX_PATH + 1); + GNUNET_assert (ERROR_SUCCESS == plibc_conv_to_win_path (tmpdir, tmpdir_w)); + GNUNET_free (tmpdir); + tmpdir = tmpdir_w; + //GNUNET_assert (0 == _mktemp_s (tmpdir, strlen (tmpdir) + 1)); +#else + GNUNET_assert (mkdtemp (tmpdir) == tmpdir); +#endif + + test_success = GNUNET_NO; + GNUNET_assert (0 == GNUNET_TESTING_service_run (tmpdir, + "arm", + "test_testing_defaults.conf", + &test_run, + NULL)); + GNUNET_free (tmpdir); + return (GNUNET_YES == test_success) ? 0 : 1; +} diff --git a/src/testing/testing_new.c b/src/testing/testing_new.c index c19f5c8e1..c45b89e29 100644 --- a/src/testing/testing_new.c +++ b/src/testing/testing_new.c @@ -965,9 +965,11 @@ GNUNET_TESTING_service_run (const char *tmppath, if (NULL == peer) { GNUNET_CONFIGURATION_destroy (cfg); + GNUNET_TESTING_hostkeys_unload (system); GNUNET_TESTING_system_destroy (system, GNUNET_YES); return 1; - } + } + GNUNET_TESTING_hostkeys_unload (system); GNUNET_free (peer->main_binary); GNUNET_asprintf (&peer->main_binary, "gnunet-service-%s", service_name); if (GNUNET_OK != GNUNET_TESTING_peer_start (peer)) -- cgit v1.2.3