aboutsummaryrefslogtreecommitdiff
path: root/src/exchangedb/perf_taler_exchangedb.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/perf_taler_exchangedb.c')
-rw-r--r--src/exchangedb/perf_taler_exchangedb.c382
1 files changed, 0 insertions, 382 deletions
diff --git a/src/exchangedb/perf_taler_exchangedb.c b/src/exchangedb/perf_taler_exchangedb.c
deleted file mode 100644
index 64fde0c1d..000000000
--- a/src/exchangedb/perf_taler_exchangedb.c
+++ /dev/null
@@ -1,382 +0,0 @@
1/*
2 This file is part of TALER
3 Copyright (C) 2014-2018 Taler Systems SA
4
5 TALER is free software; you can redistribute it and/or modify it under the
6 terms of the GNU General Public License as published by the Free Software
7 Foundation; either version 3, or (at your option) any later version.
8
9 TALER is distributed in the hope that it will be useful, but WITHOUT ANY
10 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13 You should have received a copy of the GNU General Public License along with
14 TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
15 */
16/**
17 * @file exchangedb/perf_taler_exchangedb.c
18 * @brief Exchange database performance analysis
19 * @author Nicolas Fournier
20 * @author Christian Grothoff
21 */
22#include "platform.h"
23#include "perf_taler_exchangedb_interpreter.h"
24
25
26#define NB_DENOMINATION_INIT 15
27#define NB_DENOMINATION_SAVE 15
28
29#define SMALL 1000
30#define BIG 10000
31#define BIGGER 100000
32
33#define NB_RESERVE_INIT BIGGER
34#define NB_RESERVE_SAVE BIG
35
36#define NB_DEPOSIT_INIT BIGGER
37#define NB_DEPOSIT_SAVE BIG
38
39#define NB_WITHDRAW_INIT BIGGER
40#define NB_WITHDRAW_SAVE BIG
41
42#define NB_REFRESH_INIT BIGGER
43#define NB_REFRESH_SAVE BIG
44
45#define NB_MELT_INIT BIG
46#define NB_MELT_SAVE SMALL
47
48/**
49 * Runs the performances tests for the exchange database
50 * and logs the results using Gauger
51 */
52int
53main (int argc, char **argv)
54{
55 int ret;
56 struct PERF_TALER_EXCHANGEDB_Cmd benchmark[] = {
57 /* Denomination used to create coins */
58 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("Initializing database"),
59
60 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("01 - denomination loop",
61 NB_DENOMINATION_INIT),
62 PERF_TALER_EXCHANGEDB_INIT_CMD_START_TRANSACTION (""),
63 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_DENOMINATION ("01 - denomination"),
64 PERF_TALER_EXCHANGEDB_INIT_CMD_INSERT_DENOMINATION ("01 - insert",
65 "01 - denomination"),
66 PERF_TALER_EXCHANGEDB_INIT_CMD_COMMIT_TRANSACTION (""),
67 PERF_TALER_EXCHANGEDB_INIT_CMD_SAVE_ARRAY ("01 - save denomination",
68 "01 - denomination loop",
69 "01 - denomination",
70 NB_DENOMINATION_SAVE),
71 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("01 - end",
72 "01 - denomination loop"),
73 /* End of initialization */
74 /* Reserve initialization */
75 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("02 - init reserve loop",
76 NB_RESERVE_INIT),
77 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_RESERVE ("02 - reserve"),
78 PERF_TALER_EXCHANGEDB_INIT_CMD_INSERT_RESERVE ("02 - insert",
79 "02 - reserve"),
80 PERF_TALER_EXCHANGEDB_INIT_CMD_SAVE_ARRAY ("02 - save reserve",
81 "02 - init reserve loop",
82 "02 - reserve",
83 NB_RESERVE_SAVE),
84 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("02 - end",
85 "02 - init reserve loop"),
86 /* End reserve init */
87 /* Withdrawal initialization */
88 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("03 - init withdraw loop",
89 NB_WITHDRAW_INIT),
90 PERF_TALER_EXCHANGEDB_INIT_CMD_START_TRANSACTION (""),
91 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("03 - denomination load",
92 "03 - init withdraw loop",
93 "01 - save denomination"),
94 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("03 - reserve load",
95 "03 - init withdraw loop",
96 "02 - save reserve"),
97 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_WITHDRAW ("03 - withdraw",
98 "03 - denomination load",
99 "03 - reserve load"),
100 PERF_TALER_EXCHANGEDB_INIT_CMD_INSERT_WITHDRAW ("03 - insert",
101 "03 - withdraw"),
102 PERF_TALER_EXCHANGEDB_INIT_CMD_COMMIT_TRANSACTION (""),
103 PERF_TALER_EXCHANGEDB_INIT_CMD_SAVE_ARRAY ("03 - save coin",
104 "03 - init withdraw loop",
105 "03 - withdraw",
106 NB_WITHDRAW_SAVE),
107 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("03 - end",
108 "03 - init withdraw loop"),
109 /*End of withdrawal initialization */
110 /*Deposit initialization */
111 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("04 - deposit init loop",
112 NB_DEPOSIT_INIT),
113 PERF_TALER_EXCHANGEDB_INIT_CMD_START_TRANSACTION (""),
114 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("04 - coin load",
115 "04 - deposit init loop",
116 "03 - save coin"),
117 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_DEPOSIT ("04 - deposit",
118 "04 - coin load"),
119 PERF_TALER_EXCHANGEDB_INIT_CMD_INSERT_DEPOSIT ("04 - insert",
120 "04 - deposit"),
121 PERF_TALER_EXCHANGEDB_INIT_CMD_COMMIT_TRANSACTION (""),
122 PERF_TALER_EXCHANGEDB_INIT_CMD_SAVE_ARRAY ("04 - deposit array",
123 "04 - deposit init loop",
124 "04 - deposit",
125 NB_DEPOSIT_SAVE),
126 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
127 "04 - deposit init loop"),
128 /* End of deposit initialization */
129 /* Session initialization */
130 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("05 - refresh session init loop",
131 NB_REFRESH_INIT),
132 PERF_TALER_EXCHANGEDB_INIT_CMD_START_TRANSACTION (""),
133 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("05 - denomination load",
134 "05 - refresh session init loop",
135 "01 - save denomination"),
136 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("05 - reserve load",
137 "05 - refresh session init loop",
138 "02 - save reserve"),
139 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_WITHDRAW ("05 - withdraw",
140 "05 - denomination load",
141 "05 - reserve load"),
142 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_REFRESH_SESSION (
143 "05 - refresh session",
144 "05 - withdraw"),
145 PERF_TALER_EXCHANGEDB_INIT_CMD_SAVE_ARRAY ("05 - session array",
146 "05 - refresh session init loop",
147 "05 - refresh session",
148 NB_RESERVE_SAVE),
149 PERF_TALER_EXCHANGEDB_INIT_CMD_COMMIT_TRANSACTION (""),
150 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("05 - end",
151 "05 - refresh session init loop"),
152 /* End of refresh session initialization */
153 /* Refresh melt initialization */
154 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("06 - refresh melt init loop",
155 NB_MELT_INIT),
156 PERF_TALER_EXCHANGEDB_INIT_CMD_START_TRANSACTION (""),
157 /* TODO: initialize using coins & sessions created localy
158 * in order to make sure the same coin are not melted twice*/
159 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("06 - session hash",
160 "06 - refresh melt init loop",
161 "05 - session array"),
162 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("06 - coin",
163 "06 - refresh melt init loop",
164 "03 - save coin"),
165 PERF_TALER_EXCHANGEDB_INIT_CMD_COMMIT_TRANSACTION (""),
166 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("06 - end",
167 "06 - refresh melt init loop"),
168 /* End of refresh melt initialization */
169 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of initialization"),
170
171 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("Start of performances measuring"),
172 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("21 - start"),
173 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("21 - reserve insert measure",
174 NB_RESERVE_SAVE),
175 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_RESERVE ("21 - reserve"),
176 PERF_TALER_EXCHANGEDB_INIT_CMD_INSERT_RESERVE ("21 - insert",
177 "21 - reserve"),
178 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
179 "21 - reserve insert measure"),
180 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("21 - stop"),
181 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("21 - gauger",
182 "21 - start",
183 "21 - stop",
184 "POSTGRES",
185 "Number of reserve inserted per second",
186 "item/sec",
187 NB_RESERVE_SAVE),
188 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of reserve insertion"),
189
190 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("22 - start"),
191 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("22 - reserve load measure",
192 NB_RESERVE_SAVE),
193 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("22 - reserve",
194 "22 - reserve load measure",
195 "02 - save reserve"),
196 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_RESERVE ("22 - get",
197 "22 - reserve"),
198 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
199 "22 - reserve load measure"),
200 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("22 - stop"),
201 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
202 "22 - start",
203 "22 - stop",
204 "POSTGRES",
205 "Number of reserve loaded per second",
206 "item/sec",
207 NB_RESERVE_SAVE),
208 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of reserve retreival"),
209
210 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("23 - start"),
211 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("23 - reserve history measure",
212 NB_RESERVE_SAVE),
213 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("23 - reserve",
214 "23 - reserve history measure",
215 "02 - save reserve"),
216 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_RESERVE_HISTORY ("",
217 "23 - reserve"),
218 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
219 "23 - reserve history measure"),
220 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("23 - stop"),
221 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
222 "23 - start",
223 "23 - stop",
224 "POSTGRES",
225 "Number of reserve history loaded per second",
226 "item/sec",
227 NB_RESERVE_SAVE),
228 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of reserve history access"),
229
230
231 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("24 - start"),
232 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("24 - withdraw insert measure",
233 NB_WITHDRAW_SAVE),
234 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("24 - reserve",
235 "24 - withdraw insert measure",
236 "02 - save reserve"),
237 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("24 - denomination",
238 "24 - withdraw insert measure",
239 "01 - save denomination"),
240 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_WITHDRAW ("24 - withdraw",
241 "24 - denomination",
242 "24 - reserve"),
243 PERF_TALER_EXCHANGEDB_INIT_CMD_INSERT_WITHDRAW ("24 - insert",
244 "24 - withdraw"),
245 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
246 "24 - withdraw insert measure"),
247 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("24 - stop"),
248 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
249 "24 - start",
250 "24 - stop",
251 "POSTGRES",
252 "Number of withdraw insert per second",
253 "item/sec",
254 NB_WITHDRAW_SAVE),
255 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of withdraw insertion"),
256
257 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("25 - start"),
258 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("25 - withdraw insert measure",
259 NB_RESERVE_SAVE),
260 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("25 - coin",
261 "25 - withdraw insert measure",
262 "03 - save coin"),
263 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_WITHDRAW ("",
264 "25 - coin"),
265 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
266 "25 - withdraw insert measure"),
267 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("25 - stop"),
268 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
269 "25 - start",
270 "25 - stop",
271 "POSTGRES",
272 "Number of withdraw loaded per second",
273 "item/sec",
274 NB_RESERVE_SAVE),
275 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of withdraw loading"),
276
277 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("26 - start"),
278 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("26 - get coin transaction",
279 NB_WITHDRAW_SAVE),
280 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("26 - coin",
281 "26 - get coin transaction",
282 "03 - save coin"),
283 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_COIN_TRANSACTION ("",
284 "26 - coin"),
285 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
286 "26 - get coin transaction"),
287 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("26 - end"),
288 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
289 "26 - start",
290 "26 - end",
291 "POSTGRES",
292 "Number of coin transaction history loaded per second",
293 "item/sec",
294 NB_WITHDRAW_SAVE),
295 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of transaction loading"),
296
297 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("27 - start"),
298 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("27 - /reserve/withdraw",
299 NB_WITHDRAW_SAVE),
300 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("27 - reserve",
301 "27 - /reserve/withdraw",
302 "02 - save reserve"),
303 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("27 - dki",
304 "27 - /reserve/withdraw",
305 "01 - save denomination"),
306 PERF_TALER_EXCHANGEDB_INIT_CMD_WITHDRAW_SIGN ("",
307 "27 - dki",
308 "27 - reserve"),
309 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
310 "27 - /reserve/withdraw"),
311 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("27 - end"),
312 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
313 "27 - start",
314 "27 - end",
315 "POSTGRES",
316 "Number of /reserve/withdraw per second",
317 "item/sec",
318 NB_WITHDRAW_SAVE),
319 PERF_TALER_EXCHANGEDB_INIT_CMD_DEBUG ("End of /reserve/withdraw"),
320
321 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("28 - start"),
322 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("28 - /deposit",
323 NB_DEPOSIT_SAVE),
324 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("28 - coin",
325 "28 - /deposit",
326 "03 - save coin"),
327 PERF_TALER_EXCHANGEDB_INIT_CMD_DEPOSIT ("28 - deposit",
328 "28 - coin"),
329 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
330 "28 - /deposit"),
331 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("28 - stop"),
332 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
333 "28 - start",
334 "28 - stop",
335 "POSTGRES",
336 "Number of /deposit per second",
337 "item/sec",
338 NB_DEPOSIT_SAVE),
339 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("29 - start"),
340 PERF_TALER_EXCHANGEDB_INIT_CMD_LOOP ("29 - insert refresh session",
341 NB_REFRESH_SAVE),
342 PERF_TALER_EXCHANGEDB_INIT_CMD_START_TRANSACTION (""),
343 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("29 - denomination load",
344 "29 - insert refresh session",
345 "01 - save denomination"),
346 PERF_TALER_EXCHANGEDB_INIT_CMD_LOAD_ARRAY ("29 - reserve load",
347 "29 - insert refresh session",
348 "02 - save reserve"),
349 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_WITHDRAW ("29 - withdraw",
350 "29 - denomination load",
351 "29 - reserve load"),
352 PERF_TALER_EXCHANGEDB_INIT_CMD_CREATE_REFRESH_SESSION (
353 "29 - refresh session",
354 "29 - withdraw"),
355 PERF_TALER_EXCHANGEDB_INIT_CMD_SAVE_ARRAY ("29 - session array",
356 "29 - insert refresh session",
357 "29 - refresh session",
358 NB_RESERVE_SAVE),
359 PERF_TALER_EXCHANGEDB_INIT_CMD_COMMIT_TRANSACTION (""),
360 PERF_TALER_EXCHANGEDB_INIT_CMD_END_LOOP ("",
361 "29 - insert refresh session"),
362 PERF_TALER_EXCHANGEDB_INIT_CMD_GET_TIME ("29 - stop"),
363 PERF_TALER_EXCHANGEDB_INIT_CMD_GAUGER ("",
364 "29 - start",
365 "29 - stop",
366 "POSTGRES",
367 "Number of refresh session inserted per second",
368 "item/sec",
369 NB_REFRESH_SAVE),
370 PERF_TALER_EXCHANGEDB_INIT_CMD_END (""),
371 };
372
373 ret = PERF_TALER_EXCHANGEDB_run_benchmark (
374 "perf-taler-exchangedb",
375 "./test-exchange-db-postgres.conf",
376 (struct PERF_TALER_EXCHANGEDB_Cmd []) {PERF_TALER_EXCHANGEDB_INIT_CMD_END (
377 "")},
378 benchmark);
379 if (GNUNET_SYSERR == ret)
380 return 1;
381 return 0;
382}