aboutsummaryrefslogtreecommitdiff
path: root/src/testing/test_testing_new_servicestartup.c
diff options
context:
space:
mode:
authorBertrand Marc <beberking@gmail.com>2012-06-06 20:47:48 +0200
committerBertrand Marc <beberking@gmail.com>2012-06-06 20:47:48 +0200
commit740b30688bd745a527f96f9116c19acb3480971a (patch)
tree2709a3f4dba11c174aa9e1ba3612e30c578e76a9 /src/testing/test_testing_new_servicestartup.c
parent2b81464a43485fcc8ce079fafdee7b7a171835f4 (diff)
Imported Upstream version 0.9.3upstream/0.9.3
Diffstat (limited to 'src/testing/test_testing_new_servicestartup.c')
-rw-r--r--src/testing/test_testing_new_servicestartup.c110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/testing/test_testing_new_servicestartup.c b/src/testing/test_testing_new_servicestartup.c
new file mode 100644
index 0000000..3b98688
--- /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;
+}