gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r21648 - gnunet/src/testing


From: gnunet
Subject: [GNUnet-SVN] r21648 - gnunet/src/testing
Date: Wed, 30 May 2012 23:43:09 +0200

Author: harsha
Date: 2012-05-30 23:43:09 +0200 (Wed, 30 May 2012)
New Revision: 21648

Added:
   gnunet/src/testing/test_testing_new_peerstartup.c
Modified:
   gnunet/src/testing/
Log:
-added testcase file


Property changes on: gnunet/src/testing
___________________________________________________________________
Modified: svn:ignore
   - gnunet-testing
topology_clique.dot
testing_topo_initial
test_testing_peergroup
test_testing_reconnect
final_topology.dot
test_testing_topology_stability
topology_clique.do
test_testing_2dtorus
test_testing_topology_none
test_testing_topology_small_world_torus
test_testing_topology_small_world_ring
test_testing_topology_scale_free
test_testing_topology_ring
test_testing_topology_line
test_testing_topology_internat
test_testing_topology_erdos_renyi
test_testing_topology_clique_random
test_testing_topology_clique_minimum
test_testing_topology_clique_dfs
test_testing_topology_churn
test_testing_topology_blacklist
test_testing_topology_2d_torus
test_testing_group_remote
topology.dot
test_testing_topology_clique
test_testing_group.gcno
test_testing_group.gcda
test_testing_connect.gcno
test_testing_connect.gcda
test_testing_group
test_testing_connect
test_testing_new_portreservation
testing_testbed.gcno
testing_testbed.gcda
testing_group.gcno
testing_group.gcda
testing.gcno
testing.gcda
test_testing.gcno
test_testing.gcda
test_testing
Makefile.in
Makefile
.deps

   + gnunet-testing
topology_clique.dot
testing_topo_initial
test_testing_peergroup
test_testing_reconnect
final_topology.dot
test_testing_topology_stability
topology_clique.do
test_testing_2dtorus
test_testing_topology_none
test_testing_topology_small_world_torus
test_testing_topology_small_world_ring
test_testing_topology_scale_free
test_testing_topology_ring
test_testing_topology_line
test_testing_topology_internat
test_testing_topology_erdos_renyi
test_testing_topology_clique_random
test_testing_topology_clique_minimum
test_testing_topology_clique_dfs
test_testing_topology_churn
test_testing_topology_blacklist
test_testing_topology_2d_torus
test_testing_group_remote
topology.dot
test_testing_topology_clique
test_testing_group.gcno
test_testing_group.gcda
test_testing_connect.gcno
test_testing_connect.gcda
test_testing_group
test_testing_connect
test_testing_new_portreservation
test_testing_new_peerstartup
testing_testbed.gcno
testing_testbed.gcda
testing_group.gcno
testing_group.gcda
testing.gcno
testing.gcda
test_testing.gcno
test_testing.gcda
test_testing
Makefile.in
Makefile
.deps


Added: gnunet/src/testing/test_testing_new_peerstartup.c
===================================================================
--- gnunet/src/testing/test_testing_new_peerstartup.c                           
(rev 0)
+++ gnunet/src/testing/test_testing_new_peerstartup.c   2012-05-30 21:43:09 UTC 
(rev 21648)
@@ -0,0 +1,135 @@
+/*
+      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_peerstartup.c
+ * @brief test case for testing peer startup and shutdown using new testing
+ *          library 
+ * @author Sree Harsha Totakura
+ */
+
+#include "platform.h"
+#include "gnunet_configuration_lib.h"
+#include "gnunet_os_lib.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)
+
+/**
+ * The testing context
+ */
+struct TestingContext
+{
+  /**
+   * The testing system
+   */
+  struct GNUNET_TESTING_System *system;
+  
+  /**
+   * The peer which has been started by the testing system
+   */
+  struct GNUNET_TESTING_Peer *peer;
+};
+
+
+/**
+ * Task for shutdown
+ *
+ * @param cls the testing context
+ * @param tc the tast context
+ */
+static void
+do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+  struct TestingContext *test_ctx = cls;
+  
+  GNUNET_assert (GNUNET_OK == GNUNET_TESTING_peer_stop (test_ctx->peer));
+  GNUNET_TESTING_peer_destroy (test_ctx->peer);
+  GNUNET_TESTING_hostkeys_unload (test_ctx->system);
+  GNUNET_TESTING_system_destroy (test_ctx->system, GNUNET_YES);
+  GNUNET_free (test_ctx);
+}
+
+
+/**
+ * Main point of test execution
+ */
+static void
+run (void *cls, char *const *args, const char *cfgfile,
+     const struct GNUNET_CONFIGURATION_Handle *cfg)
+{
+  struct GNUNET_TESTING_System *system;
+  struct GNUNET_TESTING_Peer *peer;
+  struct GNUNET_CONFIGURATION_Handle *new_cfg;
+  struct TestingContext *test_ctx;
+  char *data_dir;
+  char *hostkeys_file;
+  char *emsg;
+  char *tmpdir;
+  struct GNUNET_PeerIdentity id;
+  
+  GNUNET_asprintf (&tmpdir, "%s/%s", P_tmpdir,
+                   "test-gnunet-testing_new-XXXXXX");
+  GNUNET_assert (mkdtemp (tmpdir) == tmpdir);
+  /* LOG (GNUNET_ERROR_TYPE_ERROR, */
+  /*      "Temporary directory: %s\n", tmpdir); */
+  system = GNUNET_TESTING_system_create (tmpdir,
+                                         "localhost");
+  GNUNET_assert (NULL != system);
+  GNUNET_free (tmpdir);
+  data_dir = GNUNET_OS_installation_get_path (GNUNET_OS_IPK_DATADIR);
+  GNUNET_asprintf (&hostkeys_file, "%s/testing_hostkeys.dat", data_dir);
+  GNUNET_free (data_dir);  
+  GNUNET_assert (GNUNET_OK == 
+                 GNUNET_TESTING_hostkeys_load (system, hostkeys_file));
+  GNUNET_free (hostkeys_file);
+  new_cfg = GNUNET_CONFIGURATION_dup (cfg);
+  emsg = NULL;
+  peer = GNUNET_TESTING_peer_configure (system, new_cfg, 0, &id, &emsg);
+  GNUNET_assert (NULL != peer);
+  GNUNET_assert (NULL == emsg);
+  GNUNET_assert (GNUNET_OK == GNUNET_TESTING_peer_start (peer));
+  test_ctx = GNUNET_malloc (sizeof (struct TestingContext));
+  test_ctx->system = system;
+  test_ctx->peer = peer;
+  GNUNET_SCHEDULER_add_delayed (TIME_REL_SEC (5),
+                                &do_shutdown, test_ctx);
+  
+}
+
+
+int main (int argc, char *argv[])
+{
+  struct GNUNET_GETOPT_CommandLineOption options[] = {
+    GNUNET_GETOPT_OPTION_END
+  };
+
+  if (GNUNET_OK !=
+      GNUNET_PROGRAM_run (argc, argv,
+                          "test_testing_new_peerstartup",
+                          "test case for peerstartup using new testing 
library",
+                          options, &run, NULL))
+    return 1;
+  return 0;
+}




reply via email to

[Prev in Thread] Current Thread [Next in Thread]