gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r22159 - in gnunet/src: include testing


From: gnunet
Subject: [GNUnet-SVN] r22159 - in gnunet/src: include testing
Date: Wed, 20 Jun 2012 16:43:29 +0200

Author: harsha
Date: 2012-06-20 16:43:29 +0200 (Wed, 20 Jun 2012)
New Revision: 22159

Modified:
   gnunet/src/include/gnunet_testing_lib-new.h
   gnunet/src/testing/gnunet-testing-run-service.c
   gnunet/src/testing/test_testing_servicestartup.c
   gnunet/src/testing/testing.c
Log:
-fixing #2442

Modified: gnunet/src/include/gnunet_testing_lib-new.h
===================================================================
--- gnunet/src/include/gnunet_testing_lib-new.h 2012-06-20 14:24:45 UTC (rev 
22158)
+++ gnunet/src/include/gnunet_testing_lib-new.h 2012-06-20 14:43:29 UTC (rev 
22159)
@@ -183,7 +183,7 @@
  * @param id identifier for the daemon, will be set
  */
 void
-GNUNET_TESTING_peer_get_identity (struct GNUNET_TESTING_Peer *peer,
+GNUNET_TESTING_peer_get_identity (const struct GNUNET_TESTING_Peer *peer,
                                  struct GNUNET_PeerIdentity *id);
 
 
@@ -224,25 +224,14 @@
  * 
  * @param cls closure
  * @param cfg configuration of the peer that was started
+ * @param peer identity of the peer that was created
  */
 typedef void (*GNUNET_TESTING_TestMain)(void *cls,
-                                       const struct 
GNUNET_CONFIGURATION_Handle *cfg);
+                                       const struct 
GNUNET_CONFIGURATION_Handle *cfg,
+                                       struct GNUNET_TESTING_Peer *peer);
 
 
 /**
- * Signature of the 'main' function for a (single-peer) testcase that
- * is run using 'GNUNET_TESTING_system_run_restartable'.
- * 
- * @param cls closure
- * @param cfg configuration of the peer that was started
- * @param peer identity of the peer that was created
- */
-typedef void (*GNUNET_TESTING_RestartableTestMain)(void *cls,
-                                                  const struct 
GNUNET_CONFIGURATION_Handle *cfg,
-                                                  const struct 
GNUNET_TESTING_Peer *peer);
-
-
-/**
  * Start a single peer and run a test using the testing library.
  * Starts a peer using the given configuration and then invokes the
  * given callback.  This function ALSO initializes the scheduler loop
@@ -295,25 +284,6 @@
 
 
 /**
- * See GNUNET_TESTING_service_run.
- * The only difference is that we handle the GNUNET_TESTING_Peer to
- * the RestartableTestMain, so that the peer can be destroyed and re-created
- * to simulate failure in tests.
- *
- * FIXME: change 'GNUNET_TESTING_TestMain' to have the 'restartable' signature
- * and remove this extra function (in some sense, make this the primary one,
- * but keep the old name).
- */
-int
-GNUNET_TESTING_service_run_restartable (const char *testdir,
-                           const char *service_name,
-                           const char *cfgfilename,
-                           GNUNET_TESTING_RestartableTestMain tm,
-                           void *tm_cls);
-
-
-
-/**
  * Sometimes we use the binary name to determine which specific
  * test to run.  In those cases, the string after the last "_"
  * in 'argv[0]' specifies a string that determines the configuration

Modified: gnunet/src/testing/gnunet-testing-run-service.c
===================================================================
--- gnunet/src/testing/gnunet-testing-run-service.c     2012-06-20 14:24:45 UTC 
(rev 22158)
+++ gnunet/src/testing/gnunet-testing-run-service.c     2012-06-20 14:43:29 UTC 
(rev 22159)
@@ -143,9 +143,9 @@
  */
 static void
 testing_main (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg,
-              const struct GNUNET_TESTING_Peer *peer)
+              struct GNUNET_TESTING_Peer *peer)
 {
-  my_peer = (struct GNUNET_TESTING_Peer *) peer;
+  my_peer = peer;
   if (NULL == (tmpfilename = GNUNET_DISK_mktemp ("gnunet-testing")))
   {
     GNUNET_break (0);
@@ -193,8 +193,8 @@
   if (GNUNET_SYSERR ==
       GNUNET_GETOPT_run("gnunet-testing-run-service", options, argc, argv))
     return 1;
-  ret = GNUNET_TESTING_service_run_restartable ("gnunet_service_test", 
srv_name,
-                                               cfg_name, &testing_main, NULL);
+  ret = GNUNET_TESTING_service_run ("gnunet_service_test", srv_name,
+                                   cfg_name, &testing_main, NULL);
   if (0 != ret)
   {
     printf ("error\n");

Modified: gnunet/src/testing/test_testing_servicestartup.c
===================================================================
--- gnunet/src/testing/test_testing_servicestartup.c    2012-06-20 14:24:45 UTC 
(rev 22158)
+++ gnunet/src/testing/test_testing_servicestartup.c    2012-06-20 14:43:29 UTC 
(rev 22159)
@@ -45,7 +45,8 @@
  * @param cfg the configuration with which the current testing service is run
  */
 static void
-test_run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg)
+test_run (void *cls, const struct GNUNET_CONFIGURATION_Handle *cfg,
+         struct GNUNET_TESTING_Peer *peer)
 {
   GNUNET_assert (NULL == cls);
   GNUNET_assert (NULL != cfg);

Modified: gnunet/src/testing/testing.c
===================================================================
--- gnunet/src/testing/testing.c        2012-06-20 14:24:45 UTC (rev 22158)
+++ gnunet/src/testing/testing.c        2012-06-20 14:43:29 UTC (rev 22159)
@@ -132,6 +132,10 @@
  */
 struct GNUNET_TESTING_Peer
 {
+  /**
+   * The TESTING system associated with this peer
+   */
+  struct GNUNET_TESTING_System *system;
 
   /**
    * Path to the configuration file for this peer.
@@ -151,6 +155,11 @@
    * peer/service is currently not running.
    */
   struct GNUNET_OS_Process *main_process;
+
+  /**
+   * The keynumber of this peer's hostkey
+   */
+  uint32_t key_number;
 };
 
 
@@ -795,6 +804,8 @@
   peer = GNUNET_malloc (sizeof (struct GNUNET_TESTING_Peer));
   peer->cfgfile = config_filename; /* Free in peer_destroy */
   peer->main_binary = GNUNET_strdup ("gnunet-service-arm");
+  peer->system = system;
+  peer->key_number = key_number;
   return peer;
 }
 
@@ -806,11 +817,12 @@
  * @param id identifier for the daemon, will be set
  */
 void
-GNUNET_TESTING_peer_get_identity (struct GNUNET_TESTING_Peer *peer,
+GNUNET_TESTING_peer_get_identity (const struct GNUNET_TESTING_Peer *peer,
                                  struct GNUNET_PeerIdentity *id)
 {
-  GNUNET_assert (0); // FIXME-SREE.
-  // *id = peer->id;
+  GNUNET_CRYPTO_rsa_key_free (GNUNET_TESTING_hostkey_get (peer->system,
+                                                         peer->key_number,
+                                                         id));
 }
 
 
@@ -931,33 +943,11 @@
    * Callback to signal service startup
    */
   GNUNET_TESTING_TestMain tm;
-
+  
   /**
-   * Closure for the above callback
-   */
-  void *tm_cls;
-};
-
-
-/**
- * Structure for holding service data
- */
-struct RestartableServiceContext
-{
-  /**
-   * The configuration of the peer in which the service is run
-   */
-  const struct GNUNET_CONFIGURATION_Handle *cfg;
-
-  /**
-   * Callback to signal service startup
-   */
-  GNUNET_TESTING_RestartableTestMain tm;
-
-  /**
    * The peer in which the service is run.
    */
-  const struct GNUNET_TESTING_Peer *peer;
+  struct GNUNET_TESTING_Peer *peer;
 
   /**
    * Closure for the above callback
@@ -978,22 +968,6 @@
 {
   struct ServiceContext *sc = cls;
 
-  sc->tm (sc->tm_cls, sc->cfg);
-}
-
-
-/**
- * Callback to be called when SCHEDULER has been started
- *
- * @param cls the ServiceContext
- * @param tc the TaskContext
- */
-static void
-service_run_restartable_main (void *cls,
-                 const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
-  struct RestartableServiceContext *sc = cls;
-
   sc->tm (sc->tm_cls, sc->cfg, sc->peer);
 }
 
@@ -1066,6 +1040,7 @@
   sc.cfg = cfg;
   sc.tm = tm;
   sc.tm_cls = tm_cls;
+  sc.peer = peer;
   GNUNET_SCHEDULER_run (&service_run_main, &sc); /* Scheduler loop */
   if (GNUNET_OK != GNUNET_TESTING_peer_stop (peer))
   {
@@ -1081,77 +1056,7 @@
 }
 
 
-
 /**
- * See GNUNET_TESTING_service_run.
- * The only difference is that we handle the GNUNET_TESTING_Peer to
- * the RestartableTestMain, so that the peer can be destroyed and re-created
- * to simulate failure in tests.
- */
-int
-GNUNET_TESTING_service_run_restartable (const char *testdir,
-                           const char *service_name,
-                           const char *cfgfilename,
-                           GNUNET_TESTING_RestartableTestMain tm,
-                           void *tm_cls)
-{
-  struct RestartableServiceContext sc;
-  struct GNUNET_TESTING_System *system;
-  struct GNUNET_TESTING_Peer *peer;
-  struct GNUNET_CONFIGURATION_Handle *cfg;
-
-  GNUNET_log_setup (testdir,
-                    "WARNING",
-                    NULL);
-  system = GNUNET_TESTING_system_create (testdir, "127.0.0.1");
-  if (NULL == system)
-    return 1;
-  cfg = GNUNET_CONFIGURATION_create ();
-  if (GNUNET_OK != GNUNET_CONFIGURATION_load (cfg, cfgfilename))
-  {
-    LOG (GNUNET_ERROR_TYPE_ERROR,
-        _("Failed to load configuration from %s\n"), cfgfilename);
-    GNUNET_CONFIGURATION_destroy (cfg);
-    GNUNET_TESTING_system_destroy (system, GNUNET_YES);
-    return 1;
-  }
-  peer = GNUNET_TESTING_peer_configure (system, cfg, 0, NULL, NULL);
-  if (NULL == peer)
-  {
-    GNUNET_CONFIGURATION_destroy (cfg);
-    hostkeys_unload (system);
-    GNUNET_TESTING_system_destroy (system, GNUNET_YES);
-    return 1;
-  }
-  GNUNET_free (peer->main_binary);
-  GNUNET_asprintf (&peer->main_binary, "gnunet-service-%s", service_name);
-  if (GNUNET_OK != GNUNET_TESTING_peer_start (peer))
-  {
-    GNUNET_TESTING_peer_destroy (peer);
-    GNUNET_CONFIGURATION_destroy (cfg);
-    GNUNET_TESTING_system_destroy (system, GNUNET_YES);
-    return 1;
-  }
-  sc.cfg = cfg;
-  sc.tm = tm;
-  sc.tm_cls = tm_cls;
-  sc.peer = peer;
-  GNUNET_SCHEDULER_run (&service_run_restartable_main, &sc); /* Scheduler loop 
*/
-  if (GNUNET_OK != GNUNET_TESTING_peer_stop (peer))
-  {
-    GNUNET_TESTING_peer_destroy (peer);
-    GNUNET_CONFIGURATION_destroy (cfg);
-    GNUNET_TESTING_system_destroy (system, GNUNET_YES);
-    return 1;
-  }
-  GNUNET_TESTING_peer_destroy (peer);
-  GNUNET_CONFIGURATION_destroy (cfg);
-  GNUNET_TESTING_system_destroy (system, GNUNET_YES);
-  return 0;
-}
-
-
-/**
  * Sometimes we use the binary name to determine which specific
  * test to run.  In those cases, the string after the last "_"
  * in 'argv[0]' specifies a string that determines the configuration




reply via email to

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