summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFournier Nicolas <nicolas.fournier@ensta-paristech.fr>2015-07-06 14:58:20 +0200
committerFournier Nicolas <nicolas.fournier@ensta-paristech.fr>2015-07-06 14:58:20 +0200
commit12eee234abce0db80f5e1f5a3d08d543404cf5a1 (patch)
tree3ecd946f9fa318f1673278d5a6561b88ab9fed9e
parent131595b6c63c42b7d939fbd27fb35e328a13b5c1 (diff)
downloadexchange-12eee234abce0db80f5e1f5a3d08d543404cf5a1.tar.gz
exchange-12eee234abce0db80f5e1f5a3d08d543404cf5a1.tar.bz2
exchange-12eee234abce0db80f5e1f5a3d08d543404cf5a1.zip
Added test for perf_taler
-rw-r--r--src/mintdb/Makefile.am12
-rw-r--r--src/mintdb/perf_taler_mintdb_interpreter.h2
-rw-r--r--src/mintdb/test_perf_taler_mintdb.c138
3 files changed, 151 insertions, 1 deletions
diff --git a/src/mintdb/Makefile.am b/src/mintdb/Makefile.am
index a2bc5e3b4..3c0b87b97 100644
--- a/src/mintdb/Makefile.am
+++ b/src/mintdb/Makefile.am
@@ -49,6 +49,7 @@ check_PROGRAMS = \
test-mintdb-deposits \
test-mintdb-keyio \
test-mintdb-postgres \
+ test-perf-taler-mintdb \
perf-mintdb
TESTS = \
@@ -80,6 +81,17 @@ test_mintdb_postgres_LDADD = \
$(top_srcdir)/src/pq/libtalerpq.la \
-lgnunetutil -ljansson
+test_perf_taler_mintdb_SOURCES = \
+ test_perf_taler_mintdb.c \
+ perf_taler_mintdb_init.c \
+ perf_taler_mintdb_interpreter.c
+test_perf_taler_mintdb_LDADD = \
+ libtalermintdb.la \
+ $(top_srcdir)/src/util/libtalerutil.la \
+ $(top_srcdir)/src/pq/libtalerpq.la \
+ -ljansson \
+ -lgnunetutil
+
perf_mintdb_SOURCES = \
perf_taler_mintdb.c \
perf_taler_mintdb_init.c \
diff --git a/src/mintdb/perf_taler_mintdb_interpreter.h b/src/mintdb/perf_taler_mintdb_interpreter.h
index b62a87e75..e4fe5fc82 100644
--- a/src/mintdb/perf_taler_mintdb_interpreter.h
+++ b/src/mintdb/perf_taler_mintdb_interpreter.h
@@ -126,7 +126,7 @@
.label_start = _label_start, \
.label_stop = _label_stop, \
.description = _description, \
- .unit = _unit \
+ .unit = _unit, \
.divide = _divide, \
} \
}
diff --git a/src/mintdb/test_perf_taler_mintdb.c b/src/mintdb/test_perf_taler_mintdb.c
new file mode 100644
index 000000000..649324f6f
--- /dev/null
+++ b/src/mintdb/test_perf_taler_mintdb.c
@@ -0,0 +1,138 @@
+/*
+ This file is part of TALER
+ Copyright (C) 2014, 2015 Christian Grothoff (and other contributing authors)
+
+ 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 mintdb/perf_taler_mintdb.c
+ * @brief Mint database performance analysis
+ * @author Nicolas Fournier
+ */
+#include "platform.h"
+#include "perf_taler_mintdb_interpreter.h"
+
+
+#define NB_DENOMINATION_INIT 2
+#define NB_DENOMINATION_SAVE 2
+
+#define NB_RESERVE_INIT 4
+#define NB_RESERVE_SAVE 1
+
+#define NB_DEPOSIT_INIT 1
+#define NB_DEPOSIT_SAVE 1
+
+#define NB_WITHDRAW_INIT 1
+#define NB_WITHDRAW_SAVE 1
+
+/**
+ * Runs the performances tests for the mint database
+ * and logs the results using Gauger
+ */
+int
+main (int argc, char ** argv)
+{
+ int ret;
+ struct PERF_TALER_MINTDB_Cmd init[] =
+ {
+ PERF_TALER_MINTDB_INIT_CMD_END ("init")
+ };
+ struct PERF_TALER_MINTDB_Cmd benchmark[] =
+ {
+ // Denomination used to create coins
+ PERF_TALER_MINTDB_INIT_CMD_DEBUG ("00 - Start of interpreter"),
+
+ PERF_TALER_MINTDB_INIT_CMD_LOOP ("01 - denomination loop",
+ NB_DENOMINATION_INIT),
+ PERF_TALER_MINTDB_INIT_CMD_START_TRANSACTION ("01 - start transaction"),
+ PERF_TALER_MINTDB_INIT_CMD_INSERT_DENOMINATION ("01 - denomination"),
+ PERF_TALER_MINTDB_INIT_CMD_COMMIT_TRANSACTION ("01 - commit transaction"),
+ PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("01 - save denomination",
+ "01 - denomination loop",
+ "01 - denomination",
+ NB_DENOMINATION_SAVE),
+ PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("01 - denomination loop end",
+ "01 - denomination loop"),
+ PERF_TALER_MINTDB_INIT_CMD_DEBUG ("01 - init denomination complete"),
+ // End of initialization
+ // Reserve initialization
+ PERF_TALER_MINTDB_INIT_CMD_LOOP ("02 - init reserve loop",
+ NB_RESERVE_INIT),
+ PERF_TALER_MINTDB_INIT_CMD_INSERT_RESERVE ("02 - reserve"),
+ PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("02 - save reserve",
+ "02 - init reserve loop",
+ "02 - reserve",
+ NB_RESERVE_SAVE),
+ PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("02 - init reserve end loop",
+ "02 - init reserve loop"),
+ PERF_TALER_MINTDB_INIT_CMD_DEBUG ("02 - reserve init complete"),
+ // End reserve init
+ // Withdrawal initialization
+ PERF_TALER_MINTDB_INIT_CMD_LOOP ("03 - init withdraw loop",
+ NB_WITHDRAW_INIT),
+ PERF_TALER_MINTDB_INIT_CMD_START_TRANSACTION ("03 - start transaction"),
+ PERF_TALER_MINTDB_INIT_CMD_LOAD_ARRAY ("03 - denomination load",
+ "03 - init withdraw loop",
+ "01 - save denomination"),
+ PERF_TALER_MINTDB_INIT_CMD_LOAD_ARRAY ("03 - reserve load",
+ "03 - init withdraw loop",
+ "02 - save reserve"),
+ PERF_TALER_MINTDB_INIT_CMD_INSERT_WITHDRAW ("03 - withdraw",
+ "03 - denomination load",
+ "03 - reserve load"),
+ PERF_TALER_MINTDB_INIT_CMD_COMMIT_TRANSACTION ("03 - commit transaction"),
+ PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("03 - blindcoin array",
+ "03 - init withdraw loop",
+ "03 - withdraw",
+ NB_WITHDRAW_SAVE),
+ PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("03 - withdraw init end loop",
+ "03 - init withdraw loop"),
+ PERF_TALER_MINTDB_INIT_CMD_DEBUG ("03 - withdraw init complete"),
+ //End of withdrawal initialization
+ //Deposit initialization
+ PERF_TALER_MINTDB_INIT_CMD_GET_TIME ("04 - time start"),
+ PERF_TALER_MINTDB_INIT_CMD_LOOP ("04 - deposit init loop",
+ NB_DEPOSIT_INIT),
+ PERF_TALER_MINTDB_INIT_CMD_START_TRANSACTION ("04 - start transaction"),
+ PERF_TALER_MINTDB_INIT_CMD_LOAD_ARRAY ("04 - denomination load",
+ "04 - deposit init loop",
+ "01 - save denomination"),
+ PERF_TALER_MINTDB_INIT_CMD_INSERT_DEPOSIT ("04 - deposit",
+ "04 - denomination load"),
+ PERF_TALER_MINTDB_INIT_CMD_COMMIT_TRANSACTION ("04 - commit transaction"),
+ PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY ("04 - deposit array",
+ "04 - deposit init loop",
+ "04 - deposit",
+ NB_DEPOSIT_SAVE),
+ PERF_TALER_MINTDB_INIT_CMD_END_LOOP ("04 - deposit init loop end",
+ "04 - deposit init loop"),
+ PERF_TALER_MINTDB_INIT_CMD_GET_TIME ("04 - time stop"),
+ PERF_TALER_MINTDB_INIT_CMD_GAUGER ("04 - gauger",
+ "04 - time start",
+ "04 - time stop",
+ "time to insert a deposit",
+ "deposit/sec",
+ NB_DEPOSIT_SAVE),
+ PERF_TALER_MINTDB_INIT_CMD_DEBUG ("04 - deposit init complete"),
+ // End of deposit initialization
+ PERF_TALER_MINTDB_INIT_CMD_END ("end"),
+ };
+
+ ret = PERF_TALER_MINTDB_run_benchmark ("perf-taler-mintdb",
+ "./test-mint-db-postgres.conf",
+ init,
+ benchmark);
+
+ if (GNUNET_SYSERR != ret)
+ return 1;
+ return 0;
+}