diff options
| author | Marcello Stanisci <stanisci.m@gmail.com> | 2020-01-16 00:11:51 +0100 | 
|---|---|---|
| committer | Marcello Stanisci <stanisci.m@gmail.com> | 2020-01-16 00:12:25 +0100 | 
| commit | 90e15720391b2943096352c023f64544a8d009a8 (patch) | |
| tree | c6c6934c1a63c8c636776fcd86c8174ecc6f480f | |
| parent | 2c4bdcc4c0886ff2dbeb1fe5d9fe29ddae1244a8 (diff) | |
Adapting wirewatch tests to new style.
| -rw-r--r-- | src/auditordb/plugin_auditordb_postgres.c | 4 | ||||
| -rw-r--r-- | src/bank-lib/fakebank.c | 2 | ||||
| -rw-r--r-- | src/exchange/taler-exchange-aggregator.c | 8 | ||||
| -rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 8 | ||||
| -rw-r--r-- | src/lib/test-taler-exchange-wirewatch-postgres.conf | 2 | ||||
| -rw-r--r-- | src/lib/test_taler_exchange_httpd_home/.config/taler/account-1.json | 4 | ||||
| -rw-r--r-- | 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 */ | 
