gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-exchange] branch master updated: factor out more hel


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated: factor out more helpers
Date: Sun, 21 Jan 2018 19:11:35 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new a252daa  factor out more helpers
a252daa is described below

commit a252daa6a1b3fe5b22757e7aeffc502e7f098261
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Jan 21 19:11:27 2018 +0100

    factor out more helpers
---
 src/exchange-lib/Makefile.am             |   1 +
 src/exchange-lib/test_exchange_api_new.c | 135 +++-----------------------
 src/exchange-lib/testing_api_helpers.c   | 158 +++++++++++++++++++++++++++++++
 src/exchange-lib/testing_api_loop.c      |   5 +
 src/include/taler_testing_lib.h          |  31 ++++++
 5 files changed, 208 insertions(+), 122 deletions(-)

diff --git a/src/exchange-lib/Makefile.am b/src/exchange-lib/Makefile.am
index c8fc447..2f02a6e 100644
--- a/src/exchange-lib/Makefile.am
+++ b/src/exchange-lib/Makefile.am
@@ -39,6 +39,7 @@ libtalertesting_la_LDFLAGS = \
   -version-info 0:0:0 \
   -no-undefined
 libtalertesting_la_SOURCES = \
+  testing_api_cmd_exec_wirewatch.c \
   testing_api_cmd_fakebank_transfer.c \
   testing_api_cmd_withdraw.c \
   testing_api_helpers.c \
diff --git a/src/exchange-lib/test_exchange_api_new.c 
b/src/exchange-lib/test_exchange_api_new.c
index 4cf8423..2bbbe0c 100644
--- a/src/exchange-lib/test_exchange_api_new.c
+++ b/src/exchange-lib/test_exchange_api_new.c
@@ -46,6 +46,7 @@
  */
 #define EXCHANGE_ACCOUNT_NO 2
 
+
 /**
  * Handle to access the exchange.
  */
@@ -98,6 +99,8 @@ run (void *cls,
                                          EXCHANGE_ACCOUNT_NO,
                                          "user42",
                                          "pass42"),
+    TALER_TESTING_cmd_exec_wirewatch ("exec-wirewatch",
+                                      "test_exchange_api.conf"),
     TALER_TESTING_cmd_end ()
   };
 
@@ -110,47 +113,11 @@ run (void *cls,
 
 
 
-/**
- * Remove files from previous runs
- */
-static void
-cleanup_files ()
-{
-  struct GNUNET_CONFIGURATION_Handle *cfg;
-  char *dir;
-
-  cfg = GNUNET_CONFIGURATION_create ();
-  if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_load (cfg,
-                                 "test_exchange_api.conf"))
-  {
-    GNUNET_break (0);
-    GNUNET_CONFIGURATION_destroy (cfg);
-    exit (77);
-  }
-  GNUNET_assert (GNUNET_OK ==
-                 GNUNET_CONFIGURATION_get_value_filename (cfg,
-                                                          "exchange",
-                                                          "keydir",
-                                                          &dir));
-  if (GNUNET_YES ==
-      GNUNET_DISK_directory_test (dir,
-                                  GNUNET_NO))
-    GNUNET_break (GNUNET_OK ==
-                  GNUNET_DISK_directory_remove (dir));
-  GNUNET_free (dir);
-  GNUNET_CONFIGURATION_destroy (cfg);
-}
-
-
-
-
 int
 main (int argc,
       char * const *argv)
 {
   struct GNUNET_OS_Process *proc;
-  struct GNUNET_SIGNAL_Context *shc_chld;
   enum GNUNET_OS_ProcessStatusType type;
   unsigned long code;
   unsigned int iter;
@@ -159,18 +126,17 @@ main (int argc,
   /* These might get in the way... */
   unsetenv ("XDG_DATA_HOME");
   unsetenv ("XDG_CONFIG_HOME");
-  GNUNET_log_setup ("test-exchange-api",
+  GNUNET_log_setup ("test-exchange-api-new",
                     "INFO",
                     NULL);
-  if (GNUNET_OK !=
-      GNUNET_NETWORK_test_port_free (IPPROTO_TCP,
-                                    8081))
-  {
-    fprintf (stderr,
-             "Required port %u not available, skipping.\n",
-            8081);
+  TALER_TESTING_cleanup_files ("test_exchange_api.conf");
+  result = TALER_TESTING_prepare_exchange ("test_exchange_api.conf");
+  if (GNUNET_SYSERR == result)
+    return 1;
+  if (GNUNET_NO == result)
     return 77;
-  }
+
+  /* For fakebank */
   if (GNUNET_OK !=
       GNUNET_NETWORK_test_port_free (IPPROTO_TCP,
                                     8082))
@@ -180,83 +146,7 @@ main (int argc,
             8082);
     return 77;
   }
-  cleanup_files ();
 
-  proc = GNUNET_OS_start_process (GNUNET_NO,
-                                  GNUNET_OS_INHERIT_STD_ALL,
-                                  NULL, NULL, NULL,
-                                  "taler-exchange-keyup",
-                                  "taler-exchange-keyup",
-                                  "-c", "test_exchange_api.conf",
-                                  "-o", "auditor.in",
-                                  NULL);
-  if (NULL == proc)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-               "Failed to run `taler-exchange-keyup`, is your PATH 
correct?\n");
-    return 77;
-  }
-  GNUNET_OS_process_wait (proc);
-  GNUNET_OS_process_destroy (proc);
-
-  proc = GNUNET_OS_start_process (GNUNET_NO,
-                                  GNUNET_OS_INHERIT_STD_ALL,
-                                  NULL, NULL, NULL,
-                                  "taler-auditor-sign",
-                                  "taler-auditor-sign",
-                                  "-c", "test_exchange_api.conf",
-                                  "-u", "http://auditor/";,
-                                  "-m", 
"98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG",
-                                  "-r", "auditor.in",
-                                  "-o", 
"test_exchange_api_home/.local/share/taler/auditors/auditor.out",
-                                  NULL);
-  if (NULL == proc)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-               "Failed to run `taler-exchange-keyup`, is your PATH 
correct?\n");
-    return 77;
-  }
-  GNUNET_OS_process_wait (proc);
-  GNUNET_OS_process_destroy (proc);
-
-  proc = GNUNET_OS_start_process (GNUNET_NO,
-                                  GNUNET_OS_INHERIT_STD_ALL,
-                                  NULL, NULL, NULL,
-                                  "taler-exchange-dbinit",
-                                  "taler-exchange-dbinit",
-                                  "-c", "test_exchange_api.conf",
-                                  "-r",
-                                  NULL);
-  if (NULL == proc)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-               "Failed to run `taler-exchange-dbinit`, is your PATH 
correct?\n");
-    return 77;
-  }
-  if (GNUNET_SYSERR ==
-      GNUNET_OS_process_wait_status (proc,
-                                     &type,
-                                     &code))
-  {
-    GNUNET_break (0);
-    GNUNET_OS_process_destroy (proc);
-    return 1;
-  }
-  GNUNET_OS_process_destroy (proc);
-  if ( (type == GNUNET_OS_PROCESS_EXITED) &&
-       (0 != code) )
-  {
-    fprintf (stderr,
-             "Failed to setup database\n");
-    return 77;
-  }
-  if ( (type != GNUNET_OS_PROCESS_EXITED) ||
-       (0 != code) )
-  {
-    fprintf (stderr,
-             "Unexpected error running `taler-exchange-dbinit'!\n");
-    return 1;
-  }
   exchanged = GNUNET_OS_start_process (GNUNET_NO,
                                        GNUNET_OS_INHERIT_STD_ALL,
                                        NULL, NULL, NULL,
@@ -288,7 +178,8 @@ main (int argc,
   while (0 != system ("wget -q -t 1 -T 1 http://127.0.0.1:8081/keys -o 
/dev/null -O /dev/null"));
   fprintf (stderr, "\n");
 
-  result = TALER_TESTING_setup (&run, NULL);
+  result = TALER_TESTING_setup (&run,
+                                NULL);
   GNUNET_break (0 ==
                 GNUNET_OS_process_kill (exchanged,
                                         SIGTERM));
diff --git a/src/exchange-lib/testing_api_helpers.c 
b/src/exchange-lib/testing_api_helpers.c
index 5f49049..36ef5c9 100644
--- a/src/exchange-lib/testing_api_helpers.c
+++ b/src/exchange-lib/testing_api_helpers.c
@@ -30,6 +30,164 @@
 
 
 /**
+ * Remove files from previous runs
+ */
+void
+TALER_TESTING_cleanup_files (const char *config_name)
+{
+  struct GNUNET_CONFIGURATION_Handle *cfg;
+  char *dir;
+
+  cfg = GNUNET_CONFIGURATION_create ();
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_load (cfg,
+                                 config_name))
+  {
+    GNUNET_break (0);
+    GNUNET_CONFIGURATION_destroy (cfg);
+    exit (77);
+  }
+  GNUNET_assert (GNUNET_OK ==
+                 GNUNET_CONFIGURATION_get_value_filename (cfg,
+                                                          "exchange",
+                                                          "keydir",
+                                                          &dir));
+  if (GNUNET_YES ==
+      GNUNET_DISK_directory_test (dir,
+                                  GNUNET_NO))
+    GNUNET_break (GNUNET_OK ==
+                  GNUNET_DISK_directory_remove (dir));
+  GNUNET_free (dir);
+  GNUNET_CONFIGURATION_destroy (cfg);
+}
+
+
+/**
+ * Prepare launching an exchange.  Checks that the configured
+ * port is available, runs taler-exchange-keyup,
+ * taler-auditor-sign and taler-exchange-dbinit.  Does not
+ * launch the exchange process itself.
+ *
+ * @param config_filename configuration file to use
+ * @return #GNUNET_OK on success, #GNUNET_NO if test should be skipped,
+ *         #GNUNET_SYSERR on test failure
+ */
+int
+TALER_TESTING_prepare_exchange (const char *config_filename)
+{
+  struct GNUNET_OS_Process *proc;
+  enum GNUNET_OS_ProcessStatusType type;
+  unsigned long code;
+  struct GNUNET_CONFIGURATION_Handle *cfg;
+  unsigned long long port;
+
+  cfg = GNUNET_CONFIGURATION_create ();
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_load (cfg,
+                                 config_filename))
+    return GNUNET_NO;
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_number (cfg,
+                                             "exchange",
+                                             "PORT",
+                                             &port))
+  {
+    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+                               "exchange",
+                               "PORT");
+    return GNUNET_NO;
+  }
+  GNUNET_CONFIGURATION_destroy (cfg);
+  if (GNUNET_OK !=
+      GNUNET_NETWORK_test_port_free (IPPROTO_TCP,
+                                    (uint16_t) port))
+  {
+    fprintf (stderr,
+             "Required port %llu not available, skipping.\n",
+            port);
+    return GNUNET_NO;
+  }
+
+  proc = GNUNET_OS_start_process (GNUNET_NO,
+                                  GNUNET_OS_INHERIT_STD_ALL,
+                                  NULL, NULL, NULL,
+                                  "taler-exchange-keyup",
+                                  "taler-exchange-keyup",
+                                  "-c", "test_exchange_api.conf",
+                                  "-o", "auditor.in",
+                                  NULL);
+  if (NULL == proc)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+               "Failed to run `taler-exchange-keyup`, is your PATH 
correct?\n");
+    return GNUNET_NO;
+  }
+  GNUNET_OS_process_wait (proc);
+  GNUNET_OS_process_destroy (proc);
+
+  proc = GNUNET_OS_start_process (GNUNET_NO,
+                                  GNUNET_OS_INHERIT_STD_ALL,
+                                  NULL, NULL, NULL,
+                                  "taler-auditor-sign",
+                                  "taler-auditor-sign",
+                                  "-c", "test_exchange_api.conf",
+                                  "-u", "http://auditor/";,
+                                  "-m", 
"98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG",
+                                  "-r", "auditor.in",
+                                  "-o", 
"test_exchange_api_home/.local/share/taler/auditors/auditor.out",
+                                  NULL);
+  if (NULL == proc)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+               "Failed to run `taler-exchange-keyup`, is your PATH 
correct?\n");
+    return GNUNET_NO;
+  }
+  GNUNET_OS_process_wait (proc);
+  GNUNET_OS_process_destroy (proc);
+
+  proc = GNUNET_OS_start_process (GNUNET_NO,
+                                  GNUNET_OS_INHERIT_STD_ALL,
+                                  NULL, NULL, NULL,
+                                  "taler-exchange-dbinit",
+                                  "taler-exchange-dbinit",
+                                  "-c", "test_exchange_api.conf",
+                                  "-r",
+                                  NULL);
+  if (NULL == proc)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+               "Failed to run `taler-exchange-dbinit`, is your PATH 
correct?\n");
+    return GNUNET_NO;
+  }
+  if (GNUNET_SYSERR ==
+      GNUNET_OS_process_wait_status (proc,
+                                     &type,
+                                     &code))
+  {
+    GNUNET_break (0);
+    GNUNET_OS_process_destroy (proc);
+    return GNUNET_SYSERR;
+  }
+  GNUNET_OS_process_destroy (proc);
+  if ( (type == GNUNET_OS_PROCESS_EXITED) &&
+       (0 != code) )
+  {
+    fprintf (stderr,
+             "Failed to setup database\n");
+    return GNUNET_NO;
+  }
+  if ( (type != GNUNET_OS_PROCESS_EXITED) ||
+       (0 != code) )
+  {
+    fprintf (stderr,
+             "Unexpected error running `taler-exchange-dbinit'!\n");
+    return GNUNET_SYSERR;
+  }
+  return GNUNET_OK;
+}
+
+
+/**
  * Find denomination key matching the given amount.
  *
  * @param keys array of keys to search
diff --git a/src/exchange-lib/testing_api_loop.c 
b/src/exchange-lib/testing_api_loop.c
index 22d7867..47175fe 100644
--- a/src/exchange-lib/testing_api_loop.c
+++ b/src/exchange-lib/testing_api_loop.c
@@ -253,6 +253,11 @@ do_shutdown (void *cls)
     GNUNET_SCHEDULER_cancel (is->timeout_task);
     is->timeout_task = NULL;
   }
+  if (NULL != is->child_death_task)
+  {
+    GNUNET_SCHEDULER_cancel (is->child_death_task);
+    is->child_death_task = NULL;
+  }
   GNUNET_free_non_null (is->commands);
 }
 
diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h
index 8e11916..5643572 100644
--- a/src/include/taler_testing_lib.h
+++ b/src/include/taler_testing_lib.h
@@ -43,6 +43,28 @@ TALER_TESTING_find_pk (const struct TALER_EXCHANGE_Keys 
*keys,
                        const struct TALER_Amount *amount);
 
 
+/**
+ * Prepare launching an exchange.  Checks that the configured
+ * port is available, runs taler-exchange-keyup,
+ * taler-auditor-sign and taler-exchange-dbinit.  Does not
+ * launch the exchange process itself.
+ *
+ * @param config_filename configuration file to use
+ * @return #GNUNET_OK on success, #GNUNET_NO if test should be skipped,
+ *         #GNUNET_SYSERR on test failure
+ */
+int
+TALER_TESTING_prepare_exchange (const char *config_filename);
+
+
+/**
+ * Remove files from previous runs
+ */
+void
+TALER_TESTING_cleanup_files (const char *config_name);
+
+
+
 /* ******************* Generic interpreter logic ****************** */
 
 /**
@@ -209,6 +231,15 @@ TALER_TESTING_cmd_fakebank_transfer (const char *label,
 
 
 /**
+ * Execute taler-exchange-wirewatch process.
+ *
+ */
+struct TALER_TESTING_Command
+TALER_TESTING_cmd_exec_wirewatch (const char *label,
+                                  const char *config_filename);
+
+
+/**
  * Create withdraw command.
  *
  * @return NULL on failure

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

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