gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated: Adapting wirewatch tests to new


From: gnunet
Subject: [taler-exchange] branch master updated: Adapting wirewatch tests to new style.
Date: Thu, 16 Jan 2020 00:12:36 +0100

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

marcello pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 90e15720 Adapting wirewatch tests to new style.
90e15720 is described below

commit 90e15720391b2943096352c023f64544a8d009a8
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu Jan 16 00:11:51 2020 +0100

    Adapting wirewatch tests to new style.
---
 src/auditordb/plugin_auditordb_postgres.c          |   4 +-
 src/bank-lib/fakebank.c                            |   2 +-
 src/exchange/taler-exchange-aggregator.c           |   8 +-
 src/exchangedb/plugin_exchangedb_postgres.c        |   8 +-
 .../test-taler-exchange-wirewatch-postgres.conf    |   2 +-
 .../.config/taler/account-1.json                   |   4 +-
 src/lib/test_taler_exchange_wirewatch.c            | 780 ++-------------------
 7 files changed, 64 insertions(+), 744 deletions(-)

diff --git a/src/auditordb/plugin_auditordb_postgres.c 
b/src/auditordb/plugin_auditordb_postgres.c
index d8e59b3d..05a4dbe2 100644
--- a/src/auditordb/plugin_auditordb_postgres.c
+++ b/src/auditordb/plugin_auditordb_postgres.c
@@ -1040,13 +1040,13 @@ postgres_preflight (void *cls,
                                  es))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "BUG: Preflight check committed transaction `%s'!\n",
+                "BUG: Preflight check rolled back transaction `%s'!\n",
                 session->transaction_name);
   }
   else
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "BUG: Preflight check failed to commit transaction `%s'!\n",
+                "BUG: Preflight check failed to rollback transaction `%s'!\n",
                 session->transaction_name);
   }
   session->transaction_name = NULL;
diff --git a/src/bank-lib/fakebank.c b/src/bank-lib/fakebank.c
index b318119e..71f75211 100644
--- a/src/bank-lib/fakebank.c
+++ b/src/bank-lib/fakebank.c
@@ -1053,7 +1053,7 @@ handle_credit_history (struct TALER_FAKEBANK_Handle *h,
       credit_payto = TALER_payto_xtalerbank_make (h->my_baseurl,
                                                   pos->credit_account);
       debit_payto = TALER_payto_xtalerbank_make (h->my_baseurl,
-                                                 account);
+                                                 pos->debit_account);
       GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                   "Returning transaction %s->%s (%s)\n",
                   debit_payto,
diff --git a/src/exchange/taler-exchange-aggregator.c 
b/src/exchange/taler-exchange-aggregator.c
index f1abbe2b..37ac5336 100644
--- a/src/exchange/taler-exchange-aggregator.c
+++ b/src/exchange/taler-exchange-aggregator.c
@@ -1244,6 +1244,10 @@ expired_reserve_cb (void *cls,
   erc->async_cont = GNUNET_YES;
   task = GNUNET_SCHEDULER_add_now (&run_transfers,
                                    NULL);
+  GNUNET_free (ctc->method);
+  GNUNET_free (ctc);
+  ctc = NULL;
+
   return GNUNET_DB_STATUS_SUCCESS_ONE_RESULT;
 }
 
@@ -1326,9 +1330,9 @@ run_reserve_closures (void *cls)
                                      NULL);
     return;
   case GNUNET_DB_STATUS_SUCCESS_ONE_RESULT:
+    (void) commit_or_warn (session);
     if (GNUNET_YES == erc.async_cont)
       break;
-    (void) commit_or_warn (session);
     task = GNUNET_SCHEDULER_add_now (&run_reserve_closures,
                                      NULL);
     return;
@@ -1831,7 +1835,7 @@ run_transfers (void *cls)
   if (GNUNET_OK !=
       db_plugin->start (db_plugin->cls,
                         session,
-                        "aggregator run transfer"))
+                       "aggregator run transfer"))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                 "Failed to start database transaction!\n");
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c 
b/src/exchangedb/plugin_exchangedb_postgres.c
index 25692445..28d8e574 100644
--- a/src/exchangedb/plugin_exchangedb_postgres.c
+++ b/src/exchangedb/plugin_exchangedb_postgres.c
@@ -1743,6 +1743,10 @@ postgres_start (void *cls,
     GNUNET_PQ_EXECUTE_STATEMENT_END
   };
 
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Starting transaction named: %s\n",
+              name);
+
   postgres_preflight (cls,
                       session);
 
@@ -1840,13 +1844,13 @@ postgres_preflight (void *cls,
                                  es))
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "BUG: Preflight check committed transaction `%s'!\n",
+                "BUG: Preflight check rolled back transaction `%s'!\n",
                 session->transaction_name);
   }
   else
   {
     GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "BUG: Preflight check failed to commit transaction `%s'!\n",
+                "BUG: Preflight check failed to rollback transaction `%s'!\n",
                 session->transaction_name);
   }
   session->transaction_name = NULL;
diff --git a/src/lib/test-taler-exchange-wirewatch-postgres.conf 
b/src/lib/test-taler-exchange-wirewatch-postgres.conf
index 645a0a1b..36766ce1 100644
--- a/src/lib/test-taler-exchange-wirewatch-postgres.conf
+++ b/src/lib/test-taler-exchange-wirewatch-postgres.conf
@@ -46,7 +46,7 @@ PORT = 8083
 [account-1]
 
 # What is the account URL?
-URL = "payto://x-taler-bank/localhost:8082/3"
+URL = "payto://x-taler-bank/localhost:8082/2"
 
 METHOD = x-taler-bank
 WIRE_RESPONSE = ${TALER_CONFIG_HOME}/account-1.json
diff --git 
a/src/lib/test_taler_exchange_httpd_home/.config/taler/account-1.json 
b/src/lib/test_taler_exchange_httpd_home/.config/taler/account-1.json
index 463ea256..3343f6c6 100644
--- a/src/lib/test_taler_exchange_httpd_home/.config/taler/account-1.json
+++ b/src/lib/test_taler_exchange_httpd_home/.config/taler/account-1.json
@@ -1,4 +1,4 @@
 {
-  "url": "payto://x-taler-bank/localhost:8082/3",
-  "master_sig": 
"P0EC2BBQ8HYCMR29651K7Y36MVQMDP2746EHTAGXYKNVXRZR604BGDSGZ99NPM26BJJFAR16MGW2QJD15BXYPJWNPY2WVACHTW0XE2R"
+  "url": "payto://x-taler-bank/localhost:8082/2",
+  "master_sig": 
"2MNAYBN0Q5VEJKFBGH2SRJQSV3QXA81FPXMFF5Y5YQQW1MRTDGJTZX35XHMCZFZ9SN9Q4TQ6MNM8EX7GPPD2MP8Q528A1D8RK7N9J38"
 }
\ No newline at end of file
diff --git a/src/lib/test_taler_exchange_wirewatch.c 
b/src/lib/test_taler_exchange_wirewatch.c
index 6aea2161..1327977a 100644
--- a/src/lib/test_taler_exchange_wirewatch.c
+++ b/src/lib/test_taler_exchange_wirewatch.c
@@ -41,563 +41,22 @@ static struct TALER_TESTING_BankConfiguration bc;
 /**
  * Helper structure to keep exchange configuration values.
  */
-struct TALER_TESTING_ExchangeConfiguration ec;
-
-// just to compile
-int result;
-
-/**
- * Commands for the interpreter.
- */
-enum OpCode
-{
-
-  /**
-   * Terminate testcase with 'skipped' result.
-   */
-  OPCODE_TERMINATE_SKIP,
-
-  /**
-   * Run taler-exchange-aggregator.
-   */
-  OPCODE_RUN_AGGREGATOR,
-
-  /**
-   * Expect that we have exhaustively gone over all transactions.
-   */
-  OPCODE_RUN_WIREWATCH,
-
-  /**
-   * Send money from bank to exchange.
-   */
-  OPCODE_RUN_TRANSFER,
-
-  /**
-   * Wait a certain amount of time.
-   */
-  OPCODE_WAIT,
-
-  /**
-   * Expect that we have received the specified transfer.
-   */
-  OPCODE_EXPECT_TRANSFER,
-
-  /**
-   * Expect that we have 'expected' all wire transfers.
-   */
-  OPCODE_EXPECT_TRANSFERS_EMPTY,
-
-  /**
-   * Finish testcase with success.
-   */
-  OPCODE_TERMINATE_SUCCESS
-};
-
-
-/**
- * Command state for the interpreter.
- */
-struct Command
-{
-
-  /**
-   * What instruction should we run?
-   */
-  enum OpCode opcode;
-
-  /**
-   * Human-readable label for the command.
-   */
-  const char *label;
-
-  union
-  {
-
-    /**
-     * If @e opcode is #OPCODE_EXPECT_TRANSFER, this
-     * specifies which transaction we expected.  Note that
-     * the WTID will be set, not checked!
-     */
-    struct
-    {
-
-      /**
-       * Amount to be transferred.
-       */
-      const char *amount;
-
-      /**
-       * Account to debit.
-       */
-      uint64_t debit_account;
-
-      /**
-       * Account to credit.
-       */
-      uint64_t credit_account;
-
-      /**
-       * Expected base URL for the exchange.
-       */
-      const char *exchange_base_url;
-
-      /**
-       * Subject of the transfer, set by the command.
-       */
-      struct TALER_WireTransferIdentifierRawP wtid;
-
-    } expect_transfer;
-
-
-    /**
-     * If @e opcode is #OPCODE_RUN_TRANSFER, this
-     * specifies which transaction the bank should do.
-     */
-    struct
-    {
-
-      /**
-       * Amount to be transferred.
-       */
-      const char *amount;
-
-      /**
-       * Account to debit.
-       */
-      uint64_t debit_account;
-
-      /**
-       * Account to credit.
-       */
-      uint64_t credit_account;
-
-      /**
-       * Subject of the transfer, set by the command.
-       */
-      const char *subject;
-
-      /**
-       * Serial ID of the wire transfer as assigned by the bank.
-       */
-      uint64_t serial_id;
-
-    } run_transfer;
-
-    struct
-    {
-
-      /**
-       * The handle for the aggregator process that we are testing.
-       */
-      struct GNUNET_OS_Process *aggregator_proc;
-
-      /**
-       * ID of task called whenever we get a SIGCHILD.
-       */
-      struct GNUNET_SCHEDULER_Task *child_death_task;
-
-    } aggregator;
-
-    struct
-    {
-
-      /**
-       * The handle for the wirewatch process that we are testing.
-       */
-      struct GNUNET_OS_Process *wirewatch_proc;
-
-      /**
-       * ID of task called whenever we get a SIGCHILD.
-       */
-      struct GNUNET_SCHEDULER_Task *child_death_task;
-
-    } wirewatch;
-
-    /**
-     * How long should we wait if the opcode is #OPCODE_WAIT.
-     */
-    struct GNUNET_TIME_Relative wait_delay;
-
-  } details;
-
-};
-
-
-/**
- * State of the interpreter.
- */
-struct State
-{
-  /**
-   * Array of commands to run.
-   */
-  struct Command*commands;
-
-  /**
-   * Offset of the next command to be run.
-   */
-  unsigned int ioff;
-};
-
-
-/**
- * Pipe used to communicate child death via signal.
- */
-static struct GNUNET_DISK_PipeHandle *sigpipe;
-
-/**
- * ID of task called whenever we time out.
- */
-static struct GNUNET_SCHEDULER_Task *timeout_task;
+static struct TALER_TESTING_ExchangeConfiguration ec;
 
 /**
  * Name of the configuration file to use.
  */
 static char *config_filename;
 
-/**
- * Task running the interpreter().
- */
-static struct GNUNET_SCHEDULER_Task *int_task;
-
-/**
- * Handle for our fake bank.
- */
-static struct TALER_FAKEBANK_Handle *fb;
-
-/**
- * Interprets the commands from the test program.
- *
- * @param cls the `struct State` of the interpreter
- */
-static void
-interpreter (void *cls);
-
-
-/**
- * Advance the IP and run the next command.
- *
- * @param state interpreter to advance.
- */
-static void
-next_command (struct State *state)
-{
-  GNUNET_assert (NULL == int_task);
-  state->ioff++;
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Advancing to command %s\n",
-              state->commands[state->ioff].label);
-  int_task = GNUNET_SCHEDULER_add_now (&interpreter,
-                                       state);
-}
-
-
-/**
- * Fail the testcase at the current command.
- */
-static void
-fail (struct Command *cmd)
-{
-  GNUNET_assert (NULL == int_task);
-  fprintf (stderr,
-           "Testcase failed at command `%s'\n",
-           cmd->label);
-  result = 2;
-  GNUNET_SCHEDULER_shutdown ();
-}
-
-
-/**
- * Task triggered whenever we are to shutdown.
- *
- * @param cls closure, NULL if we need to self-restart
- */
-static void
-timeout_action (void *cls)
-{
-  timeout_task = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Test failed: timeout\n");
-  result = 2;
-  GNUNET_SCHEDULER_shutdown ();
-}
-
-
-/**
- * Task triggered whenever we are to shutdown.
- *
- * @param cls our `struct State`
- */
-static void
-shutdown_action (void *cls)
-{
-  struct State *state = cls;
-
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Running shutdown\n");
-  if (NULL != timeout_task)
-  {
-    GNUNET_SCHEDULER_cancel (timeout_task);
-    timeout_task = NULL;
-  }
-  if (NULL != int_task)
-  {
-    GNUNET_SCHEDULER_cancel (int_task);
-    int_task = NULL;
-  }
-  if (NULL != fb)
-  {
-    TALER_FAKEBANK_stop (fb);
-    fb = NULL;
-  }
-  for (unsigned int i = 0; i<=state->ioff; i++)
-  {
-    struct Command *cmd = &state->commands[i];
-
-    switch (cmd->opcode)
-    {
-    case OPCODE_TERMINATE_SKIP:
-      break;
-    case OPCODE_RUN_AGGREGATOR:
-      if (NULL != cmd->details.aggregator.child_death_task)
-      {
-        GNUNET_SCHEDULER_cancel (cmd->details.aggregator.child_death_task);
-        cmd->details.aggregator.child_death_task = NULL;
-      }
-      if (NULL != cmd->details.aggregator.aggregator_proc)
-      {
-        GNUNET_break (0 == GNUNET_OS_process_kill (
-                        cmd->details.aggregator.aggregator_proc,
-                        SIGKILL));
-        GNUNET_OS_process_wait (cmd->details.aggregator.aggregator_proc);
-        GNUNET_OS_process_destroy (cmd->details.aggregator.aggregator_proc);
-        cmd->details.aggregator.aggregator_proc = NULL;
-      }
-      break;
-    case OPCODE_RUN_WIREWATCH:
-      if (NULL != cmd->details.wirewatch.child_death_task)
-      {
-        GNUNET_SCHEDULER_cancel (cmd->details.wirewatch.child_death_task);
-        cmd->details.wirewatch.child_death_task = NULL;
-      }
-      if (NULL != cmd->details.wirewatch.wirewatch_proc)
-      {
-        GNUNET_break (0 == GNUNET_OS_process_kill (
-                        cmd->details.wirewatch.wirewatch_proc,
-                        SIGKILL));
-        GNUNET_OS_process_wait (cmd->details.wirewatch.wirewatch_proc);
-        GNUNET_OS_process_destroy (cmd->details.wirewatch.wirewatch_proc);
-        cmd->details.wirewatch.wirewatch_proc = NULL;
-      }
-      break;
-    case OPCODE_RUN_TRANSFER:
-      break;
-    case OPCODE_WAIT:
-      break;
-    case OPCODE_EXPECT_TRANSFER:
-      break;
-    case OPCODE_EXPECT_TRANSFERS_EMPTY:
-      break;
-    case OPCODE_TERMINATE_SUCCESS:
-      break;
-    }
-  }
-}
-
-
-/**
- * Task triggered whenever we receive a SIGCHLD (child
- * process died).
- *
- * @param cls our `struct State`
- */
-static void
-maint_child_death (void *cls)
-{
-  struct State *state = cls;
-  const struct GNUNET_DISK_FileHandle *pr;
-  struct Command *cmd = &state->commands[state->ioff];
-  char c[16];
-
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Child process died for command %s\n",
-              cmd->label);
-  pr = GNUNET_DISK_pipe_handle (sigpipe,
-                                GNUNET_DISK_PIPE_END_READ);
-  GNUNET_break (0 < GNUNET_DISK_file_read (pr,
-                                           &c,
-                                           sizeof (c)));
-  switch (cmd->opcode)
-  {
-  case OPCODE_RUN_AGGREGATOR:
-    GNUNET_assert (NULL != cmd->details.aggregator.child_death_task);
-    cmd->details.aggregator.child_death_task = NULL;
-    GNUNET_OS_process_wait (cmd->details.aggregator.aggregator_proc);
-    GNUNET_OS_process_destroy (cmd->details.aggregator.aggregator_proc);
-    cmd->details.aggregator.aggregator_proc = NULL;
-    break;
-  case OPCODE_RUN_WIREWATCH:
-    GNUNET_assert (NULL != cmd->details.wirewatch.child_death_task);
-    cmd->details.wirewatch.child_death_task = NULL;
-    GNUNET_OS_process_wait (cmd->details.wirewatch.wirewatch_proc);
-    GNUNET_OS_process_destroy (cmd->details.wirewatch.wirewatch_proc);
-    cmd->details.wirewatch.wirewatch_proc = NULL;
-    break;
-  default:
-    fail (cmd);
-    return;
-  }
-  next_command (state);
-}
-
-
-/**
- * Interprets the commands from the test program.
- *
- * @param cls the `struct State` of the interpreter
- */
-static void
-interpreter (void *cls)
+static struct TALER_TESTING_Command
+transfer_to_exchange (const char *label,
+                     const char *amount)
 {
-  struct State *state = cls;
-  struct Command *cmd = &state->commands[state->ioff];
-
-  GNUNET_assert (NULL != int_task);
-  int_task = NULL;
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Running command %u (%s)\n",
-              state->ioff,
-              cmd->label);
-#if 0
-  switch (cmd->opcode)
-  {
-  case OPCODE_TERMINATE_SKIP:
-    /* return skip: test not finished, but did not fail either */
-    result = 77;
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  case OPCODE_RUN_AGGREGATOR:
-    cmd->details.aggregator.child_death_task =
-      GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
-                                      GNUNET_DISK_pipe_handle (sigpipe,
-                                                               
GNUNET_DISK_PIPE_END_READ),
-                                      &maint_child_death,
-                                      state);
-    cmd->details.aggregator.aggregator_proc
-      = GNUNET_OS_start_process (GNUNET_NO,
-                                 GNUNET_OS_INHERIT_STD_ALL,
-                                 NULL, NULL, NULL,
-                                 "taler-exchange-aggregator",
-                                 "taler-exchange-aggregator",
-                                 "-c", config_filename,
-                                 "-t", /* enable temporary tables */
-                                 NULL);
-    if (NULL == cmd->details.aggregator.aggregator_proc)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Failed to start taler-exchange-aggregator. Check $PATH.\n");
-      GNUNET_break (0);
-      fail (cmd);
-      return;
-    }
-    return;
-  case OPCODE_RUN_WIREWATCH:
-    cmd->details.wirewatch.child_death_task =
-      GNUNET_SCHEDULER_add_read_file (GNUNET_TIME_UNIT_FOREVER_REL,
-                                      GNUNET_DISK_pipe_handle (sigpipe,
-                                                               
GNUNET_DISK_PIPE_END_READ),
-                                      &maint_child_death,
-                                      state);
-    cmd->details.wirewatch.wirewatch_proc
-      = GNUNET_OS_start_process (GNUNET_NO,
-                                 GNUNET_OS_INHERIT_STD_ALL,
-                                 NULL, NULL, NULL,
-                                 "taler-exchange-wirewatch",
-                                 "taler-exchange-wirewatch",
-                                 "-c", config_filename,
-                                 "-T", /* run in test mode, exit instead of 
looping */
-                                 NULL);
-    if (NULL == cmd->details.wirewatch.wirewatch_proc)
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Failed to start taler-exchange-wirewatch. Check $PATH.\n");
-      GNUNET_break (0);
-      fail (cmd);
-      return;
-    }
-    return;
-  case OPCODE_RUN_TRANSFER:
-    {
-      struct TALER_Amount amount;
-
-      if (GNUNET_OK !=
-          TALER_string_to_amount (cmd->details.run_transfer.amount,
-                                  &amount))
-      {
-        GNUNET_break (0);
-        fail (cmd);
-        return;
-      }
-      GNUNET_assert (NULL != cmd->details.run_transfer.subject);
-      cmd->details.run_transfer.serial_id
-        = TALER_FAKEBANK_make_transfer (fb,
-                                        
cmd->details.run_transfer.debit_account,
-                                        
cmd->details.run_transfer.credit_account,
-                                        &amount,
-                                        cmd->details.run_transfer.subject,
-                                        "https://exchange.taler.net/";);
-      next_command (state);
-      return;
-    }
-  case OPCODE_WAIT:
-    state->ioff++;
-    GNUNET_assert (NULL == int_task);
-    int_task = GNUNET_SCHEDULER_add_delayed (cmd->details.wait_delay,
-                                             &interpreter,
-                                             state);
-    return;
-  case OPCODE_EXPECT_TRANSFER:
-    {
-      struct TALER_Amount want_amount;
-
-      if (GNUNET_OK !=
-          TALER_string_to_amount (cmd->details.expect_transfer.amount,
-                                  &want_amount))
-      {
-        GNUNET_break (0);
-        fail (cmd);
-        return;
-      }
-      if (GNUNET_OK !=
-          TALER_FAKEBANK_check_debit (fb,
-                                      &want_amount,
-                                      
cmd->details.expect_transfer.debit_account,
-                                      cmd->details.expect_transfer.
-                                      credit_account,
-                                      cmd->details.expect_transfer.
-                                      exchange_base_url,
-                                      &cmd->details.expect_transfer.wtid))
-      {
-        fail (cmd);
-        return;
-      }
-      next_command (state);
-      return;
-    }
-  case OPCODE_EXPECT_TRANSFERS_EMPTY:
-    if (GNUNET_OK != TALER_FAKEBANK_check_empty (fb))
-    {
-      fail (cmd);
-      return;
-    }
-    next_command (state);
-    return;
-  case OPCODE_TERMINATE_SUCCESS:
-    result = 0;
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  }
-#endif
+  return TALER_TESTING_cmd_admin_add_incoming (label,
+                                               amount,
+                                               bc.exchange_account_url,
+                                               &bc.exchange_auth,
+                                               bc.user42_payto);
 }
 
 /**
@@ -611,194 +70,46 @@ run (void *cls,
      struct TALER_TESTING_Interpreter *is)
 {
   struct TALER_TESTING_Command all[] = {
-    // TALER_TESTING_cmd_exec_aggregator ("expect-empty-transactions-on-start",
-    //                                    config_filename),
+    TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-on-start"),
+    TALER_TESTING_cmd_exec_aggregator ("run-aggregator-on-empty",
+                                      config_filename),
+    TALER_TESTING_cmd_exec_wirewatch ("run-wirewatch-on-empty",
+                                     config_filename),
+    TALER_TESTING_cmd_check_bank_empty 
("expect-transfers-empty-after-dry-run"),
+
+    transfer_to_exchange ("run-transfer-good-to-exchange",
+                         "EUR:5"),
+    TALER_TESTING_cmd_exec_wirewatch ("run-wirewatch-on-good-transfer",
+                                     config_filename),
+
+    TALER_TESTING_cmd_check_bank_admin_transfer 
("clear-good-transfer-to-the-exchange",
+                                                 "EUR:5",
+                                                 bc.user42_payto, // debit
+                                                 bc.exchange_payto, // credit
+                                                 
"run-transfer-good-to-exchange"),
+
+    TALER_TESTING_cmd_exec_aggregator ("run-aggregator-non-expired-reserve",
+                                      config_filename),
+
+    TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-1"),
+    TALER_TESTING_cmd_sleep ("wait (5s)",
+                            5),
+    TALER_TESTING_cmd_exec_aggregator ("run-aggregator-on-expired-reserve",
+                                      config_filename),
+    TALER_TESTING_cmd_check_bank_transfer ("check-reserve-expiration-transfer",
+                                          ec.exchange_url,
+                                          "EUR:4.99",
+                                          bc.exchange_payto,
+                                          bc.user42_payto),
+    TALER_TESTING_cmd_check_bank_empty ("expect-empty-transactions-2"),
     TALER_TESTING_cmd_end ()  
   };
 
   TALER_TESTING_run_with_fakebank (is,
                                    all,
                                    bc.bank_url);
-
-}
-
-
-/**
- * Main function that will be run by the scheduler.
- *
- * @param cls closure with configuration
- */
-static void
-OLDrun (void *cls)
-{
-  static struct Command commands[] = {
-  #if 0
-
-    /* test running with empty DB */
-    {
-      .opcode = OPCODE_EXPECT_TRANSFERS_EMPTY,
-      .label = "expect-empty-transactions-on-start"
-    },
-    {
-      .opcode = OPCODE_RUN_AGGREGATOR,
-      .label = "run-aggregator-on-empty"
-    },
-    {
-      .opcode = OPCODE_RUN_WIREWATCH,
-      .label = "run-wirewatch-on-empty"
-    },
-    {
-      .opcode = OPCODE_EXPECT_TRANSFERS_EMPTY,
-      .label = "expect-empty-transactions-after-dry-run"
-    },
-    /* fill exchange's reserve at bank */
-    {
-      .opcode = OPCODE_RUN_TRANSFER,
-      .label = "run-transfer-good-to-exchange",
-      .details.run_transfer.debit_account = 4,
-      .details.run_transfer.credit_account = 3,
-      .details.run_transfer.subject =
-        "SRB8VQHNTNJWSSG7BXT24Z063ZSXN7T0MHCQCBAFC1V17BZH10D0",
-      .details.run_transfer.amount = "EUR:5.00"
-    },
-    /* creates reserve */
-    {
-      .opcode = OPCODE_RUN_WIREWATCH,
-      .label = "run-wirewatch-on-good-transfer"
-    },
-    /* clear first transfer from DLL */
-    {
-      .opcode = OPCODE_EXPECT_TRANSFER,
-      .label = "clear-good-transfer-to-exchange",
-      .details.expect_transfer.debit_account = 4,
-      .details.expect_transfer.credit_account = 3,
-      .details.expect_transfer.exchange_base_url =
-        "https://exchange.taler.net/";,
-      .details.expect_transfer.amount = "EUR:5.00"
-    },
-    /* should do NOTHING, it is too early... */
-    {
-      .opcode = OPCODE_RUN_AGGREGATOR,
-      .label = "run-aggregator-non-expired-reserve"
-    },
-    /* check nothing happened */
-    {
-      .opcode = OPCODE_EXPECT_TRANSFERS_EMPTY,
-      .label = "expect-empty-transactions-1"
-    },
-    /* Configuration says reserves expire after 5s! */
-    {
-      .opcode = OPCODE_WAIT,
-      .label = "wait (5s)",
-      .details.wait_delay = { 1000LL * 1000 * 6 } /* 6s */
-    },
-    /* This time the reserve expired, so the money should go back... */
-    {
-      .opcode = OPCODE_RUN_AGGREGATOR,
-      .label = "run-aggregator-non-expired-reserve"
-    },
-    /* Check exchange sent money back, minus closing fee of EUR:0.01  */
-    {
-      .opcode = OPCODE_EXPECT_TRANSFER,
-      .label = "check-reserve-expiration-transfer",
-      .details.expect_transfer.debit_account = 3,
-      .details.expect_transfer.credit_account = 4,
-      .details.expect_transfer.exchange_base_url =
-        "https://exchange.taler.net/";,
-      .details.expect_transfer.amount = "EUR:4.99"
-    },
-    /* check nothing else happened */
-    {
-      .opcode = OPCODE_EXPECT_TRANSFERS_EMPTY,
-      .label = "expect-empty-transactions-1"
-    },
-    /* This cannot work unless #5077 is implemented. */
-#if TEST_5077
-    {
-      .opcode = OPCODE_RUN_TRANSFER,
-      .label = "run-transfer-bad-to-exchange",
-      .details.run_transfer.debit_account = 4,
-      .details.run_transfer.credit_account = 3,
-      .details.run_transfer.subject = "random junk",
-      .details.run_transfer.amount = "EUR:5.00"
-    },
-    {
-      .opcode = OPCODE_RUN_WIREWATCH,
-      .label = "run-wirewatch-on-bad-transfer"
-    },
-    {
-      .opcode = OPCODE_EXPECT_TRANSFER,
-      .label = "expect-bad-transfer-to-exchange",
-      .details.expect_transfer.debit_account = 4,
-      .details.expect_transfer.credit_account = 3,
-      .details.expect_transfer.exchange_base_url =
-        "https://exchange.taler.net/";,
-      .details.expect_transfer.amount = "EUR:5.00"
-    },
-    {
-      .opcode = OPCODE_EXPECT_TRANSFER,
-      .label = "expect-rewire-transfer-from-exchange",
-      .details.expect_transfer.debit_account = 3,
-      .details.expect_transfer.credit_account = 4,
-      .details.expect_transfer.exchange_base_url =
-        "https://exchange.taler.net/";,
-      .details.expect_transfer.amount = "EUR:5.00"
-    },
-    {
-      .opcode = OPCODE_EXPECT_TRANSFERS_EMPTY,
-      .label = "expect-empty-transactions-1"
-    },
-#endif
-
-    {
-      .opcode = OPCODE_TERMINATE_SUCCESS,
-      .label = "testcase-complete-terminating-with-success"
-    }
-  #endif
-  };
-
-  static struct State state = {
-    .commands = commands
-  };
-
-  GNUNET_SCHEDULER_add_shutdown (&shutdown_action,
-                                 &state);
-  timeout_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_MINUTES,
-                                               &timeout_action,
-                                               &state);
-  result = 1; /* test failed for undefined reason */
-  fb = TALER_FAKEBANK_start (8082);
-  if (NULL == fb)
-  {
-    GNUNET_SCHEDULER_shutdown ();
-    result = 77;
-    return;
-  }
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Launching interpreter\n");
-  int_task = GNUNET_SCHEDULER_add_now (&interpreter,
-                                       &state);
-}
-
-
-/**
- * Signal handler called for SIGCHLD.  Triggers the
- * respective handler by writing to the trigger pipe.
- */
-static void
-sighandler_child_death ()
-{
-  static char c;
-  int old_errno = errno;  /* back-up errno */
-
-  GNUNET_break (1 ==
-                GNUNET_DISK_file_write (GNUNET_DISK_pipe_handle
-                                          (sigpipe, 
GNUNET_DISK_PIPE_END_WRITE),
-                                        &c, sizeof (c)));
-  errno = old_errno;    /* restore errno */
 }
 
-
 int
 main (int argc,
       char *const argv[])
@@ -813,7 +124,7 @@ main (int argc,
   unsetenv ("XDG_DATA_HOME");
   unsetenv ("XDG_CONFIG_HOME");
   GNUNET_log_setup ("test_taler_exchange_wirewatch",
-                    "WARNING",
+                    "DEBUG",
                     NULL);
 
   if (NULL == (plugin_name = strrchr (argv[0], (int) '-')))
@@ -858,9 +169,10 @@ main (int argc,
                                       &bc))
     return 77;
 
-  return TALER_TESTING_setup_with_exchange (&run,
-                                            NULL,
-                                            config_filename);
+  return
+    (GNUNET_OK == TALER_TESTING_setup_with_exchange (&run,
+                                                     NULL,
+                                                     config_filename)) ? 0 : 1;
 }
 
 /* end of test_taler_exchange_wirewatch.c */

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



reply via email to

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