gnunet-svn
[Top][All Lists]
Advanced

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

[taler-exchange] branch master updated (05b338ce -> 1fc60380)


From: gnunet
Subject: [taler-exchange] branch master updated (05b338ce -> 1fc60380)
Date: Sat, 14 Dec 2019 23:19:57 +0100

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

grothoff pushed a change to branch master
in repository exchange.

    from 05b338ce do not use max-requests in tests, forking prevents killing in 
test
     new 05a99244 fix comments
     new cf31e54a remove obsolete old tests (#5758)
     new 1fc60380 new is the new old: remove _new from tests

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .gitignore                                 |    2 -
 src/bank-lib/.gitignore                    |    5 +-
 src/bank-lib/Makefile.am                   |   38 +-
 src/bank-lib/test_bank_api.c               |  380 +++++-----
 src/bank-lib/test_bank_api_new.c           |  242 -------
 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 -------
 8 files changed, 205 insertions(+), 1924 deletions(-)
 delete mode 100644 src/bank-lib/test_bank_api_new.c
 delete mode 100644 src/bank-lib/test_bank_api_with_fakebank.c
 delete mode 100644 src/bank-lib/test_bank_interpreter.c
 delete mode 100644 src/bank-lib/test_bank_interpreter.h

diff --git a/.gitignore b/.gitignore
index 5bb95cb4..a4b9928b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,10 +37,8 @@ src/auditor/taler-auditor
 src/auditor/taler-auditor-dbinit
 src/auditor/taler-auditor-sign
 src/bank-lib/taler-fakebank-run
-src/bank-lib/test_bank_api
 src/bank-lib/test_bank_api_with_fakebank
 src/bank-lib/test_bank_api_with_fakebank_twisted
-src/bank-lib/test_bank_api_with_pybank_new
 src/bank-lib/test_bank_api_with_pybank_twisted
 src/lib/test_exchange_api
 
src/lib/test_exchange_api_keys_cherry_picking_home/.local/share/taler/exchange/live-keys/
diff --git a/src/bank-lib/.gitignore b/src/bank-lib/.gitignore
index e8c3b964..bfd73cca 100644
--- a/src/bank-lib/.gitignore
+++ b/src/bank-lib/.gitignore
@@ -1,2 +1,3 @@
-test_bank_api_new
-test_bank_api_with_fakebank_new
+test_bank_api
+test_bank_api_with_fakebank
+test_bank_api_with_pybank
diff --git a/src/bank-lib/Makefile.am b/src/bank-lib/Makefile.am
index 1166964a..35173e48 100644
--- a/src/bank-lib/Makefile.am
+++ b/src/bank-lib/Makefile.am
@@ -89,10 +89,8 @@ endif
 endif
 
 check_PROGRAMS = \
-  test_bank_api \
   test_bank_api_with_fakebank \
-  test_bank_api_with_fakebank_new \
-  test_bank_api_with_pybank_new
+  test_bank_api_with_pybank
 
 if HAVE_TWISTER
 check_PROGRAMS += \
@@ -135,42 +133,18 @@ endif
 TESTS = \
   $(check_PROGRAMS)
 
-test_bank_api_SOURCES = \
-  test_bank_interpreter.c test_bank_interpreter.h \
+test_bank_api_with_pybank_SOURCES = \
   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
-
-test_bank_api_with_pybank_new_LDADD = \
+test_bank_api_with_pybank_LDADD = \
   $(top_builddir)/src/lib/libtalertesting.la \
   libtalerbanktesting.la \
   -ltalerexchange \
   -lgnunetutil \
   libtalerbank.la
 
-test_bank_api_with_fakebank_new_SOURCES = \
-  test_bank_api_new.c
-
-test_bank_api_with_fakebank_new_LDADD = \
+test_bank_api_with_fakebank_SOURCES = \
+  test_bank_api.c
+test_bank_api_with_fakebank_LDADD = \
   $(top_builddir)/src/lib/libtalertesting.la \
   libtalerbanktesting.la \
   -ltalerexchange \
diff --git a/src/bank-lib/test_bank_api.c b/src/bank-lib/test_bank_api.c
index 0a34e4b4..a7b6aef7 100644
--- a/src/bank-lib/test_bank_api.c
+++ b/src/bank-lib/test_bank_api.c
@@ -1,229 +1,241 @@
 /*
-   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/>
- */
+  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.c
- * @brief testcase to test bank's HTTP API interface
- * against the "real" bank
+ * @brief testcase to test bank's HTTP API
+ *        interface against the fakebank
+ * @author Marcello Stanisci
  * @author Christian Grothoff
  */
+
 #include "platform.h"
 #include "taler_util.h"
 #include "taler_signatures.h"
 #include "taler_bank_service.h"
+#include "taler_exchange_service.h"
 #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"
 
 
+#define CONFIG_FILE "bank.conf"
+
 /**
- * Main function that will be run by the scheduler.
+ * Fakebank URL.
+ */
+static char *bank_url;
+
+/**
+ * Handle to the Py-bank daemon.
+ */
+static struct GNUNET_OS_Process *bankd;
+
+/**
+ * Flag indicating whether the test is running against the
+ * Fakebank.  Set up at runtime.
+ */
+static int WITH_FAKEBANK;
+
+/**
+ * Transfer @a amount from @a src account to @a dst using
+ * @a subject and the @a label for the command.
+ */
+#define TRANSFER(label,amount,src,dst,subject)          \
+  TALER_TESTING_cmd_fakebank_transfer_with_subject (label, \
+                                                    amount,   \
+                                                    bank_url, \
+                                                    src,                \
+                                                    dst, \
+                                                    AUTHS[src \
+                                                          - 1].details.basic. \
+                                                    username, \
+                                                    AUTHS[src \
+                                                          - 1].details.basic. \
+                                                    password, \
+                                                    subject, \
+                                                    "http://exchange.net/";)
+
+
+/**
+ * Main function that will tell the interpreter what commands to
+ * run.
  *
  * @param cls closure
  */
 static void
-run (void *cls)
+run (void *cls,
+     struct TALER_TESTING_Interpreter *is)
 {
-  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 }
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Bank serves at `%s'\n",
+              bank_url);
+  extern struct TALER_BANK_AuthenticationData AUTHS[];
+  struct TALER_TESTING_Command commands[] = {
+    TALER_TESTING_cmd_bank_history ("history-0",
+                                    bank_url,
+                                    BANK_ACCOUNT_NUMBER,
+                                    TALER_BANK_DIRECTION_BOTH,
+                                    GNUNET_YES,
+                                    NULL,
+                                    1),
+    /* WARNING: old API has expected http response code among
+     * the parameters, although it was always set as '200 OK' */
+    TRANSFER ("debit-1",
+              "KUDOS:5.01",
+              EXCHANGE_ACCOUNT_NUMBER,
+              BANK_ACCOUNT_NUMBER,
+              "subject 1"),
+    TALER_TESTING_cmd_bank_history ("history-1c",
+                                    bank_url,
+                                    BANK_ACCOUNT_NUMBER,
+                                    TALER_BANK_DIRECTION_CREDIT,
+                                    GNUNET_YES,
+                                    NULL,
+                                    5),
+    TALER_TESTING_cmd_bank_history ("history-1d",
+                                    bank_url,
+                                    BANK_ACCOUNT_NUMBER,
+                                    TALER_BANK_DIRECTION_DEBIT,
+                                    GNUNET_YES,
+                                    NULL,
+                                    5),
+    TRANSFER ("debit-2",
+              "KUDOS:3.21",
+              EXCHANGE_ACCOUNT_NUMBER,
+              USER_ACCOUNT_NUMBER,
+              "subject 2"),
+    TRANSFER ("credit-2",
+              "KUDOS:3.22",
+              USER_ACCOUNT_NUMBER,
+              EXCHANGE_ACCOUNT_NUMBER,
+              "credit 2"),
+    TALER_TESTING_cmd_bank_history ("history-2b",
+                                    bank_url,
+                                    EXCHANGE_ACCOUNT_NUMBER,
+                                    TALER_BANK_DIRECTION_BOTH,
+                                    GNUNET_YES,
+                                    NULL,
+                                    5),
+    TALER_TESTING_cmd_bank_history ("history-2bi",
+                                    bank_url,
+                                    EXCHANGE_ACCOUNT_NUMBER,
+                                    TALER_BANK_DIRECTION_BOTH,
+                                    GNUNET_YES,
+                                    "debit-1",
+                                    5),
+    TRANSFER ("credit-for-reject-1",
+              "KUDOS:1.01",
+              BANK_ACCOUNT_NUMBER,
+              EXCHANGE_ACCOUNT_NUMBER,
+              "subject 3"),
+    TALER_TESTING_cmd_bank_reject ("reject-1",
+                                   bank_url,
+                                   "credit-for-reject-1"),
+    TALER_TESTING_cmd_bank_history ("history-r1",
+                                    bank_url,
+                                    BANK_ACCOUNT_NUMBER,
+                                    TALER_BANK_DIRECTION_BOTH,
+                                    GNUNET_YES,
+                                    NULL,
+                                    5),
+    TALER_TESTING_cmd_bank_history ("history-r1c",
+                                    bank_url,
+                                    BANK_ACCOUNT_NUMBER,
+                                    TALER_BANK_DIRECTION_BOTH
+                                    | TALER_BANK_DIRECTION_CANCEL,
+                                    GNUNET_YES,
+                                    NULL,
+                                    5),
+    TALER_TESTING_cmd_end ()
   };
 
-  TBI_run_interpreter (resultp,
-                       GNUNET_NO /* we use the "real" taler bank */,
+  if (GNUNET_YES == WITH_FAKEBANK)
+    TALER_TESTING_run_with_fakebank (is,
+                                     commands,
+                                     bank_url);
+  else
+    TALER_TESTING_run (is,
                        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",
+  int rv;
+
+  /* These environment variables get in the way... */
+  unsetenv ("XDG_DATA_HOME");
+  unsetenv ("XDG_CONFIG_HOME");
+  GNUNET_log_setup ("test-bank-api-with-(fake)bank-new",
+                    "DEBUG",
                     NULL);
 
-  if (NULL == (dbconn = getenv ("TALER_EXCHANGEDB_POSTGRES_CONFIG")))
-    dbconn = defaultdb;
+  WITH_FAKEBANK = TALER_TESTING_has_in_name (argv[0],
+                                             "_with_fakebank");
+  if (GNUNET_YES == WITH_FAKEBANK)
   {
-    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))
+    TALER_LOG_DEBUG ("Running against the Fakebank.\n");
+    if (NULL == (bank_url = TALER_TESTING_prepare_fakebank (CONFIG_FILE,
+                                                            "account-1")))
     {
-      fprintf (stderr,
-               "Could not purge database\n");
-      GNUNET_free (purgedb_cmd);
+      GNUNET_break (0);
       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
+  else
   {
-    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"));
-
+    TALER_LOG_DEBUG ("Running against the Pybank.\n");
+    if (NULL == (bank_url = TALER_TESTING_prepare_bank (CONFIG_FILE)))
+    {
+      GNUNET_break (0);
+      return 77;
+    }
 
-  fprintf (stderr, "\n");
-  result = GNUNET_SYSERR;
-  if (cnt <= 30)
-  {
-    fprintf (stderr,
-             "Ready, running test...\n");
-    GNUNET_SCHEDULER_run (&run, &result);
+    if (NULL == (bankd = TALER_TESTING_run_bank (CONFIG_FILE,
+                                                 bank_url)))
+    {
+      GNUNET_break (0);
+      return 77;
+    }
   }
-  GNUNET_OS_process_kill (bankd,
-                          SIGTERM);
-  GNUNET_OS_process_wait (bankd);
-  GNUNET_OS_process_destroy (bankd);
-  if (cnt > 30)
+
+  rv = (GNUNET_OK == TALER_TESTING_setup (&run,
+                                          NULL,
+                                          CONFIG_FILE,
+                                          NULL,
+                                          GNUNET_NO)) ? 0 : 1;
+  if (GNUNET_NO == WITH_FAKEBANK)
   {
-    fprintf (stderr,
-             "taler-bank-manage failed to start properly.\n");
-    return 77;
+
+    GNUNET_OS_process_kill (bankd,
+                            SIGKILL);
+    GNUNET_OS_process_wait (bankd);
+    GNUNET_OS_process_destroy (bankd);
+    GNUNET_free (bank_url);
   }
-  return (GNUNET_OK == result) ? 0 : 1;
+
+  return rv;
 }
 
 
diff --git a/src/bank-lib/test_bank_api_new.c b/src/bank-lib/test_bank_api_new.c
deleted file mode 100644
index ce99904f..00000000
--- a/src/bank-lib/test_bank_api_new.c
+++ /dev/null
@@ -1,242 +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 Marcello Stanisci
- * @author Christian Grothoff
- */
-
-#include "platform.h"
-#include "taler_util.h"
-#include "taler_signatures.h"
-#include "taler_bank_service.h"
-#include "taler_exchange_service.h"
-#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"
-
-
-#define CONFIG_FILE "bank.conf"
-
-/**
- * Fakebank URL.
- */
-static char *bank_url;
-
-/**
- * Handle to the Py-bank daemon.
- */
-static struct GNUNET_OS_Process *bankd;
-
-/**
- * Flag indicating whether the test is running against the
- * Fakebank.  Set up at runtime.
- */
-static int WITH_FAKEBANK;
-
-/**
- * Transfer @a amount from @a src account to @a dst using
- * @a subject and the @a label for the command.
- */
-#define TRANSFER(label,amount,src,dst,subject)          \
-  TALER_TESTING_cmd_fakebank_transfer_with_subject (label, \
-                                                    amount,   \
-                                                    bank_url, \
-                                                    src,                \
-                                                    dst, \
-                                                    AUTHS[src \
-                                                          - 1].details.basic. \
-                                                    username, \
-                                                    AUTHS[src \
-                                                          - 1].details.basic. \
-                                                    password, \
-                                                    subject, \
-                                                    "http://exchange.net/";)
-
-
-/**
- * Main function that will tell the interpreter what commands to
- * run.
- *
- * @param cls closure
- */
-static void
-run (void *cls,
-     struct TALER_TESTING_Interpreter *is)
-{
-  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-              "Bank serves at `%s'\n",
-              bank_url);
-  extern struct TALER_BANK_AuthenticationData AUTHS[];
-  struct TALER_TESTING_Command commands[] = {
-    TALER_TESTING_cmd_bank_history ("history-0",
-                                    bank_url,
-                                    BANK_ACCOUNT_NUMBER,
-                                    TALER_BANK_DIRECTION_BOTH,
-                                    GNUNET_YES,
-                                    NULL,
-                                    1),
-    /* WARNING: old API has expected http response code among
-     * the parameters, although it was always set as '200 OK' */
-    TRANSFER ("debit-1",
-              "KUDOS:5.01",
-              EXCHANGE_ACCOUNT_NUMBER,
-              BANK_ACCOUNT_NUMBER,
-              "subject 1"),
-    TALER_TESTING_cmd_bank_history ("history-1c",
-                                    bank_url,
-                                    BANK_ACCOUNT_NUMBER,
-                                    TALER_BANK_DIRECTION_CREDIT,
-                                    GNUNET_YES,
-                                    NULL,
-                                    5),
-    TALER_TESTING_cmd_bank_history ("history-1d",
-                                    bank_url,
-                                    BANK_ACCOUNT_NUMBER,
-                                    TALER_BANK_DIRECTION_DEBIT,
-                                    GNUNET_YES,
-                                    NULL,
-                                    5),
-    TRANSFER ("debit-2",
-              "KUDOS:3.21",
-              EXCHANGE_ACCOUNT_NUMBER,
-              USER_ACCOUNT_NUMBER,
-              "subject 2"),
-    TRANSFER ("credit-2",
-              "KUDOS:3.22",
-              USER_ACCOUNT_NUMBER,
-              EXCHANGE_ACCOUNT_NUMBER,
-              "credit 2"),
-    TALER_TESTING_cmd_bank_history ("history-2b",
-                                    bank_url,
-                                    EXCHANGE_ACCOUNT_NUMBER,
-                                    TALER_BANK_DIRECTION_BOTH,
-                                    GNUNET_YES,
-                                    NULL,
-                                    5),
-    TALER_TESTING_cmd_bank_history ("history-2bi",
-                                    bank_url,
-                                    EXCHANGE_ACCOUNT_NUMBER,
-                                    TALER_BANK_DIRECTION_BOTH,
-                                    GNUNET_YES,
-                                    "debit-1",
-                                    5),
-    TRANSFER ("credit-for-reject-1",
-              "KUDOS:1.01",
-              BANK_ACCOUNT_NUMBER,
-              EXCHANGE_ACCOUNT_NUMBER,
-              "subject 3"),
-    TALER_TESTING_cmd_bank_reject ("reject-1",
-                                   bank_url,
-                                   "credit-for-reject-1"),
-    TALER_TESTING_cmd_bank_history ("history-r1",
-                                    bank_url,
-                                    BANK_ACCOUNT_NUMBER,
-                                    TALER_BANK_DIRECTION_BOTH,
-                                    GNUNET_YES,
-                                    NULL,
-                                    5),
-    TALER_TESTING_cmd_bank_history ("history-r1c",
-                                    bank_url,
-                                    BANK_ACCOUNT_NUMBER,
-                                    TALER_BANK_DIRECTION_BOTH
-                                    | TALER_BANK_DIRECTION_CANCEL,
-                                    GNUNET_YES,
-                                    NULL,
-                                    5),
-    TALER_TESTING_cmd_end ()
-  };
-
-  if (GNUNET_YES == WITH_FAKEBANK)
-    TALER_TESTING_run_with_fakebank (is,
-                                     commands,
-                                     bank_url);
-  else
-    TALER_TESTING_run (is,
-                       commands);
-}
-
-
-int
-main (int argc,
-      char *const *argv)
-{
-  int rv;
-  /* These environment variables get in the way... */
-  unsetenv ("XDG_DATA_HOME");
-  unsetenv ("XDG_CONFIG_HOME");
-  GNUNET_log_setup ("test-bank-api-with-(fake)bank-new",
-                    "DEBUG",
-                    NULL);
-
-  WITH_FAKEBANK = TALER_TESTING_has_in_name (argv[0],
-                                             "_with_fakebank");
-  if (GNUNET_YES == WITH_FAKEBANK)
-  {
-    TALER_LOG_DEBUG ("Running against the Fakebank.\n");
-    if (NULL == (bank_url = TALER_TESTING_prepare_fakebank (CONFIG_FILE,
-                                                            "account-1")))
-    {
-      GNUNET_break (0);
-      return 77;
-    }
-  }
-  else
-  {
-    TALER_LOG_DEBUG ("Running against the Pybank.\n");
-    if (NULL == (bank_url = TALER_TESTING_prepare_bank (CONFIG_FILE)))
-    {
-      GNUNET_break (0);
-      return 77;
-    }
-
-    if (NULL == (bankd = TALER_TESTING_run_bank (CONFIG_FILE,
-                                                 bank_url)))
-    {
-      GNUNET_break (0);
-      return 77;
-    }
-  }
-
-  rv = (GNUNET_OK == TALER_TESTING_setup (&run,
-                                          NULL,
-                                          CONFIG_FILE,
-                                          NULL,
-                                          GNUNET_NO)) ? 0 : 1;
-  if (GNUNET_NO == WITH_FAKEBANK)
-  {
-
-    GNUNET_OS_process_kill (bankd,
-                            SIGKILL);
-    GNUNET_OS_process_wait (bankd);
-    GNUNET_OS_process_destroy (bankd);
-    GNUNET_free (bank_url);
-  }
-
-  return rv;
-}
-
-
-/* end of test_bank_api_with_fakebank_new.c */
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]