summaryrefslogtreecommitdiff
path: root/src/bank-lib/test_bank_interpreter.h
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2016-05-02 08:46:17 +0200
committerChristian Grothoff <christian@grothoff.org>2016-05-02 08:46:17 +0200
commit31ad6aaf116d00cafa29efe659c3076da0d09692 (patch)
tree0e9b3a36911706d94928a7089b45d6cadb6e0b50 /src/bank-lib/test_bank_interpreter.h
parent5fd6a25c6d88c62af9fda04f92b954bb1dbb4436 (diff)
downloadexchange-31ad6aaf116d00cafa29efe659c3076da0d09692.tar.gz
exchange-31ad6aaf116d00cafa29efe659c3076da0d09692.tar.bz2
exchange-31ad6aaf116d00cafa29efe659c3076da0d09692.zip
separate interpreter from the rest of the test logic
Diffstat (limited to 'src/bank-lib/test_bank_interpreter.h')
-rw-r--r--src/bank-lib/test_bank_interpreter.h127
1 files changed, 127 insertions, 0 deletions
diff --git a/src/bank-lib/test_bank_interpreter.h b/src/bank-lib/test_bank_interpreter.h
new file mode 100644
index 000000000..35873840a
--- /dev/null
+++ b/src/bank-lib/test_bank_interpreter.h
@@ -0,0 +1,127 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2016 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, 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
+
+};
+
+
+/**
+ * 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;
+
+ /**
+ * Which response code do we expect for this command?
+ */
+ unsigned int expected_response_code;
+
+ /**
+ * 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;
+
+ /**
+ * Wire transfer identifier to use. Initialized to
+ * a random value.
+ */
+ struct TALER_WireTransferIdentifierRawP wtid;
+
+ /**
+ * Set to the API's handle during the operation.
+ */
+ struct TALER_BANK_AdminAddIncomingHandle *aih;
+
+ } admin_add_incoming;
+
+ } details;
+
+};
+
+
+/**
+ * Entry point to the interpeter.
+ *
+ * @param resultp where to store the final result
+ * @param bank_port on which port to launch the bank, 0 for none
+ * @param commands list of commands to run
+ */
+void
+TBI_run_interpreter (int *resultp,
+ uint16_t bank_port,
+ struct TBI_Command *commands);
+
+#endif