gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] 02/03: remove obsolete old tests (#5758)


From: gnunet
Subject: [taler-exchange] 02/03: remove obsolete old tests (#5758)
Date: Sat, 14 Dec 2019 23:19:59 +0100

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

grothoff pushed a commit to branch master
in repository exchange.

commit cf31e54a2f1f252be8a248a8e3236e7f9a3a3f51
Author: Christian Grothoff <address@hidden>
AuthorDate: Sat Dec 14 23:17:56 2019 +0100

    remove obsolete old tests (#5758)
---
 src/bank-lib/Makefile.am                   |   24 -
 src/bank-lib/test_bank_api.c               |  230 ------
 src/bank-lib/test_bank_api_new.c           |    1 -
 src/bank-lib/test_bank_api_with_fakebank.c |  175 -----
 src/bank-lib/test_bank_interpreter.c       | 1051 ----------------------------
 src/bank-lib/test_bank_interpreter.h       |  236 -------
 6 files changed, 1717 deletions(-)

diff --git a/src/bank-lib/Makefile.am b/src/bank-lib/Makefile.am
index 1166964a..de022efc 100644
--- a/src/bank-lib/Makefile.am
+++ b/src/bank-lib/Makefile.am
@@ -89,8 +89,6 @@ endif
 endif
 
 check_PROGRAMS = \
-  test_bank_api \
-  test_bank_api_with_fakebank \
   test_bank_api_with_fakebank_new \
   test_bank_api_with_pybank_new
 
@@ -135,28 +133,6 @@ endif
 TESTS = \
   $(check_PROGRAMS)
 
-test_bank_api_SOURCES = \
-  test_bank_interpreter.c test_bank_interpreter.h \
-  test_bank_api.c
-test_bank_api_LDADD = \
-  libtalerbank.la \
-  libtalerfakebank.la \
-  $(top_builddir)/src/util/libtalerutil.la \
-  -lgnunetcurl \
-  -lgnunetutil \
-  -ljansson
-
-test_bank_api_with_fakebank_SOURCES = \
-  test_bank_interpreter.c test_bank_interpreter.h \
-  test_bank_api_with_fakebank.c
-test_bank_api_with_fakebank_LDADD = \
-  libtalerbank.la \
-  libtalerfakebank.la \
-  $(top_builddir)/src/util/libtalerutil.la \
-  -lgnunetcurl \
-  -lgnunetutil \
-  -ljansson
-
 test_bank_api_with_pybank_new_SOURCES = \
   test_bank_api_new.c
 
diff --git a/src/bank-lib/test_bank_api.c b/src/bank-lib/test_bank_api.c
deleted file mode 100644
index 0a34e4b4..00000000
--- a/src/bank-lib/test_bank_api.c
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
-   This file is part of TALER
-   Copyright (C) 2016, 2017, 2019 GNUnet e.V.
-
-   TALER 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.
-
-   TALER 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 TALER; see the file COPYING.  If not, see
-   <http://www.gnu.org/licenses/>
- */
-/**
- * @file bank/test_bank_api.c
- * @brief testcase to test bank's HTTP API interface
- * against the "real" bank
- * @author Christian Grothoff
- */
-#include "platform.h"
-#include "taler_util.h"
-#include "taler_signatures.h"
-#include "taler_bank_service.h"
-#include <gnunet/gnunet_util_lib.h>
-#include <gnunet/gnunet_curl_lib.h>
-#include <microhttpd.h>
-#include "test_bank_interpreter.h"
-
-
-/**
- * Main function that will be run by the scheduler.
- *
- * @param cls closure
- */
-static void
-run (void *cls)
-{
-  int *resultp = cls;
-  static struct TBI_Command commands[] = {
-    /* Ask complete history of 'Exchange' user (number 2) */
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-0",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_BOTH,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    /* Move money from Bank to Exchange */
-    { .oc = TBI_OC_ADMIN_ADD_INCOMING,
-      .label = "deposit-1",
-      .details.admin_add_incoming.exchange_base_url = "https://exchange.net/";, 
/* bogus */
-      .details.admin_add_incoming.subject = "subject 1",
-      .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.credit_account_no = 2,
-      .details.admin_add_incoming.debit_account_no = 1,
-      .details.admin_add_incoming.amount = "KUDOS:5.01" },
-    /* Move money from Bank to Exchange */
-    { .oc = TBI_OC_ADMIN_ADD_INCOMING,
-      .label = "deposit-2",
-      .details.admin_add_incoming.exchange_base_url = "https://exchange.net/";, 
/* bogus */
-      .details.admin_add_incoming.subject = "subject 2",
-      .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.credit_account_no = 2,
-      .details.admin_add_incoming.debit_account_no = 1,
-      .details.admin_add_incoming.amount = "KUDOS:5.01" },
-    /* Ask Exchange's incoming history */
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-1c",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_CREDIT,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    /* Ask Exchange's outgoing history, 5 records into the future */
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-2d",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_DEBIT,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    /* Ask Exchange's outgoing history, last 5 records */
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-2dr",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_DEBIT,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-2fwd",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_DEBIT,
-      .details.history.start_row_ref = "deposit-1",
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_REJECT,
-      .label = "reject-1",
-      .details.reject.cmd_ref = "deposit-1" },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-r1",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_CREDIT,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-r2",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_DEBIT,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-r3",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_BOTH
-                                   | TALER_BANK_DIRECTION_CANCEL,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_END }
-  };
-
-  TBI_run_interpreter (resultp,
-                       GNUNET_NO /* we use the "real" taler bank */,
-                       commands);
-}
-
-
-/**
- * Main function for the testcase for the bank API.
- *
- * @param argc expected to be 1
- * @param argv expected to only contain the program name
- */
-int
-main (int argc,
-      char *const *argv)
-{
-  struct GNUNET_OS_Process *bankd;
-  unsigned int cnt;
-  int result;
-  char *defaultdb = "postgres:///talercheck";
-  char *dbconn;
-
-  if (GNUNET_OK !=
-      GNUNET_NETWORK_test_port_free (IPPROTO_TCP,
-                                     8081))
-  {
-    fprintf (stderr,
-             "Required port %u not available, skipping.\n",
-             8081);
-    return 77;
-  }
-  GNUNET_log_setup ("test-bank-api",
-                    "WARNING",
-                    NULL);
-
-  if (NULL == (dbconn = getenv ("TALER_EXCHANGEDB_POSTGRES_CONFIG")))
-    dbconn = defaultdb;
-  {
-    char *purgedb_cmd;
-
-    GNUNET_asprintf (&purgedb_cmd,
-                     "taler-bank-manage -c bank.conf --with-db=%s django flush 
--no-input",
-                     dbconn);
-    if (0 != system (purgedb_cmd))
-    {
-      fprintf (stderr,
-               "Could not purge database\n");
-      GNUNET_free (purgedb_cmd);
-      return 77;
-    }
-    GNUNET_free (purgedb_cmd);
-  }
-
-  bankd = GNUNET_OS_start_process (GNUNET_NO,
-                                   GNUNET_OS_INHERIT_STD_ALL,
-                                   NULL, NULL, NULL,
-                                   "taler-bank-manage",
-                                   "taler-bank-manage",
-                                   "--with-db", dbconn,
-                                   "-c", "bank.conf",
-                                   "serve-http",
-                                   "--port", "8080",
-                                   NULL);
-
-  if (NULL == bankd)
-  {
-    fprintf (stderr,
-             "Failed to launch taler-bank-manage, skipping test\n");
-    return 77;   /* report 'skip' */
-  }
-  /* give child time to start and bind against the socket */
-  fprintf (stderr,
-           "Waiting for taler-bank-manage to be ready\n");
-  cnt = 0;
-  do
-  {
-    fprintf (stderr, ".");
-    sleep (1);
-    cnt++;
-    if (cnt > 30)
-      break;
-  }
-  while (0 != system (
-           "wget -q -t 1 -T 1 http://127.0.0.1:8080/ -o /dev/null -O 
/dev/null"));
-
-
-  fprintf (stderr, "\n");
-  result = GNUNET_SYSERR;
-  if (cnt <= 30)
-  {
-    fprintf (stderr,
-             "Ready, running test...\n");
-    GNUNET_SCHEDULER_run (&run, &result);
-  }
-  GNUNET_OS_process_kill (bankd,
-                          SIGTERM);
-  GNUNET_OS_process_wait (bankd);
-  GNUNET_OS_process_destroy (bankd);
-  if (cnt > 30)
-  {
-    fprintf (stderr,
-             "taler-bank-manage failed to start properly.\n");
-    return 77;
-  }
-  return (GNUNET_OK == result) ? 0 : 1;
-}
-
-
-/* end of test_bank_api.c */
diff --git a/src/bank-lib/test_bank_api_new.c b/src/bank-lib/test_bank_api_new.c
index 195b8364..ebcc65ee 100644
--- a/src/bank-lib/test_bank_api_new.c
+++ b/src/bank-lib/test_bank_api_new.c
@@ -33,7 +33,6 @@
 #include <gnunet/gnunet_util_lib.h>
 #include <gnunet/gnunet_curl_lib.h>
 #include <microhttpd.h>
-#include "test_bank_interpreter.h"
 #include "taler_testing_lib.h"
 #include "taler_testing_bank_lib.h"
 
diff --git a/src/bank-lib/test_bank_api_with_fakebank.c 
b/src/bank-lib/test_bank_api_with_fakebank.c
deleted file mode 100644
index c69a0e24..00000000
--- a/src/bank-lib/test_bank_api_with_fakebank.c
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
-  This file is part of TALER
-  Copyright (C) 2016, 2017 GNUnet e.V.
-
-  TALER 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.
-
-  TALER 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
-  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
-*/
-/**
- * @file bank/test_bank_api_with_fakebank.c
- * @brief testcase to test bank's HTTP API interface against the fakebank
- * @author Christian Grothoff
- */
-#include "platform.h"
-#include "taler_util.h"
-#include "taler_signatures.h"
-#include "taler_bank_service.h"
-#include <gnunet/gnunet_util_lib.h>
-#include <gnunet/gnunet_curl_lib.h>
-#include <microhttpd.h>
-#include "test_bank_interpreter.h"
-
-
-/**
- * Main function that will be run by the scheduler.
- *
- * @param cls closure
- */
-static void
-run (void *cls)
-{
-  int *resultp = cls;
-  static struct TBI_Command commands[] = {
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-0",
-      .details.history.account_number = 1,
-      .details.history.direction = TALER_BANK_DIRECTION_BOTH,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 1 },
-    /* Add EUR:5.01 to account 1 */
-    { .oc = TBI_OC_ADMIN_ADD_INCOMING,
-      .label = "debit-1",
-      .details.admin_add_incoming.subject = "subject 1",
-      .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.credit_account_no = 1,
-      .details.admin_add_incoming.debit_account_no = 2,
-      .details.admin_add_incoming.exchange_base_url = "https://exchange.net/";,
-      .details.admin_add_incoming.amount = "KUDOS:5.01" },
-    /* Add EUR:3.21 to account 3 */
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-1c",
-      .details.history.account_number = 1,
-      .details.history.direction = TALER_BANK_DIRECTION_CREDIT,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-1d",
-      .details.history.account_number = 1,
-      .details.history.direction = TALER_BANK_DIRECTION_DEBIT,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_ADMIN_ADD_INCOMING,
-      .label = "debit-2",
-      .details.admin_add_incoming.subject = "subject 2",
-      .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.credit_account_no = 3,
-      .details.admin_add_incoming.debit_account_no = 2,
-      .details.admin_add_incoming.exchange_base_url = "https://exchange.org/";,
-      .details.admin_add_incoming.amount = "KUDOS:3.21" },
-    { .oc = TBI_OC_ADMIN_ADD_INCOMING,
-      .label = "credit-2",
-      .details.admin_add_incoming.subject = "credit 2",
-      .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.credit_account_no = 2,
-      .details.admin_add_incoming.debit_account_no = 3,
-      .details.admin_add_incoming.exchange_base_url = "https://exchange.org/";,
-      .details.admin_add_incoming.amount = "KUDOS:3.22" },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-2b",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_BOTH,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-2bi",
-      .details.history.account_number = 2,
-      .details.history.direction = TALER_BANK_DIRECTION_BOTH,
-      .details.history.start_row_ref = "debit-1",
-      .details.history.num_results = 5,
-      .details.history.ascending = GNUNET_YES},
-    /* check transfers arrived at fakebank */
-    { .oc = TBI_OC_EXPECT_TRANSFER,
-      .label = "expect-2d",
-      .details.expect_transfer.cmd_ref = "credit-2" },
-    { .oc = TBI_OC_EXPECT_TRANSFER,
-      .label = "expect-2c",
-      .details.expect_transfer.cmd_ref = "debit-2" },
-    { .oc = TBI_OC_EXPECT_TRANSFER,
-      .label = "expect-1",
-      .details.expect_transfer.cmd_ref = "debit-1" },
-    /* check transfer list is now empty */
-    { .oc = TBI_OC_EXPECT_TRANSFERS_EMPTY,
-      .label = "expect-empty" },
-    /* Add EUR:5.01 to account 1 */
-    { .oc = TBI_OC_ADMIN_ADD_INCOMING,
-      .label = "credit-for-reject-1",
-      .details.admin_add_incoming.subject = "subject 3",
-      .details.admin_add_incoming.expected_response_code = MHD_HTTP_OK,
-      .details.admin_add_incoming.credit_account_no = 2,
-      .details.admin_add_incoming.debit_account_no = 1,
-      .details.admin_add_incoming.exchange_base_url = "https://exchange.net/";,
-      .details.admin_add_incoming.amount = "KUDOS:5.01" },
-    { .oc = TBI_OC_REJECT,
-      .label = "reject-1",
-      .details.reject.cmd_ref = "credit-for-reject-1" },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-r1",
-      .details.history.account_number = 1,
-      .details.history.direction = TALER_BANK_DIRECTION_BOTH,
-      /* range is exclusive, and everything up to and including "credit-2"
-         was already killed via TBI_OC_EXPECT_TRANSFER and thus won't show
-         in the history. So to see the rejected transfer, we need to start
-         looking after "credit-2" */
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_HISTORY,
-      .label = "history-r1c",
-      .details.history.account_number = 1,
-      .details.history.direction = TALER_BANK_DIRECTION_BOTH
-                                   | TALER_BANK_DIRECTION_CANCEL,
-      .details.history.start_row_ref = NULL,
-      .details.history.num_results = 5 },
-    { .oc = TBI_OC_EXPECT_TRANSFER,
-      .label = "expect-credit-reject-1",
-      .details.expect_transfer.cmd_ref = "credit-for-reject-1" },
-    /* check transfer list is now empty */
-    { .oc = TBI_OC_EXPECT_TRANSFERS_EMPTY,
-      .label = "expect-empty-2" },
-    { .oc = TBI_OC_END }
-  };
-
-  TBI_run_interpreter (resultp,
-                       GNUNET_YES,
-                       commands);
-}
-
-
-/**
- * Main function for the testcase for the bank API.
- *
- * @param argc expected to be 1
- * @param argv expected to only contain the program name
- */
-int
-main (int argc,
-      char *const *argv)
-{
-  int result;
-
-  GNUNET_log_setup ("test-bank-api-with-fakebank",
-                    "WARNING",
-                    NULL);
-  GNUNET_SCHEDULER_run (&run, &result);
-  return (GNUNET_OK == result) ? 0 : 1;
-}
-
-
-/* end of test_bank_api_with_fakebank.c */
diff --git a/src/bank-lib/test_bank_interpreter.c 
b/src/bank-lib/test_bank_interpreter.c
deleted file mode 100644
index 2512dff5..00000000
--- a/src/bank-lib/test_bank_interpreter.c
+++ /dev/null
@@ -1,1051 +0,0 @@
-/*
-  This file is part of TALER
-  Copyright (C) 2016, 2017 GNUnet e.V.
-
-  TALER 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.
-
-  TALER 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
-  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
-*/
-/**
- * @file bank/test_bank_interpreter.c
- * @brief interpreter for tests of the bank's HTTP API interface
- * @author Christian Grothoff
- */
-#include "platform.h"
-#include "taler_util.h"
-#include "taler_signatures.h"
-#include "taler_bank_service.h"
-#include <gnunet/gnunet_util_lib.h>
-#include <gnunet/gnunet_curl_lib.h>
-#include <microhttpd.h>
-#include "test_bank_interpreter.h"
-#include "taler_fakebank_lib.h"
-
-
-/**
- * State of the interpreter loop.
- */
-struct InterpreterState
-{
-  /**
-   * Keys from the bank.
-   */
-  const struct TALER_BANK_Keys *keys;
-
-  /**
-   * Commands the interpreter will run.
-   */
-  struct TBI_Command *commands;
-
-  /**
-   * Interpreter task (if one is scheduled).
-   */
-  struct GNUNET_SCHEDULER_Task *task;
-
-  /**
-   * Main execution context for the main loop.
-   */
-  struct GNUNET_CURL_Context *ctx;
-
-  /**
-   * Task run on timeout.
-   */
-  struct GNUNET_SCHEDULER_Task *timeout_task;
-
-  /**
-   * Context for running the main loop with GNUnet's SCHEDULER API.
-   */
-  struct GNUNET_CURL_RescheduleContext *rc;
-
-  /**
-   * Where to store the final result.
-   */
-  int *resultp;
-
-  /**
-   * Fakebank, or NULL if we are not using the fakebank.
-   */
-  struct TALER_FAKEBANK_Handle *fakebank;
-
-  /**
-   * Instruction pointer.  Tells #interpreter_run() which
-   * instruction to run next.
-   */
-  unsigned int ip;
-
-};
-
-
-/**
- * The testcase failed, return with an error code.
- *
- * @param is interpreter state to clean up
- */
-static void
-fail (struct InterpreterState *is)
-{
-  *is->resultp = GNUNET_SYSERR;
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Interpreter failed at command `%s'\n",
-              is->commands[is->ip].label);
-  GNUNET_SCHEDULER_shutdown ();
-}
-
-
-/**
- * Find a command by label.
- *
- * @param is interpreter state to search
- * @param label label to look for
- * @return NULL if command was not found
- */
-static const struct TBI_Command *
-find_command (const struct InterpreterState *is,
-              const char *label)
-{
-  const struct TBI_Command *cmd;
-
-  if (NULL == label)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                "Attempt to lookup command for empty label\n");
-    return NULL;
-  }
-  for (unsigned int i = 0; TBI_OC_END != (cmd = &is->commands[i])->oc; i++)
-    if ( (NULL != cmd->label) &&
-         (0 == strcmp (cmd->label,
-                       label)) )
-      return cmd;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              "Command not found: %s\n",
-              label);
-  return NULL;
-}
-
-
-/**
- * Test if the /admin/add/incoming transaction at offset @a off
- * has been /rejected.
- *
- * @param is interpreter state (where we are right now)
- * @param off offset of the command to test for rejection
- * @return #GNUNET_YES if the command at @a off was cancelled
- */
-static int
-test_cancelled (struct InterpreterState *is,
-                unsigned int off)
-{
-  const struct TBI_Command *cmd = &is->commands[off];
-
-  for (unsigned int i = 0; i<is->ip; i++)
-  {
-    const struct TBI_Command *c = &is->commands[i];
-
-    if (TBI_OC_REJECT != c->oc)
-      continue;
-    if (0 == strcmp (c->details.reject.cmd_ref,
-                     cmd->label))
-      return GNUNET_YES;
-  }
-  return GNUNET_NO;
-}
-
-
-/**
- * Item in the transaction history, as reconstructed from the
- * command history.
- */
-struct History
-{
-
-  /**
-   * Wire details.
-   */
-  struct TALER_BANK_TransferDetails details;
-
-  /**
-   * Serial ID of the wire transfer.
-   */
-  uint64_t row_id;
-
-  /**
-   * Direction of the transfer.
-   */
-  enum TALER_BANK_Direction direction;
-
-};
-
-
-/**
- * Build history of transactions matching the current
- * command in @a is.
- *
- * @param is interpreter state
- * @param[out] rh history array to initialize
- * @return number of entries in @a rh
- */
-static uint64_t
-build_history (struct InterpreterState *is,
-               struct History **rh)
-{
-  const struct TBI_Command *cmd = &is->commands[is->ip];
-  uint64_t total;
-  struct History *h;
-  const struct TBI_Command *ref;
-  int inc;
-  unsigned int start;
-  unsigned int end;
-  int ok;
-
-  GNUNET_assert (TBI_OC_HISTORY == cmd->oc);
-  if (NULL != cmd->details.history.start_row_ref)
-  {
-    ref = find_command (is,
-                        cmd->details.history.start_row_ref);
-    GNUNET_assert (NULL != ref);
-  }
-  else
-  {
-    ref = NULL;
-  }
-  GNUNET_assert (0 != cmd->details.history.num_results);
-  if (0 == is->ip)
-  {
-    *rh = NULL;
-    return 0;
-  }
-  if (cmd->details.history.num_results > 0)
-  {
-    inc = 1;
-    start = 0;
-    end = is->ip - 1;
-  }
-  else
-  {
-    inc = -1;
-    start = is->ip - 1;
-    end = 0;
-  }
-
-  total = 0;
-  ok = GNUNET_NO;
-  if (NULL == ref)
-    ok = GNUNET_YES;
-  for (unsigned int off = start; off != end + inc; off += inc)
-  {
-    const struct TBI_Command *pos = &is->commands[off];
-    int cancelled;
-
-    if (TBI_OC_ADMIN_ADD_INCOMING != pos->oc)
-      continue;
-    if ( (NULL != ref) &&
-         (ref->details.admin_add_incoming.row_id ==
-          pos->details.admin_add_incoming.row_id) )
-    {
-      total = 0;
-      ok = GNUNET_YES;
-      continue;
-    }
-    if (GNUNET_NO == ok)
-      continue; /* skip until we find the marker */
-    if (total >= cmd->details.history.num_results * inc)
-      break; /* hit limit specified by command */
-    cancelled = test_cancelled (is,
-                                off);
-    if ( (GNUNET_YES == cancelled) &&
-         (0 == (cmd->details.history.direction & TALER_BANK_DIRECTION_CANCEL)) 
)
-      continue;
-    if ( ( (0 != (cmd->details.history.direction
-                  & TALER_BANK_DIRECTION_CREDIT)) &&
-           (cmd->details.history.account_number ==
-            pos->details.admin_add_incoming.credit_account_no)) ||
-         ( (0 != (cmd->details.history.direction
-                  & TALER_BANK_DIRECTION_DEBIT)) &&
-           (cmd->details.history.account_number ==
-            pos->details.admin_add_incoming.debit_account_no)) )
-      total++; /* found matching record */
-  }
-  GNUNET_assert (GNUNET_YES == ok);
-  if (0 == total)
-  {
-    *rh = NULL;
-    return 0;
-  }
-  GNUNET_assert (total < UINT_MAX);
-  h = GNUNET_new_array ((unsigned int) total,
-                        struct History);
-  total = 0;
-  ok = GNUNET_NO;
-  if (NULL == ref)
-    ok = GNUNET_YES;
-  for (unsigned int off = start; off != end + inc; off += inc)
-  {
-    const struct TBI_Command *pos = &is->commands[off];
-    int cancelled;
-
-    if (TBI_OC_ADMIN_ADD_INCOMING != pos->oc)
-      continue;
-    if ( (NULL != ref) &&
-         (ref->details.admin_add_incoming.row_id ==
-          pos->details.admin_add_incoming.row_id) )
-    {
-      total = 0;
-      ok = GNUNET_YES;
-      continue;
-    }
-    if (GNUNET_NO == ok)
-      continue; /* skip until we find the marker */
-    if (total >= cmd->details.history.num_results * inc)
-      break; /* hit limit specified by command */
-    if ( ( (0 != (cmd->details.history.direction
-                  & TALER_BANK_DIRECTION_CREDIT)) &&
-           (cmd->details.history.account_number ==
-            pos->details.admin_add_incoming.credit_account_no)) &&
-         ( (0 != (cmd->details.history.direction
-                  & TALER_BANK_DIRECTION_DEBIT)) &&
-           (cmd->details.history.account_number ==
-            pos->details.admin_add_incoming.debit_account_no)) )
-    {
-      GNUNET_break (0);
-      continue;
-    }
-
-    cancelled = test_cancelled (is,
-                                off);
-    if ( (GNUNET_YES == cancelled) &&
-         (0 == (cmd->details.history.direction & TALER_BANK_DIRECTION_CANCEL)) 
)
-      continue;
-
-    if ( (0 != (cmd->details.history.direction
-                & TALER_BANK_DIRECTION_CREDIT)) &&
-         (cmd->details.history.account_number ==
-          pos->details.admin_add_incoming.credit_account_no))
-    {
-      h[total].direction = TALER_BANK_DIRECTION_CREDIT;
-      if (GNUNET_YES == cancelled)
-        h[total].direction |= TALER_BANK_DIRECTION_CANCEL;
-      GNUNET_asprintf (&h[total].details.account_url,
-                       "payto://x-taler-bank/%s/%llu",
-                       "localhost:8080",
-                       (unsigned long
-                        long) 
pos->details.admin_add_incoming.debit_account_no);
-    }
-    if ( (0 != (cmd->details.history.direction & TALER_BANK_DIRECTION_DEBIT)) 
&&
-         (cmd->details.history.account_number ==
-          pos->details.admin_add_incoming.debit_account_no))
-    {
-      h[total].direction = TALER_BANK_DIRECTION_DEBIT;
-      if (GNUNET_YES == cancelled)
-        h[total].direction |= TALER_BANK_DIRECTION_CANCEL;
-      GNUNET_asprintf (&h[total].details.account_url,
-                       "payto://x-taler-bank/%s/%llu",
-                       "localhost:8080",
-                       (unsigned long
-                        long) 
pos->details.admin_add_incoming.credit_account_no);
-    }
-    if ( ( (0 != (cmd->details.history.direction
-                  & TALER_BANK_DIRECTION_CREDIT)) &&
-           (cmd->details.history.account_number ==
-            pos->details.admin_add_incoming.credit_account_no)) ||
-         ( (0 != (cmd->details.history.direction
-                  & TALER_BANK_DIRECTION_DEBIT)) &&
-           (cmd->details.history.account_number ==
-            pos->details.admin_add_incoming.debit_account_no)) )
-    {
-      GNUNET_assert (GNUNET_OK ==
-                     TALER_string_to_amount (
-                       pos->details.admin_add_incoming.amount,
-                       &h[total].details.amount));
-      /* h[total].execution_date; // unknown here */
-      h[total].row_id
-        = pos->details.admin_add_incoming.row_id;
-      GNUNET_asprintf (&h[total].details.wire_transfer_subject,
-                       "%s %s",
-                       pos->details.admin_add_incoming.subject,
-                       pos->details.admin_add_incoming.exchange_base_url);
-      total++;
-    }
-  }
-  *rh = h;
-  return total;
-}
-
-
-/**
- * Log which history we expected.
- *
- * @param h what we expected
- * @param h_len number of entries in @a h
- * @param off position of the missmatch
- */
-static void
-print_expected (struct History *h,
-                uint64_t h_len,
-                unsigned int off)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Transaction history missmatch at position %u/%llu\n",
-              off,
-              (unsigned long long) h_len);
-  GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-              "Expected history:\n");
-  for (uint64_t i = 0; i<h_len; i++)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "H(%llu): %s%s (serial: %llu, subject: %s, to: %s)\n",
-                (unsigned long long) i,
-                (TALER_BANK_DIRECTION_CREDIT == h[i].direction) ? "+" : "-",
-                TALER_amount2s (&h[i].details.amount),
-                (unsigned long long) h[i].row_id,
-                h[i].details.wire_transfer_subject,
-                h[i].details.account_url);
-  }
-}
-
-
-/**
- * Free history @a h of length @a h_len.
- *
- * @param h history array to free
- * @param h_len number of entries in @a h
- */
-static void
-free_history (struct History *h,
-              uint64_t h_len)
-{
-  for (uint64_t off = 0; off<h_len; off++)
-  {
-    GNUNET_free (h[off].details.wire_transfer_subject);
-    GNUNET_free (h[off].details.account_url);
-  }
-  GNUNET_free_non_null (h);
-}
-
-
-/**
- * Compute how many results we expect to be returned for
- * the history command at @a is.
- *
- * @param is the interpreter state to inspect
- * @return number of results expected
- */
-static uint64_t
-compute_result_count (struct InterpreterState *is)
-{
-  uint64_t total;
-  struct History *h;
-
-  total = build_history (is,
-                         &h);
-  free_history (h,
-                total);
-  return total;
-}
-
-
-/**
- * Check that @a dir and @a details are the transaction
- * results we expect at offset @a off in the history of
- * the current command executed by @a is
- *
- * @param is the interpreter state we are in
- * @param off the offset of the result
- * @param dir the direction of the transaction
- * @param details the transaction details to check
- * @return #GNUNET_OK if the transaction is what we expect
- */
-static int
-check_result (struct InterpreterState *is,
-              unsigned int off,
-              enum TALER_BANK_Direction dir,
-              const struct TALER_BANK_TransferDetails *details)
-{
-  uint64_t total;
-  struct History *h;
-
-  total = build_history (is,
-                         &h);
-  if (off >= total)
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Test says history has at most %u results, but got result #%u 
to check\n",
-                (unsigned int) total,
-                off);
-    print_expected (h, total, off);
-    return GNUNET_SYSERR;
-  }
-  if (h[off].direction != dir)
-  {
-    GNUNET_break (0);
-    print_expected (h, total, off);
-    free_history (h,
-                  total);
-    return GNUNET_SYSERR;
-  }
-
-  if ( (0 != strcmp (h[off].details.wire_transfer_subject,
-                     details->wire_transfer_subject)) ||
-       (0 != TALER_amount_cmp (&h[off].details.amount,
-                               &details->amount)) ||
-       (0 != strcasecmp (h[off].details.account_url,
-                         details->account_url)) )
-  {
-    GNUNET_break (0);
-    print_expected (h, total, off);
-    free_history (h,
-                  total);
-    return GNUNET_SYSERR;
-  }
-  free_history (h,
-                total);
-  return GNUNET_OK;
-}
-
-
-/**
- * Run the main interpreter loop that performs bank operations.
- *
- * @param cls contains the `struct InterpreterState`
- */
-static void
-interpreter_run (void *cls);
-
-
-/**
- * Run the next command.
- *
- * @param is interpreter to progress
- */
-static void
-next (struct InterpreterState *is)
-{
-  is->ip++;
-  is->task = GNUNET_SCHEDULER_add_now (&interpreter_run,
-                                       is);
-}
-
-
-/**
- * Function called upon completion of our /admin/add/incoming request.
- *
- * @param cls closure with the interpreter state
- * @param http_status HTTP response code, #MHD_HTTP_OK (200) for successful 
status request
- *                    0 if the bank's reply is bogus (fails to follow the 
protocol)
- * @param ec taler status code
- * @param row_id unique ID of the wire transfer in the bank's records; 
UINT64_MAX on error
- * @param timestamp time stamp of when the transaction settled at the bank
- * @param json detailed response from the HTTPD, or NULL if reply was not in 
JSON
- */
-static void
-add_incoming_cb (void *cls,
-                 unsigned int http_status,
-                 enum TALER_ErrorCode ec,
-                 uint64_t row_id,
-                 struct GNUNET_TIME_Absolute timestamp,
-                 const json_t *json)
-{
-  struct InterpreterState *is = cls;
-  struct TBI_Command *cmd = &is->commands[is->ip];
-
-  cmd->details.admin_add_incoming.aih = NULL;
-  cmd->details.admin_add_incoming.row_id = row_id;
-  if (cmd->details.admin_add_incoming.expected_response_code != http_status)
-  {
-    GNUNET_break (0);
-    fprintf (stderr,
-             "Unexpected response code %u:\n",
-             http_status);
-    if (NULL != json)
-    {
-      json_dumpf (json, stderr, 0);
-      fprintf (stderr, "\n");
-    }
-    fail (is);
-    return;
-  }
-  next (is);
-}
-
-
-/**
- * Callbacks of this type are used to serve the result of asking
- * the bank for the transaction history.
- *
- * @param cls closure
- * @param http_status HTTP response code, #MHD_HTTP_OK (200) for successful 
status request
- *                    0 if the bank's reply is bogus (fails to follow the 
protocol),
- *                    #MHD_HTTP_NO_CONTENT if there are no more results; on 
success the
- *                    last callback is always of this status (even if 
`abs(num_results)` were
- *                    already returned).
- * @param ec taler status code
- * @param dir direction of the transfer
- * @param row_id monotonically increasing counter corresponding to the 
transaction
- * @param details details about the wire transfer
- * @param json detailed response from the HTTPD, or NULL if reply was not in 
JSON
- */
-static void
-history_cb (void *cls,
-            unsigned int http_status,
-            enum TALER_ErrorCode ec,
-            enum TALER_BANK_Direction dir,
-            uint64_t row_id,
-            const struct TALER_BANK_TransferDetails *details,
-            const json_t *json)
-{
-  struct InterpreterState *is = cls;
-  struct TBI_Command *cmd = &is->commands[is->ip];
-
-  if (MHD_HTTP_OK != http_status)
-  {
-    cmd->details.history.hh = NULL;
-    if ( (cmd->details.history.results_obtained !=
-          compute_result_count (is)) ||
-         (GNUNET_YES ==
-          cmd->details.history.failed) )
-    {
-      uint64_t total;
-      struct History *h;
-
-      GNUNET_break (0);
-      total = build_history (is,
-                             &h);
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Expected history of length %llu, got %llu\n",
-                  (unsigned long long) total,
-                  (unsigned long long) cmd->details.history.results_obtained);
-      print_expected (h,
-                      total,
-                      UINT_MAX);
-      free_history (h,
-                    total);
-      fail (is);
-      return;
-    }
-    next (is);
-    return;
-  }
-  if (GNUNET_OK !=
-      check_result (is,
-                    cmd->details.history.results_obtained,
-                    dir,
-                    details))
-  {
-    GNUNET_break (0);
-    {
-      char *acc;
-
-      acc = json_dumps (json,
-                        JSON_COMPACT);
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Result %u was `%s'\n",
-                  (unsigned int) cmd->details.history.results_obtained,
-                  acc);
-      if (NULL != acc)
-        free (acc);
-    }
-
-    cmd->details.history.failed = GNUNET_YES;
-    return;
-  }
-  cmd->details.history.results_obtained++;
-}
-
-
-/**
- * Callbacks of this type are used to serve the result of asking
- * the bank to reject an incoming wire transfer.
- *
- * @param cls closure
- * @param http_status HTTP response code, #MHD_HTTP_NO_CONTENT (204) for 
successful status request;
- *                    #MHD_HTTP_NOT_FOUND if the rowid is unknown;
- *                    0 if the bank's reply is bogus (fails to follow the 
protocol),
- * @param ec detailed error code
- */
-static void
-reject_cb (void *cls,
-           unsigned int http_status,
-           enum TALER_ErrorCode ec)
-{
-  struct InterpreterState *is = cls;
-  struct TBI_Command *cmd = &is->commands[is->ip];
-
-  cmd->details.reject.rh = NULL;
-  if (MHD_HTTP_NO_CONTENT != http_status)
-  {
-    GNUNET_break (0);
-    fprintf (stderr,
-             "Unexpected response code %u:\n",
-             http_status);
-    fail (is);
-    return;
-  }
-  next (is);
-}
-
-
-/**
- * Run the main interpreter loop that performs bank operations.
- *
- * @param cls contains the `struct InterpreterState`
- */
-static void
-interpreter_run (void *cls)
-{
-  struct InterpreterState *is = cls;
-  struct TBI_Command *cmd = &is->commands[is->ip];
-  const struct TBI_Command *ref;
-  struct TALER_Amount amount;
-  const struct GNUNET_SCHEDULER_TaskContext *tc;
-  struct TALER_BANK_AuthenticationData auth;
-  uint64_t rowid;
-
-  is->task = NULL;
-  tc = GNUNET_SCHEDULER_get_task_context ();
-  if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN))
-  {
-    fprintf (stderr,
-             "Test aborted by shutdown request\n");
-    fail (is);
-    return;
-  }
-  auth.method = TALER_BANK_AUTH_BASIC; /* or "NONE"? */
-  auth.details.basic.username = "Exchange";
-  auth.details.basic.password = "x";
-  switch (cmd->oc)
-  {
-  case TBI_OC_END:
-    *is->resultp = GNUNET_OK;
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  case TBI_OC_ADMIN_ADD_INCOMING:
-    if (GNUNET_OK !=
-        TALER_string_to_amount (cmd->details.admin_add_incoming.amount,
-                                &amount))
-    {
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Failed to parse amount `%s' at %u\n",
-                  cmd->details.admin_add_incoming.amount,
-                  is->ip);
-      fail (is);
-      return;
-    }
-    GNUNET_break (NULL != cmd->details.admin_add_incoming.subject);
-    switch (cmd->details.admin_add_incoming.debit_account_no)
-    {
-    case 1:
-      auth.details.basic.username = "Bank";
-      break;
-    case 2:
-      auth.details.basic.username = "Exchange";
-      break;
-    case 3:
-      auth.details.basic.username = "user3";
-      auth.details.basic.password = "pass3";
-      break;
-    default:
-      GNUNET_break (0);
-      break;
-    }
-    cmd->details.admin_add_incoming.aih
-      = TALER_BANK_admin_add_incoming (is->ctx,
-                                       "http://localhost:8080";,
-                                       &auth,
-                                       cmd->details.admin_add_incoming.
-                                       exchange_base_url,
-                                       cmd->details.admin_add_incoming.subject,
-                                       &amount,
-                                       cmd->details.admin_add_incoming.
-                                       debit_account_no,
-                                       cmd->details.admin_add_incoming.
-                                       credit_account_no,
-                                       &add_incoming_cb,
-                                       is);
-    if (NULL == cmd->details.admin_add_incoming.aih)
-    {
-      GNUNET_break (0);
-      fail (is);
-      return;
-    }
-    return;
-  case TBI_OC_HISTORY:
-    if (NULL != cmd->details.history.start_row_ref)
-    {
-      /*In case history is to be found from some other commad's
-      output, like from /admin/add/incoming*/
-      ref = find_command (is,
-                          cmd->details.history.start_row_ref);
-      GNUNET_assert (NULL != ref);
-    }
-    else
-    {
-      ref = NULL;
-    }
-    if (NULL != ref)
-      rowid = ref->details.admin_add_incoming.row_id;
-    else
-      rowid = UINT64_MAX;
-    switch (cmd->details.history.account_number)
-    {
-    case 1:
-      auth.details.basic.username = "Bank";
-      break;
-    case 2:
-      auth.details.basic.username = "Exchange";
-      break;
-    default:
-      GNUNET_break (0);
-      break;
-    }
-    cmd->details.history.hh
-      = TALER_BANK_history (is->ctx,
-                            "http://localhost:8080";,
-                            &auth,
-                            cmd->details.history.account_number,
-                            cmd->details.history.direction,
-                            GNUNET_YES,
-                            rowid,
-                            cmd->details.history.num_results,
-                            &history_cb,
-                            is);
-    if (NULL == cmd->details.history.hh)
-    {
-      GNUNET_break (0);
-      fail (is);
-      return;
-    }
-    return;
-  case TBI_OC_EXPECT_TRANSFER:
-    ref = find_command (is,
-                        cmd->details.expect_transfer.cmd_ref);
-    GNUNET_assert (NULL != ref);
-    GNUNET_assert (GNUNET_OK ==
-                   TALER_string_to_amount (
-                     ref->details.admin_add_incoming.amount,
-                     &amount));
-    {
-      char *subject;
-
-      if (GNUNET_OK !=
-          TALER_FAKEBANK_check (is->fakebank,
-                                &amount,
-                                
ref->details.admin_add_incoming.debit_account_no,
-                                ref->details.admin_add_incoming.
-                                credit_account_no,
-                                ref->details.admin_add_incoming.
-                                exchange_base_url,
-                                &subject))
-      {
-        GNUNET_break (0);
-        fail (is);
-        return;
-      }
-      if (0 != strcmp (ref->details.admin_add_incoming.subject,
-                       subject))
-      {
-        GNUNET_free (subject);
-        GNUNET_break (0);
-        fail (is);
-        return;
-      }
-      GNUNET_free (subject);
-    }
-    next (is);
-    return;
-  case TBI_OC_EXPECT_TRANSFERS_EMPTY:
-    if (GNUNET_OK != TALER_FAKEBANK_check_empty (is->fakebank))
-    {
-      GNUNET_break (0);
-      fail (is);
-      return;
-    }
-    next (is);
-    return;
-  case TBI_OC_REJECT:
-    ref = find_command (is,
-                        cmd->details.reject.cmd_ref);
-    GNUNET_assert (NULL != ref);
-    GNUNET_assert (TBI_OC_ADMIN_ADD_INCOMING == ref->oc);
-    switch (ref->details.admin_add_incoming.credit_account_no)
-    {
-    case 1:
-      auth.details.basic.username = "Bank";
-      break;
-    case 2:
-      auth.details.basic.username = "Exchange";
-      break;
-    default:
-      GNUNET_break (0);
-      break;
-    }
-    cmd->details.reject.rh
-      = TALER_BANK_reject (is->ctx,
-                           "http://localhost:8080";,
-                           &auth,
-                           ref->details.admin_add_incoming.credit_account_no,
-                           ref->details.admin_add_incoming.row_id,
-                           &reject_cb,
-                           is);
-    if (NULL == cmd->details.reject.rh)
-    {
-      GNUNET_break (0);
-      fail (is);
-      return;
-    }
-    return;
-  default:
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                "Unknown instruction %d at %u (%s)\n",
-                cmd->oc,
-                is->ip,
-                cmd->label);
-    fail (is);
-    return;
-  }
-}
-
-
-/**
- * Function run on timeout.
- *
- * @param cls the `struct InterpreterState`
- */
-static void
-do_timeout (void *cls)
-{
-  struct InterpreterState *is = cls;
-
-  is->timeout_task = NULL;
-  GNUNET_SCHEDULER_shutdown ();
-}
-
-
-/**
- * Function run when the test terminates (good or bad).
- * Cleans up our state.
- *
- * @param cls the interpreter state.
- */
-static void
-do_shutdown (void *cls)
-{
-  struct InterpreterState *is = cls;
-  struct TBI_Command *cmd;
-
-  if (NULL != is->timeout_task)
-  {
-    GNUNET_SCHEDULER_cancel (is->timeout_task);
-    is->timeout_task = NULL;
-  }
-
-  for (unsigned int i = 0; TBI_OC_END != (cmd = &is->commands[i])->oc; i++)
-  {
-    switch (cmd->oc)
-    {
-    case TBI_OC_END:
-      GNUNET_assert (0);
-      break;
-    case TBI_OC_ADMIN_ADD_INCOMING:
-      if (NULL != cmd->details.admin_add_incoming.aih)
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                    "Command %u (%s) did not complete\n",
-                    i,
-                    cmd->label);
-        TALER_BANK_admin_add_incoming_cancel (
-          cmd->details.admin_add_incoming.aih);
-        cmd->details.admin_add_incoming.aih = NULL;
-      }
-      break;
-    case TBI_OC_HISTORY:
-      if (NULL != cmd->details.history.hh)
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                    "Command %u (%s) did not complete\n",
-                    i,
-                    cmd->label);
-        TALER_BANK_history_cancel (cmd->details.history.hh);
-        cmd->details.history.hh = NULL;
-      }
-      break;
-    case TBI_OC_EXPECT_TRANSFER:
-      break;
-    case TBI_OC_EXPECT_TRANSFERS_EMPTY:
-      break;
-    case TBI_OC_REJECT:
-      if (NULL != cmd->details.reject.rh)
-      {
-        GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-                    "Command %u (%s) did not complete\n",
-                    i,
-                    cmd->label);
-        TALER_BANK_reject_cancel (cmd->details.reject.rh);
-        cmd->details.reject.rh = NULL;
-      }
-      break;
-    default:
-      GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                  "Unknown instruction %d at %u (%s)\n",
-                  cmd->oc,
-                  i,
-                  cmd->label);
-      break;
-    }
-  }
-  if (NULL != is->task)
-  {
-    GNUNET_SCHEDULER_cancel (is->task);
-    is->task = NULL;
-  }
-  if (NULL != is->fakebank)
-  {
-    TALER_FAKEBANK_stop (is->fakebank);
-    is->fakebank = NULL;
-  }
-  GNUNET_CURL_fini (is->ctx);
-  is->ctx = NULL;
-  GNUNET_CURL_gnunet_rc_destroy (is->rc);
-  GNUNET_free (is);
-}
-
-
-/**
- * Entry point to the interpeter.
- *
- * @param resultp where to store the final result
- * @param run_bank #GNUNET_YES to run the fakebank
- * @param commands list of commands to run
- */
-void
-TBI_run_interpreter (int *resultp,
-                     int run_bank,
-                     struct TBI_Command *commands)
-{
-  struct InterpreterState *is;
-
-  is = GNUNET_new (struct InterpreterState);
-  if (GNUNET_YES == run_bank)
-    is->fakebank = TALER_FAKEBANK_start (8080);
-  is->resultp = resultp;
-  is->commands = commands;
-  is->ctx = GNUNET_CURL_init (&GNUNET_CURL_gnunet_scheduler_reschedule,
-                              &is->rc);
-  GNUNET_assert (NULL != is->ctx);
-  is->rc = GNUNET_CURL_gnunet_rc_create (is->ctx);
-  is->task = GNUNET_SCHEDULER_add_now (&interpreter_run,
-                                       is);
-  is->timeout_task
-    = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
-                                      (GNUNET_TIME_UNIT_SECONDS, 150),
-                                    &do_timeout, is);
-  GNUNET_SCHEDULER_add_shutdown (&do_shutdown, is);
-}
-
-
-/* end of test_bank_interpeter.c */
diff --git a/src/bank-lib/test_bank_interpreter.h 
b/src/bank-lib/test_bank_interpreter.h
deleted file mode 100644
index 1f78ec0b..00000000
--- a/src/bank-lib/test_bank_interpreter.h
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
-  This file is part of TALER
-  Copyright (C) 2016, 2017 GNUnet e.V.
-
-  TALER 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.
-
-  TALER 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
-  TALER; see the file COPYING.  If not, see <http://www.gnu.org/licenses/>
-*/
-/**
- * @file bank/test_bank_interpreter.h
- * @brief interpreter for tests of the bank's HTTP API interface
- * @author Christian Grothoff
- */
-#ifndef TEST_BANK_INTERPRETER_H
-#define TEST_BANK_INTERPRETER_H
-
-#include "taler_util.h"
-#include "taler_signatures.h"
-#include "taler_bank_service.h"
-#include <gnunet/gnunet_util_lib.h>
-#include <gnunet/gnunet_curl_lib.h>
-#include <microhttpd.h>
-
-
-/**
- * Opcodes for the interpreter.
- */
-enum TBI_OpCode
-{
-  /**
-   * Termination code, stops the interpreter loop (with success).
-   */
-  TBI_OC_END = 0,
-
-  /**
-   * Add funds to a reserve by (faking) incoming wire transfer.
-   */
-  TBI_OC_ADMIN_ADD_INCOMING,
-
-  /**
-   * Request wire transfer history.
-   */
-  TBI_OC_HISTORY,
-
-  /**
-   * Expect that we have received the specified transfer at fakebank.
-   */
-  TBI_OC_EXPECT_TRANSFER,
-
-  /**
-   * Expect that we have exhaustively gone over all transfers at fakebank.
-   */
-  TBI_OC_EXPECT_TRANSFERS_EMPTY,
-
-  /**
-   * Reject incoming transfer.
-   */
-  TBI_OC_REJECT
-
-};
-
-
-/**
- * Details for a bank operation to execute.
- */
-struct TBI_Command
-{
-  /**
-   * Opcode of the command.
-   */
-  enum TBI_OpCode oc;
-
-  /**
-   * Label for the command, can be NULL.
-   */
-  const char *label;
-
-  /**
-   * Details about the command.
-   */
-  union
-  {
-
-    /**
-     * Information for a #TBI_OC_ADMIN_ADD_INCOMING command.
-     */
-    struct
-    {
-
-      /**
-       * String describing the amount to add to the reserve.
-       */
-      const char *amount;
-
-      /**
-       * Credited account number.
-       */
-      uint64_t credit_account_no;
-
-      /**
-       * Debited account number.
-       */
-      uint64_t debit_account_no;
-
-      /**
-       * Exchange base URL to use.
-       */
-      const char *exchange_base_url;
-
-      /**
-       * Wire transfer subject to use.
-       */
-      const char *subject;
-
-      /**
-       * Which response code do we expect for this command?
-       */
-      unsigned int expected_response_code;
-
-      /**
-       * Set to the API's handle during the operation.
-       */
-      struct TALER_BANK_AdminAddIncomingHandle *aih;
-
-      /**
-       * The serial ID for this record, as returned by the bank.
-       */
-      uint64_t row_id;
-
-    } admin_add_incoming;
-
-    struct
-    {
-
-      /**
-       * For which account do we query the history.
-       */
-      uint64_t account_number;
-
-      /**
-       * Which types of transactions should be listed?
-       */
-      enum TALER_BANK_Direction direction;
-
-      /**
-       * At which serial ID do we start? References the respective @e
-       * admin_add_incoming command.  Use NULL for the extremes.
-       */
-      const char *start_row_ref;
-
-      /**
-       * How many results should be returned (if available)?
-       */
-      int64_t num_results;
-
-      /**
-       * Set to the API's handle during the operation.
-       */
-      struct TALER_BANK_HistoryHandle *hh;
-
-      /**
-       * How many results did we actually get?
-       */
-      uint64_t results_obtained;
-
-      /**
-       * Set to #GNUNET_YES if we encountered a problem.
-       */
-      int failed;
-
-      /**
-       * if true, the history elements will be asked in
-       * chronological order.
-       */
-      unsigned int ascending;
-
-    } history;
-
-    /**
-     * If @e opcode is #TBI_OC_EXPECT_TRANSFER, this
-     * specifies which transfer we expected.
-     */
-    struct
-    {
-
-      /**
-       * Label of the command of an /admin/add/incoming
-       * request that we should check was executed.
-       */
-      const char *cmd_ref;
-
-    } expect_transfer;
-
-    /**
-     * Execute /reject operation.
-     */
-    struct
-    {
-
-      /**
-       * Reference to the matching transfer that is now to be rejected.
-       */
-      const char *cmd_ref;
-
-      /**
-       * Set to the API's handle during the operation.
-       */
-      struct TALER_BANK_RejectHandle *rh;
-
-    } reject;
-
-  } details;
-
-};
-
-
-/**
- * Entry point to the interpeter.
- *
- * @param resultp where to store the final result
- * @param run_bank #GNUNET_YES to run the fakebank
- * @param commands list of commands to run
- */
-void
-TBI_run_interpreter (int *resultp,
-                     int run_bank,
-                     struct TBI_Command *commands);
-
-#endif

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



reply via email to

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