gnunet-svn
[Top][All Lists]
Advanced

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

[taler-sync] branch master updated: add skeleton for test


From: gnunet
Subject: [taler-sync] branch master updated: add skeleton for test
Date: Mon, 25 Nov 2019 15:33:55 +0100

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

grothoff pushed a commit to branch master
in repository sync.

The following commit(s) were added to refs/heads/master by this push:
     new 44c3164  add skeleton for test
44c3164 is described below

commit 44c31640ea5d46446fa4425179a76a367264be97
Author: Christian Grothoff <address@hidden>
AuthorDate: Mon Nov 25 15:33:52 2019 +0100

    add skeleton for test
---
 src/include/sync_testing_lib.h                     |  74 +++++
 src/lib/Makefile.am                                |  22 +-
 src/lib/test_sync_api.c                            | 321 +++++++++++++++++++++
 src/lib/test_sync_api.conf                         | 283 ++++++++++++++++++
 .../.config/taler/exchange/account-2.json          |   5 +
 .../.config/taler/merchant/account-3.json          |   1 +
 .../.config/taler/merchant/default.priv            |   1 +
 .../.config/taler/merchant/dtip.priv               |   1 +
 .../.config/taler/merchant/nulltip.priv            |   2 +
 .../.config/taler/merchant/reserve/dtip.priv       | Bin 0 -> 32 bytes
 .../.config/taler/merchant/reserve/nulltip.priv    |   1 +
 .../.config/taler/merchant/reserve/tip.priv        |   1 +
 .../.config/taler/merchant/tip.priv                |   1 +
 .../.config/taler/merchant/tor.priv                |   1 +
 .../.config/taler/merchant/wire/test.json          |   5 +
 src/lib/test_sync_api_home/.config/taler/test.json |   8 +
 .../share/taler/auditor/offline-keys/auditor.priv  |   2 +
 .../.local/share/taler/auditors/auditor.out        | Bin 0 -> 42328 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1574546726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575151226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575755726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576360226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576964726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1577569226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578173726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578778226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579382726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579987226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1580591726000000 | Bin 0 -> 1089 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581196226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581800726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1582405226000000 | Bin 0 -> 1089 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583009726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583614226000000 | Bin 0 -> 1089 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584218726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584823226000000 | Bin 0 -> 1089 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1585427726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586032226000000 | Bin 0 -> 1089 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586636726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587241226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587845726000000 | Bin 0 -> 1089 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1588450226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589054726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589659226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590263726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590868226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1591472726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592077226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592681726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593286226000000 | Bin 0 -> 1088 bytes
 .../EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593890726000000 | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1574546726000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1575151226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1575755726000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1576360226000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1576964726000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1577569226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1578173726000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1578778226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1579382726000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1579987226000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1580591726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1581196226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1581800726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1582405226000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1583009726000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1583614226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1584218726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1584823226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1585427726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1586032226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1586636726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1587241226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1587845726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1588450226000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1589054726000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1589659226000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1590263726000000  | Bin 0 -> 1087 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1590868226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1591472726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1592077226000000  | Bin 0 -> 1088 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1592681726000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1593286226000000  | Bin 0 -> 1089 bytes
 .../EUR_0_1-V0HADRAEFKQ3N2YN2720/1593890726000000  | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1574546726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1575151226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1575755726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1576360226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1576964726000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1577569226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1578173726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1578778226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1579382726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1579987226000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1580591726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1581196226000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1581800726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1582405226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1583009726000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1583614226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1584218726000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1584823226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1585427726000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1586032226000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1586636726000000    | Bin 0 -> 1087 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1587241226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1587845726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1588450226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1589054726000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1589659226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1590263726000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1590868226000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1591472726000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1592077226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1592681726000000    | Bin 0 -> 1089 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1593286226000000    | Bin 0 -> 1088 bytes
 .../EUR_1-9EJZYC2VQ92ZY19Z3F71/1593890726000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1574546726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1575151226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1575755726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1576360226000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1576964726000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1577569226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1578173726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1578778226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1579382726000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1579987226000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1580591726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1581196226000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1581800726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1582405226000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1583009726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1583614226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1584218726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1584823226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1585427726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1586032226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1586636726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1587241226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1587845726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1588450226000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1589054726000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1589659226000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1590263726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1590868226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1591472726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1592077226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1592681726000000    | Bin 0 -> 1088 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1593286226000000    | Bin 0 -> 1089 bytes
 .../EUR_5-5JB5S1XBPG62JD2PTYWT/1593890726000000    | Bin 0 -> 1088 bytes
 .../exchange/live-keys/signkeys/1574546726000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1576965926000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1579385126000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1581804326000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1584223526000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1586642726000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1589061926000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1591481126000000   | Bin 0 -> 192 bytes
 .../exchange/live-keys/signkeys/1593900326000000   | Bin 0 -> 192 bytes
 .../share/taler/exchange/offline-keys/master.priv  |   1 +
 .../share/taler/exchange/wirefees/x-taler-bank.fee | Bin 0 -> 800 bytes
 .../.local/share/taler/merchant/merchant.priv      |   1 +
 src/lib/testing_api_cmd_backup_download.c          | 171 +++++++++++
 src/lib/testing_api_cmd_backup_upload.c            | 188 ++++++++++++
 src/lib/testing_api_helpers.c                      | 198 +++++++++++++
 165 files changed, 1287 insertions(+), 1 deletion(-)

diff --git a/src/include/sync_testing_lib.h b/src/include/sync_testing_lib.h
new file mode 100644
index 0000000..2fd32c1
--- /dev/null
+++ b/src/include/sync_testing_lib.h
@@ -0,0 +1,74 @@
+/*
+  This file is part of TALER
+  (C) 2018, 2019 Taler Systems SA
+
+  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 include/sync_testing_lib.h
+ * @brief API for writing an interpreter to test SYNC components
+ * @author Christian Grothoff <address@hidden>
+ */
+#ifndef SYNC_TESTING_LIB_H
+#define SYNC_TESTING_LIB_H
+
+#include "sync_service.h"
+#include <gnunet/gnunet_json_lib.h>
+#include <microhttpd.h>
+
+
+/**
+ * Start the sync backend process.  Assume the port
+ * is available and the database is clean.  Use the "prepare
+ * sync" function to do such tasks.
+ *
+ * @param config_filename configuration filename.
+ *
+ * @return the process, or NULL if the process could not
+ *         be started.
+ */
+struct GNUNET_OS_Process *
+TALER_TESTING_run_sync (const char *config_filename,
+                        const char *sync_url);
+
+
+/**
+ * Prepare the sync execution.  Create tables and check if
+ * the port is available.
+ *
+ * @param config_filename configuration filename.
+ * @return the base url, or NULL upon errors.  Must be freed
+ *         by the caller.
+ */
+char *
+TALER_TESTING_prepare_sync (const char *config_filename);
+
+
+/**
+ * Make the "backup download" command.
+ *
+ * @param label command label
+ * @param sync_url base URL of the sync serving
+ *        the policy store request.
+ * @param http_status expected HTTP status.
+ * @param upload_ref reference to upload command
+ * @return the command
+ */
+struct TALER_TESTING_Command
+SYNC_TESTING_cmd_backup_download (const char *label,
+                                  const char *sync_url,
+                                  unsigned int http_status,
+                                  const char *upload_ref);
+#endif
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index ed0a61e..1462eb5 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -7,7 +7,8 @@ if USE_COVERAGE
 endif
 
 lib_LTLIBRARIES = \
-  libsync.la
+  libsync.la \
+  libsynctesting.la
 
 libsync_la_LDFLAGS = \
   -version-info 0:0:0 \
@@ -25,6 +26,25 @@ libsync_la_LIBADD = \
   -ljansson \
   $(XLIB)
 
+libsynctesting_la_LDFLAGS = \
+  -version-info 0:0:0 \
+  -no-undefined
+libsynctesting_la_SOURCES = \
+  testing_api_cmd_backup_download.c \
+  testing_api_cmd_backup_upload.c \
+  testing_api_helpers.c
+libsynctesting_la_LIBADD = \
+  libsync.la \
+  -ltalerexchange \
+  -ltalerjson \
+  -ltalerutil \
+  -lgnunetcurl \
+  -lgnunetjson \
+  -lgnunetutil \
+  -ljansson \
+  -ltalertesting \
+  $(XLIB)
+
 if HAVE_LIBCURL
 libsync_la_LIBADD += -lcurl
 else
diff --git a/src/lib/test_sync_api.c b/src/lib/test_sync_api.c
new file mode 100644
index 0000000..854e7b1
--- /dev/null
+++ b/src/lib/test_sync_api.c
@@ -0,0 +1,321 @@
+/*
+  This file is part of TALER
+  Copyright (C) 2014-2019 Taler Systems SA
+
+  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 lib/test_sync_api.c
+ * @brief testcase to test sync's HTTP API interface
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include <taler/taler_util.h>
+#include <taler/taler_signatures.h>
+#include <taler/taler_exchange_service.h>
+#include <taler/taler_json_lib.h>
+#include <gnunet/gnunet_util_lib.h>
+#include <microhttpd.h>
+#include <taler/taler_bank_service.h>
+#include <taler/taler_fakebank_lib.h>
+#include <taler/taler_testing_lib.h>
+#include <taler/taler_error_codes.h>
+#include "sync_service.h"
+#include "sync_testing_lib.h"
+
+/**
+ * Configuration file we use.  One (big) configuration is used
+ * for the various components for this test.
+ */
+#define CONFIG_FILE "test_sync_api.conf"
+
+/**
+ * Exchange base URL.  Could also be taken from config.
+ */
+#define EXCHANGE_URL "http://localhost:8081/";
+
+static const char *pickup_amounts_1[] = {"EUR:5", NULL};
+
+/**
+ * URL of the fakebank.
+ */
+static char *fakebank_url;
+
+/**
+ * Merchant base URL.
+ */
+static char *merchant_url;
+
+/**
+ * Sync base URL.
+ */
+static char *sync_url;
+
+/**
+ * Merchant process.
+ */
+static struct GNUNET_OS_Process *merchantd;
+
+/**
+ * Sync-httpd process.
+ */
+static struct GNUNET_OS_Process *syncd;
+
+/**
+ * Exchange base URL.
+ */
+static char *exchange_url;
+
+/**
+ * Auditor base URL; only used to fix FTBFS.
+ */
+static char *auditor_url;
+
+/**
+ * Account number of the exchange at the bank.
+ */
+#define EXCHANGE_ACCOUNT_NO 2
+
+/**
+ * Account number of some user.
+ */
+#define USER_ACCOUNT_NO 62
+
+/**
+ * Account number used by the merchant
+ */
+#define MERCHANT_ACCOUNT_NO 3
+
+/**
+ * User name. Never checked by fakebank.
+ */
+#define USER_LOGIN_NAME "user42"
+
+/**
+ * User password. Never checked by fakebank.
+ */
+#define USER_LOGIN_PASS "pass42"
+
+/**
+ * Execute the taler-exchange-wirewatch command with
+ * our configuration file.
+ *
+ * @param label label to use for the command.
+ */
+#define CMD_EXEC_WIREWATCH(label) \
+  TALER_TESTING_cmd_exec_wirewatch (label, CONFIG_FILE)
+
+/**
+ * Execute the taler-exchange-aggregator command with
+ * our configuration file.
+ *
+ * @param label label to use for the command.
+ */
+#define CMD_EXEC_AGGREGATOR(label) \
+  TALER_TESTING_cmd_exec_aggregator (label, CONFIG_FILE)
+
+/**
+ * Run wire transfer of funds from some user's account to the
+ * exchange.
+ *
+ * @param label label to use for the command.
+ * @param amount amount to transfer, i.e. "EUR:1"
+ * @param url exchange_url
+ */
+#define CMD_TRANSFER_TO_EXCHANGE(label,amount) \
+  TALER_TESTING_cmd_fakebank_transfer (label, amount, \
+                                       fakebank_url, USER_ACCOUNT_NO, \
+                                       EXCHANGE_ACCOUNT_NO, \
+                                       USER_LOGIN_NAME, USER_LOGIN_PASS, \
+                                       EXCHANGE_URL)
+
+/**
+ * Run wire transfer of funds from some user's account to the
+ * exchange.
+ *
+ * @param label label to use for the command.
+ * @param amount amount to transfer, i.e. "EUR:1"
+ */
+#define CMD_TRANSFER_TO_EXCHANGE_SUBJECT(label,amount,subject) \
+  TALER_TESTING_cmd_fakebank_transfer_with_subject \
+    (label, amount, fakebank_url, USER_ACCOUNT_NO, \
+    EXCHANGE_ACCOUNT_NO, USER_LOGIN_NAME, USER_LOGIN_PASS, \
+    subject)
+
+
+static struct GNUNET_CONTAINER_MultiHashMap *interned_strings;
+
+static const char *
+intern (const char *str)
+{
+  struct GNUNET_HashCode hash;
+  const char *hs;
+
+  if (NULL == interned_strings)
+    interned_strings = GNUNET_CONTAINER_multihashmap_create (32, GNUNET_NO);
+  GNUNET_assert (NULL != interned_strings);
+  GNUNET_CRYPTO_hash (str, strlen (str), &hash);
+  hs = GNUNET_CONTAINER_multihashmap_get (interned_strings, &hash);
+  if (NULL != hs)
+    return hs;
+  hs = GNUNET_strdup (str);
+  GNUNET_assert (GNUNET_OK == GNUNET_CONTAINER_multihashmap_put (
+                   interned_strings,
+                   &hash,
+                   (void *) hs,
+                   GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
+  return hs;
+}
+
+
+#define BUF_SZ 512
+
+static const char *
+merchant_url_internal (const char *instance_id)
+{
+  char buf[BUF_SZ];
+  if (NULL == instance_id)
+    GNUNET_assert (0 < snprintf (buf, BUF_SZ, "%s", merchant_url));
+  else
+    GNUNET_assert (0 < snprintf (buf, BUF_SZ, "%sinstances/%s/", merchant_url,
+                                 instance_id));
+  return intern (buf);
+}
+
+
+static const char *
+merchant_url_external (const char *instance_id)
+{
+  char buf[BUF_SZ];
+  if (NULL == instance_id)
+    GNUNET_assert (0 < snprintf (buf, BUF_SZ, "%spublic/", merchant_url));
+  else
+    GNUNET_assert (0 < snprintf (buf, BUF_SZ, "%spublic/instances/%s/",
+                                 merchant_url, instance_id));
+  return intern (buf);
+}
+
+
+/**
+ * Main function that will tell the interpreter what commands to
+ * run.
+ *
+ * @param cls closure
+ */
+static void
+run (void *cls,
+     struct TALER_TESTING_Interpreter *is)
+{
+  struct TALER_TESTING_Command commands[] = {
+    /**
+     * Move money to the exchange's bank account.
+     */
+    CMD_TRANSFER_TO_EXCHANGE ("create-reserve-1",
+                              "EUR:10.02"),
+    /**
+     * Make a reserve exist, according to the previous
+     * transfer.
+     */
+    CMD_EXEC_WIREWATCH ("wirewatch-1"),
+    TALER_TESTING_cmd_withdraw_amount
+      ("withdraw-coin-1",
+      "create-reserve-1",
+      "EUR:5",
+      MHD_HTTP_OK),
+    TALER_TESTING_cmd_withdraw_amount
+      ("withdraw-coin-2",
+      "create-reserve-1",
+      "EUR:5",
+      MHD_HTTP_OK),
+
+    TALER_TESTING_cmd_end ()
+  };
+
+  TALER_TESTING_run_with_fakebank (is,
+                                   commands,
+                                   fakebank_url);
+}
+
+int
+main (int argc,
+      char *const *argv)
+{
+  unsigned int ret;
+  /* These environment variables get in the way... */
+  unsetenv ("XDG_DATA_HOME");
+  unsetenv ("XDG_CONFIG_HOME");
+
+  GNUNET_log_setup ("test-sync-api",
+                    "DEBUG",
+                    NULL);
+  if (NULL ==
+      (fakebank_url = TALER_TESTING_prepare_fakebank
+                        (CONFIG_FILE,
+                        "account-exchange")))
+    return 77;
+  if (NULL ==
+      (merchant_url = TALER_TESTING_prepare_merchant (CONFIG_FILE)))
+    return 77;
+
+  if (NULL ==
+      (sync_url = TALER_TESTING_prepare_sync (CONFIG_FILE)))
+    return 77;
+
+  TALER_TESTING_cleanup_files (CONFIG_FILE);
+
+  switch (TALER_TESTING_prepare_exchange (CONFIG_FILE,
+                                          &auditor_url,
+                                          &exchange_url))
+  {
+  case GNUNET_SYSERR:
+    GNUNET_break (0);
+    return 1;
+  case GNUNET_NO:
+    return 77;
+
+  case GNUNET_OK:
+
+    if (NULL == (merchantd =
+                   TALER_TESTING_run_merchant (CONFIG_FILE, merchant_url)))
+      return 1;
+
+    if (NULL == (syncd =
+                   TALER_TESTING_run_sync (CONFIG_FILE, sync_url)))
+      return 1;
+
+    ret = TALER_TESTING_setup_with_exchange (&run,
+                                             NULL,
+                                             CONFIG_FILE);
+
+    GNUNET_OS_process_kill (merchantd, SIGTERM);
+    GNUNET_OS_process_kill (syncd, SIGTERM);
+    GNUNET_OS_process_wait (merchantd);
+    GNUNET_OS_process_wait (syncd);
+    GNUNET_OS_process_destroy (merchantd);
+    GNUNET_OS_process_destroy (syncd);
+    GNUNET_free (merchant_url);
+    GNUNET_free (sync_url);
+
+    if (GNUNET_OK != ret)
+      return 1;
+    break;
+  default:
+    GNUNET_break (0);
+    return 1;
+  }
+  return 0;
+}
+
+/* end of test_sync_api.c */
diff --git a/src/lib/test_sync_api.conf b/src/lib/test_sync_api.conf
new file mode 100644
index 0000000..c8e206e
--- /dev/null
+++ b/src/lib/test_sync_api.conf
@@ -0,0 +1,283 @@
+# This file is in the public domain.
+#
+[PATHS]
+# Persistant data storage for the testcase
+TALER_TEST_HOME = test_sync_api_home/
+
+
+[taler]
+# What currency do we use?
+CURRENCY = EUR
+
+##########################################
+# Configuration for the merchant backend #
+##########################################
+
+[test]
+INSTANCES = default tor
+
+[merchant]
+
+# Which port do we run the backend on? (HTTP server)
+PORT = 8080
+
+# How quickly do we want the exchange to send us our money?
+# Used only if the frontend does not specify a value.
+WIRE_TRANSFER_DELAY = 0 s
+
+# Which plugin (backend) do we use for the DB.
+DB = postgres
+
+# Default choice for maximum wire fee.
+DEFAULT_MAX_WIRE_FEE = EUR:0.10
+
+# Default choice for maximum deposit fee.
+DEFAULT_MAX_DEPOSIT_FEE = EUR:0.10
+
+
+# This specifies which database the postgres backend uses.
+[merchantdb-postgres]
+CONFIG = postgres:///talercheck
+
+# Different instances operated by this merchant:
+[instance-default]
+KEYFILE = ${TALER_CONFIG_HOME}/merchant/default.priv
+NAME = Kudos Inc.
+
+[instance-tor]
+KEYFILE = ${TALER_CONFIG_HOME}/merchant/tor.priv
+NAME = The Tor Project
+
+
+[instance-tip]
+KEYFILE = ${TALER_CONFIG_HOME}/merchant/tip.priv
+TIP_EXCHANGE = http://localhost:8081/
+TIP_RESERVE_PRIV_FILENAME = ${TALER_CONFIG_HOME}/merchant/reserve/tip.priv
+NAME = Test Tipping Merchant
+
+
+[instance-dtip]
+KEYFILE = ${TALER_CONFIG_HOME}/merchant/dtip.priv
+TIP_EXCHANGE = http://localhost:8081/
+TIP_RESERVE_PRIV_FILENAME = ${TALER_CONFIG_HOME}/merchant/reserve/dtip.priv
+NAME = Test Tipping Merchant 2
+
+[instance-nulltip]
+KEYFILE = ${TALER_CONFIG_HOME}/merchant/nulltip.priv
+TIP_EXCHANGE = http://localhost:8081/
+# This key will NEVER be used to create a reserve, so
+# as to check tip authorization against a non-reserve
+# key.
+TIP_RESERVE_PRIV_FILENAME = ${TALER_CONFIG_HOME}/merchant/reserve/nulltip.priv
+NAME = Test Null-Tipping Merchant
+
+# Account of the MERCHANT
+[account-merchant]
+# What is the merchant's bank account?
+URL = "payto://x-taler-bank/localhost:8082/3"
+
+# This is the *salted* response we give out for /contract requests.
+# File is generated on first use, no need for merchants to generate
+# the salt!
+WIRE_RESPONSE = ${TALER_CONFIG_HOME}/merchant/account-3.json
+
+# Which wire plugin should we used to access the account?
+# (use to validate payto://-URL and for back office)
+PLUGIN = taler_bank
+
+# Authentication information for basic authentication
+TALER_BANK_AUTH_METHOD = "basic"
+USERNAME = user
+PASSWORD = pass
+
+# Accept payments to this account in instance-default
+HONOR_default = YES
+
+# Accept payments to this account in instance-tor
+HONOR_tor = YES
+
+# Accept payments to this account in instance-tip
+HONOR_tip = YES
+
+# Accept payments to this account in instance-dtip
+HONOR_dtip = YES
+
+HONOR_nulltip = YES
+
+# Advertise in new contracts of instance-default
+ACTIVE_default = YES
+
+# Advertise in new contracts of instance-default
+ACTIVE_tor = YES
+
+# Advertise in new contracts of instance-default
+ACTIVE_tip = YES
+
+# Advertise in new contracts of instance-default
+ACTIVE_nulltip = YES
+
+# Sections starting with "exchange-" specify trusted exchanges
+# (by the merchant)
+[exchange-kudos]
+MASTER_KEY = 98NJW3CQHZQGQXTY3K85K531XKPAPAVV4Q5V8PYYRR00NJGZWNVG
+# FIXME: remove next line?
+CURRENCY = KUDOS
+BASE_URL = http://localhost:8081/
+
+# only fixes skips.
+[auditor]
+BASE_URL = http://the.auditor/
+
+# Auditors must be in sections "auditor-", the rest of the section
+# name could be anything.
+[auditor-ezb]
+# Informal name of the auditor. Just for the user.
+NAME = European Central Bank
+
+# URL of the auditor (especially for in the future, when the
+# auditor offers an automated issue reporting system).
+# Not really used today.
+URL = http://taler.ezb.eu/
+
+# This is the important bit: the signing key of the auditor.
+PUBLIC_KEY = 9QXF7XY7E9VPV47B5Z806NDFSX2VJ79SVHHD29QEQ3BG31ANHZ60
+
+# Which currency is this auditor trusted for?
+CURRENCY = EUR
+
+
+###################################################
+# Configuration for the exchange for the testcase #
+###################################################
+
+[exchange_keys]
+
+# how long is one signkey valid?
+signkey_duration = 4 weeks
+
+# how long are the signatures with the signkey valid?
+legal_duration = 2 years
+
+# how long do we generate denomination and signing keys
+# ahead of time?
+lookahead_sign = 32 weeks 1 day
+
+# how long do we provide to clients denomination and signing keys
+# ahead of time?
+lookahead_provide = 4 weeks 1 day
+
+
+[exchange]
+# How to access our database
+DB = postgres
+
+# HTTP port the exchange listens to
+PORT = 8081
+
+# Our public key
+MASTER_PUBLIC_KEY = T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG
+
+# Base URL of the exchange.
+BASE_URL = "http://localhost:8081/";
+
+[exchangedb-postgres]
+CONFIG = "postgres:///talercheck"
+
+[auditordb-postgres]
+CONFIG = postgres:///talercheck
+
+# Account of the EXCHANGE
+[account-exchange]
+# What is the exchange's bank account (with the "Taler Bank" demo system)?
+URL = "payto://x-taler-bank/localhost:8082/2"
+
+# This is the response we give out for the /wire request.  It provides
+# wallets with the bank information for transfers to the exchange.
+WIRE_RESPONSE = ${TALER_CONFIG_HOME}/exchange/account-2.json
+
+# Which wire plugin should we used to access the account?
+PLUGIN = taler_bank
+
+# Authentication information for basic authentication
+TALER_BANK_AUTH_METHOD = "basic"
+USERNAME = user
+PASSWORD = pass
+
+ENABLE_DEBIT = YES
+ENABLE_CREDIT = YES
+
+
+# wire fees
+[fees-x-taler-bank]
+
+# Fees for the forseeable future...
+# If you see this after 2018, update to match the next 10 years...
+WIRE-FEE-2018 = EUR:0.01
+WIRE-FEE-2019 = EUR:0.01
+WIRE-FEE-2020 = EUR:0.01
+WIRE-FEE-2021 = EUR:0.01
+WIRE-FEE-2022 = EUR:0.01
+WIRE-FEE-2023 = EUR:0.01
+WIRE-FEE-2024 = EUR:0.01
+WIRE-FEE-2025 = EUR:0.01
+WIRE-FEE-2026 = EUR:0.01
+WIRE-FEE-2027 = EUR:0.01
+CLOSING-FEE-2018 = EUR:0.01
+CLOSING-FEE-2019 = EUR:0.01
+CLOSING-FEE-2020 = EUR:0.01
+CLOSING-FEE-2021 = EUR:0.01
+CLOSING-FEE-2022 = EUR:0.01
+CLOSING-FEE-2023 = EUR:0.01
+CLOSING-FEE-2024 = EUR:0.01
+CLOSING-FEE-2025 = EUR:0.01
+CLOSING-FEE-2026 = EUR:0.01
+CLOSING-FEE-2027 = EUR:0.01
+
+
+[coin_eur_ct_1]
+value = EUR:0.01
+duration_overlap = 5 minutes
+duration_withdraw = 7 days
+duration_spend = 2 years
+duration_legal = 3 years
+fee_withdraw = EUR:0.00
+fee_deposit = EUR:0.00
+fee_refresh = EUR:0.01
+fee_refund = EUR:0.01
+rsa_keysize = 1024
+
+[coin_eur_ct_10]
+value = EUR:0.10
+duration_overlap = 5 minutes
+duration_withdraw = 7 days
+duration_spend = 2 years
+duration_legal = 3 years
+fee_withdraw = EUR:0.01
+fee_deposit = EUR:0.01
+fee_refresh = EUR:0.03
+fee_refund = EUR:0.01
+rsa_keysize = 1024
+
+[coin_eur_1]
+value = EUR:1
+duration_overlap = 5 minutes
+duration_withdraw = 7 days
+duration_spend = 2 years
+duration_legal = 3 years
+fee_withdraw = EUR:0.01
+fee_deposit = EUR:0.01
+fee_refresh = EUR:0.03
+fee_refund = EUR:0.01
+rsa_keysize = 1024
+
+[coin_eur_5]
+value = EUR:5
+duration_overlap = 5 minutes
+duration_withdraw = 7 days
+duration_spend = 2 years
+duration_legal = 3 years
+fee_withdraw = EUR:0.01
+fee_deposit = EUR:0.01
+fee_refresh = EUR:0.03
+fee_refund = EUR:0.01
+rsa_keysize = 1024
diff --git a/src/lib/test_sync_api_home/.config/taler/exchange/account-2.json 
b/src/lib/test_sync_api_home/.config/taler/exchange/account-2.json
new file mode 100644
index 0000000..737ca76
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/exchange/account-2.json
@@ -0,0 +1,5 @@
+{
+  "url": "payto://x-taler-bank/localhost:8082/2",
+  "master_sig": 
"RDPWNT0CDATHWRY99W7G3E2Y1GYAABTE25J8GHKPGXV07TM89W1502BG5Q82FQY0JR4HSABJC6RG92PA93QGTKWM85W64TE9CCVW63R",
+  "master_pub": "T1VVFQZZARQ1CMF4BN58EE7SKTW5AV2BS18S87ZEGYS4S29J6DNG"
+}
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/account-3.json 
b/src/lib/test_sync_api_home/.config/taler/merchant/account-3.json
new file mode 100644
index 0000000..2b8a81d
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/account-3.json
@@ -0,0 +1 @@
+{"salt":"NEHC5SP52WZRSZR8CTE3SV2JSZX2C1XFSA75YNRT6YJARRR2ERM32PMTHP16CT6TV7G2CX7T3J28YFP0PJP1PAMAQVT6J76RF3AE34R","url":"payto://x-taler-bank/localhost:8082/3"}
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/default.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/default.priv
new file mode 100644
index 0000000..8299ad2
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/default.priv
@@ -0,0 +1 @@
+~�~j�&i�4q���l�BM:ƾ��Oߪ�#
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/dtip.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/dtip.priv
new file mode 100644
index 0000000..ff3842b
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/dtip.priv
@@ -0,0 +1 @@
+�����47%T������ҟ�\�v}�"hP!��.
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/nulltip.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/nulltip.priv
new file mode 100644
index 0000000..db695e5
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/nulltip.priv
@@ -0,0 +1,2 @@
+b���y~�]�m���~��r�1fcT0�4Q�
+ds�
\ No newline at end of file
diff --git 
a/src/lib/test_sync_api_home/.config/taler/merchant/reserve/dtip.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/reserve/dtip.priv
new file mode 100644
index 0000000..c586db1
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.config/taler/merchant/reserve/dtip.priv differ
diff --git 
a/src/lib/test_sync_api_home/.config/taler/merchant/reserve/nulltip.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/reserve/nulltip.priv
new file mode 100644
index 0000000..edf062e
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/reserve/nulltip.priv
@@ -0,0 +1 @@
+Bu#ĜW0�*~����$R��O��������pk
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/reserve/tip.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/reserve/tip.priv
new file mode 100644
index 0000000..5ee3bce
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/reserve/tip.priv
@@ -0,0 +1 @@
+��V���<���g�Jΰ�Xc;�K���i�"
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/tip.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/tip.priv
new file mode 100644
index 0000000..ba92072
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/tip.priv
@@ -0,0 +1 @@
+-�ylx;�b�~2�.�l��8P��ĕ���b�
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/tor.priv 
b/src/lib/test_sync_api_home/.config/taler/merchant/tor.priv
new file mode 100644
index 0000000..5d94c71
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/tor.priv
@@ -0,0 +1 @@
+d�\���2��ȈaK���#�+Nf/Fs�lG��
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.config/taler/merchant/wire/test.json 
b/src/lib/test_sync_api_home/.config/taler/merchant/wire/test.json
new file mode 100644
index 0000000..6898b00
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/merchant/wire/test.json
@@ -0,0 +1,5 @@
+{
+  "type":"test",
+  "bank_url":"http://localhost:8083/";,
+  "account_number":62
+}
diff --git a/src/lib/test_sync_api_home/.config/taler/test.json 
b/src/lib/test_sync_api_home/.config/taler/test.json
new file mode 100644
index 0000000..74cdc92
--- /dev/null
+++ b/src/lib/test_sync_api_home/.config/taler/test.json
@@ -0,0 +1,8 @@
+{
+  "name": "The exchange",
+  "account_number": 3,
+  "bank_url": "http://localhost:8083/";,
+  "salt": 
"6259MV4W9V8D2A75RSGGPKYHQRXRPQZ33EBG263JZRJ6SA5HK0RRKHV70TNA1RVRG77M57CCFVSK2B0EJN3SR8S21F0ZX2MR9DNVG50",
+  "type": "test",
+  "sig": 
"8C3D3J816S29AA2AJ7P9TS6W13KFNFS2RCVYJEWRBNHRRMTTRAWKY7WA1N3G54E4K3XAC2HN6JDHS42TWR5315J34JHHCKV618K221G"
+}
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/auditor/offline-keys/auditor.priv
 
b/src/lib/test_sync_api_home/.local/share/taler/auditor/offline-keys/auditor.priv
new file mode 100644
index 0000000..b2f758b
--- /dev/null
+++ 
b/src/lib/test_sync_api_home/.local/share/taler/auditor/offline-keys/auditor.priv
@@ -0,0 +1,2 @@
+�\z��.�a4q�#*E��x��w�QB
+���
\ No newline at end of file
diff --git a/src/lib/test_sync_api_home/.local/share/taler/auditors/auditor.out 
b/src/lib/test_sync_api_home/.local/share/taler/auditors/auditor.out
new file mode 100644
index 0000000..4d6101f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/auditors/auditor.out differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1574546726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1574546726000000
new file mode 100755
index 0000000..2ceee7a
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1574546726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575151226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575151226000000
new file mode 100755
index 0000000..53e16f9
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575151226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575755726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575755726000000
new file mode 100755
index 0000000..c9ebebf
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1575755726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576360226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576360226000000
new file mode 100755
index 0000000..7094549
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576360226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576964726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576964726000000
new file mode 100755
index 0000000..316360e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1576964726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1577569226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1577569226000000
new file mode 100755
index 0000000..f63c59c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1577569226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578173726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578173726000000
new file mode 100755
index 0000000..659ec79
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578173726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578778226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578778226000000
new file mode 100755
index 0000000..2cfa63e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1578778226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579382726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579382726000000
new file mode 100755
index 0000000..aa8746a
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579382726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579987226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579987226000000
new file mode 100755
index 0000000..7cd5366
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1579987226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1580591726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1580591726000000
new file mode 100755
index 0000000..371f035
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1580591726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581196226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581196226000000
new file mode 100755
index 0000000..182977c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581196226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581800726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581800726000000
new file mode 100755
index 0000000..c4925b2
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1581800726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1582405226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1582405226000000
new file mode 100755
index 0000000..577be10
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1582405226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583009726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583009726000000
new file mode 100755
index 0000000..003f89b
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583009726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583614226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583614226000000
new file mode 100755
index 0000000..cdf770d
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1583614226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584218726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584218726000000
new file mode 100755
index 0000000..153ff65
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584218726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584823226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584823226000000
new file mode 100755
index 0000000..519a931
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1584823226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1585427726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1585427726000000
new file mode 100755
index 0000000..37d4a11
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1585427726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586032226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586032226000000
new file mode 100755
index 0000000..0bddfda
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586032226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586636726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586636726000000
new file mode 100755
index 0000000..f52eae7
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1586636726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587241226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587241226000000
new file mode 100755
index 0000000..646b4a9
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587241226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587845726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587845726000000
new file mode 100755
index 0000000..a808304
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1587845726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1588450226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1588450226000000
new file mode 100755
index 0000000..b780380
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1588450226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589054726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589054726000000
new file mode 100755
index 0000000..593d434
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589054726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589659226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589659226000000
new file mode 100755
index 0000000..ce1901f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1589659226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590263726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590263726000000
new file mode 100755
index 0000000..28cf552
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590263726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590868226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590868226000000
new file mode 100755
index 0000000..fe540ef
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1590868226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1591472726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1591472726000000
new file mode 100755
index 0000000..c4c5d07
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1591472726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592077226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592077226000000
new file mode 100755
index 0000000..22b6d1b
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592077226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592681726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592681726000000
new file mode 100755
index 0000000..8322e25
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1592681726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593286226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593286226000000
new file mode 100755
index 0000000..0c67966
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593286226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593890726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593890726000000
new file mode 100755
index 0000000..b9833ad
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_01-G06NP4M2EJCVJAZ1P5BM/1593890726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1574546726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1574546726000000
new file mode 100755
index 0000000..1811d27
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1574546726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1575151226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1575151226000000
new file mode 100755
index 0000000..f5b2865
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1575151226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1575755726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1575755726000000
new file mode 100755
index 0000000..5bb7a6f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1575755726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1576360226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1576360226000000
new file mode 100755
index 0000000..cded967
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1576360226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1576964726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1576964726000000
new file mode 100755
index 0000000..e516a09
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1576964726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1577569226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1577569226000000
new file mode 100755
index 0000000..8d677de
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1577569226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1578173726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1578173726000000
new file mode 100755
index 0000000..8feb5a3
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1578173726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1578778226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1578778226000000
new file mode 100755
index 0000000..1ec0c29
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1578778226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1579382726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1579382726000000
new file mode 100755
index 0000000..8c24120
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1579382726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1579987226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1579987226000000
new file mode 100755
index 0000000..1d817dc
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1579987226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1580591726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1580591726000000
new file mode 100755
index 0000000..2a33213
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1580591726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1581196226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1581196226000000
new file mode 100755
index 0000000..b415bba
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1581196226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1581800726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1581800726000000
new file mode 100755
index 0000000..4a60eae
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1581800726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1582405226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1582405226000000
new file mode 100755
index 0000000..967be90
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1582405226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1583009726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1583009726000000
new file mode 100755
index 0000000..64275a2
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1583009726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1583614226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1583614226000000
new file mode 100755
index 0000000..531073e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1583614226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1584218726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1584218726000000
new file mode 100755
index 0000000..900098e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1584218726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1584823226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1584823226000000
new file mode 100755
index 0000000..518a03a
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1584823226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1585427726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1585427726000000
new file mode 100755
index 0000000..793e215
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1585427726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1586032226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1586032226000000
new file mode 100755
index 0000000..15af71b
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1586032226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1586636726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1586636726000000
new file mode 100755
index 0000000..9edf366
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1586636726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1587241226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1587241226000000
new file mode 100755
index 0000000..1034fca
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1587241226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1587845726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1587845726000000
new file mode 100755
index 0000000..4a96fb2
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1587845726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1588450226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1588450226000000
new file mode 100755
index 0000000..82408b3
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1588450226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1589054726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1589054726000000
new file mode 100755
index 0000000..5cf7e51
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1589054726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1589659226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1589659226000000
new file mode 100755
index 0000000..74fbf4e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1589659226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1590263726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1590263726000000
new file mode 100755
index 0000000..8392bd3
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1590263726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1590868226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1590868226000000
new file mode 100755
index 0000000..db0671f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1590868226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1591472726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1591472726000000
new file mode 100755
index 0000000..3c9ac0c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1591472726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1592077226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1592077226000000
new file mode 100755
index 0000000..7cdaff2
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1592077226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1592681726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1592681726000000
new file mode 100755
index 0000000..f5ee08f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1592681726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1593286226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1593286226000000
new file mode 100755
index 0000000..f58639c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1593286226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1593890726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1593890726000000
new file mode 100755
index 0000000..5ab78c6
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_0_1-V0HADRAEFKQ3N2YN2720/1593890726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1574546726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1574546726000000
new file mode 100755
index 0000000..8c0f87f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1574546726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1575151226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1575151226000000
new file mode 100755
index 0000000..c95c09b
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1575151226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1575755726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1575755726000000
new file mode 100755
index 0000000..9021e98
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1575755726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1576360226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1576360226000000
new file mode 100755
index 0000000..2c2db96
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1576360226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1576964726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1576964726000000
new file mode 100755
index 0000000..18b6a28
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1576964726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1577569226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1577569226000000
new file mode 100755
index 0000000..68a34a5
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1577569226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1578173726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1578173726000000
new file mode 100755
index 0000000..7e8399d
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1578173726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1578778226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1578778226000000
new file mode 100755
index 0000000..340640c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1578778226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1579382726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1579382726000000
new file mode 100755
index 0000000..55e8e0e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1579382726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1579987226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1579987226000000
new file mode 100755
index 0000000..df1fdde
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1579987226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1580591726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1580591726000000
new file mode 100755
index 0000000..dda4bb6
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1580591726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1581196226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1581196226000000
new file mode 100755
index 0000000..acc86e3
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1581196226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1581800726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1581800726000000
new file mode 100755
index 0000000..341e959
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1581800726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1582405226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1582405226000000
new file mode 100755
index 0000000..9b4e345
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1582405226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1583009726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1583009726000000
new file mode 100755
index 0000000..3bb5560
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1583009726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1583614226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1583614226000000
new file mode 100755
index 0000000..113867a
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1583614226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1584218726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1584218726000000
new file mode 100755
index 0000000..16c2897
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1584218726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1584823226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1584823226000000
new file mode 100755
index 0000000..a7fa3c0
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1584823226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1585427726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1585427726000000
new file mode 100755
index 0000000..5b04ea8
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1585427726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1586032226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1586032226000000
new file mode 100755
index 0000000..593d962
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1586032226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1586636726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1586636726000000
new file mode 100755
index 0000000..83803c0
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1586636726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1587241226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1587241226000000
new file mode 100755
index 0000000..248c8a7
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1587241226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1587845726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1587845726000000
new file mode 100755
index 0000000..4331bd5
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1587845726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1588450226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1588450226000000
new file mode 100755
index 0000000..b3fc98e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1588450226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1589054726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1589054726000000
new file mode 100755
index 0000000..975c12e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1589054726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1589659226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1589659226000000
new file mode 100755
index 0000000..ce0eff9
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1589659226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1590263726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1590263726000000
new file mode 100755
index 0000000..fb0cd9d
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1590263726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1590868226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1590868226000000
new file mode 100755
index 0000000..1d502e7
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1590868226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1591472726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1591472726000000
new file mode 100755
index 0000000..0e09398
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1591472726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1592077226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1592077226000000
new file mode 100755
index 0000000..e3b2fba
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1592077226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1592681726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1592681726000000
new file mode 100755
index 0000000..ca03942
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1592681726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1593286226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1593286226000000
new file mode 100755
index 0000000..ba23d91
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1593286226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1593890726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1593890726000000
new file mode 100755
index 0000000..0582b6c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_1-9EJZYC2VQ92ZY19Z3F71/1593890726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1574546726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1574546726000000
new file mode 100755
index 0000000..a161dc6
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1574546726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1575151226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1575151226000000
new file mode 100755
index 0000000..ed5f349
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1575151226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1575755726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1575755726000000
new file mode 100755
index 0000000..ab6f751
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1575755726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1576360226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1576360226000000
new file mode 100755
index 0000000..50d1039
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1576360226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1576964726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1576964726000000
new file mode 100755
index 0000000..8bb58b2
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1576964726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1577569226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1577569226000000
new file mode 100755
index 0000000..2581617
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1577569226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1578173726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1578173726000000
new file mode 100755
index 0000000..01beec2
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1578173726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1578778226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1578778226000000
new file mode 100755
index 0000000..f750267
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1578778226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1579382726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1579382726000000
new file mode 100755
index 0000000..225d6c3
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1579382726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1579987226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1579987226000000
new file mode 100755
index 0000000..8b3294e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1579987226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1580591726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1580591726000000
new file mode 100755
index 0000000..6a3992e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1580591726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1581196226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1581196226000000
new file mode 100755
index 0000000..7ee74b7
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1581196226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1581800726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1581800726000000
new file mode 100755
index 0000000..1d0017e
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1581800726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1582405226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1582405226000000
new file mode 100755
index 0000000..0740512
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1582405226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1583009726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1583009726000000
new file mode 100755
index 0000000..54ad857
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1583009726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1583614226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1583614226000000
new file mode 100755
index 0000000..5002346
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1583614226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1584218726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1584218726000000
new file mode 100755
index 0000000..d96db72
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1584218726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1584823226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1584823226000000
new file mode 100755
index 0000000..30f419c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1584823226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1585427726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1585427726000000
new file mode 100755
index 0000000..ed69d94
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1585427726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1586032226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1586032226000000
new file mode 100755
index 0000000..d874cc5
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1586032226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1586636726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1586636726000000
new file mode 100755
index 0000000..9b57b70
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1586636726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1587241226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1587241226000000
new file mode 100755
index 0000000..1323f20
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1587241226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1587845726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1587845726000000
new file mode 100755
index 0000000..19639e9
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1587845726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1588450226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1588450226000000
new file mode 100755
index 0000000..1490940
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1588450226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1589054726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1589054726000000
new file mode 100755
index 0000000..3971195
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1589054726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1589659226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1589659226000000
new file mode 100755
index 0000000..f60df60
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1589659226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1590263726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1590263726000000
new file mode 100755
index 0000000..9e2f875
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1590263726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1590868226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1590868226000000
new file mode 100755
index 0000000..352528a
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1590868226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1591472726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1591472726000000
new file mode 100755
index 0000000..759ec88
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1591472726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1592077226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1592077226000000
new file mode 100755
index 0000000..f19cd89
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1592077226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1592681726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1592681726000000
new file mode 100755
index 0000000..f610963
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1592681726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1593286226000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1593286226000000
new file mode 100755
index 0000000..36850e9
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1593286226000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1593890726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1593890726000000
new file mode 100755
index 0000000..bc9225b
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/denomkeys/EUR_5-5JB5S1XBPG62JD2PTYWT/1593890726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1574546726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1574546726000000
new file mode 100644
index 0000000..11e6fa8
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1574546726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1576965926000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1576965926000000
new file mode 100644
index 0000000..8339de3
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1576965926000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1579385126000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1579385126000000
new file mode 100644
index 0000000..e01a266
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1579385126000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1581804326000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1581804326000000
new file mode 100644
index 0000000..5b66de5
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1581804326000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1584223526000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1584223526000000
new file mode 100644
index 0000000..3d68af6
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1584223526000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1586642726000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1586642726000000
new file mode 100644
index 0000000..dc1ab16
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1586642726000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1589061926000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1589061926000000
new file mode 100644
index 0000000..19a1f0f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1589061926000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1591481126000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1591481126000000
new file mode 100644
index 0000000..e8df35c
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1591481126000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1593900326000000
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1593900326000000
new file mode 100644
index 0000000..24c7e88
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/live-keys/signkeys/1593900326000000
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/offline-keys/master.priv
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/offline-keys/master.priv
new file mode 100644
index 0000000..c20942d
--- /dev/null
+++ 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/offline-keys/master.priv
@@ -0,0 +1 @@
+��k;d�_U�}�A.w�"!G��v_m�"_��
\ No newline at end of file
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/exchange/wirefees/x-taler-bank.fee
 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/wirefees/x-taler-bank.fee
new file mode 100644
index 0000000..cc35b6f
Binary files /dev/null and 
b/src/lib/test_sync_api_home/.local/share/taler/exchange/wirefees/x-taler-bank.fee
 differ
diff --git 
a/src/lib/test_sync_api_home/.local/share/taler/merchant/merchant.priv 
b/src/lib/test_sync_api_home/.local/share/taler/merchant/merchant.priv
new file mode 100644
index 0000000..fd6e5f7
--- /dev/null
+++ b/src/lib/test_sync_api_home/.local/share/taler/merchant/merchant.priv
@@ -0,0 +1 @@
+��,�Y%�FF<��R��9ϳ5��v\���k4�6
\ No newline at end of file
diff --git a/src/lib/testing_api_cmd_backup_download.c 
b/src/lib/testing_api_cmd_backup_download.c
new file mode 100644
index 0000000..06e74ce
--- /dev/null
+++ b/src/lib/testing_api_cmd_backup_download.c
@@ -0,0 +1,171 @@
+/*
+  This file is part of SYNC
+  Copyright (C) 2014-2019 Taler Systems SA
+
+  SYNC 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.
+
+  SYNC 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 SYNC; see the file COPYING.  If not, see
+  <http://www.gnu.org/licenses/>
+*/
+/**
+ * @file lib/testing_api_cmd_backup_download.c
+ * @brief command to download data to the sync backend service.
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "sync_service.h"
+#include "sync_testing_lib.h"
+#include <taler/taler_util.h>
+#include <taler/taler_testing_lib.h>
+
+/**
+ * State for a "backup download" CMD.
+ */
+struct BackupDownloadState
+{
+
+  /**
+   * Reference to upload command we expect to download.
+   */
+  const char *upload_reference;
+
+  /**
+   * Expected status code.
+   */
+  unsigned int http_status;
+
+  /**
+   * Eddsa public key.
+   */
+  struct SYNC_AccountPublicKeyP sync_pub;
+
+  /**
+   * The /backups POST operation handle.
+   */
+  struct SYNC_DownloadOperation *download;
+
+  /**
+   * URL of the sync backend.
+   */
+  const char *sync_url;
+
+  /**
+   * The interpreter state.
+   */
+  struct TALER_TESTING_Interpreter *is;
+
+};
+
+
+/**
+ * Function called with the results of a #SYNC_download().
+ *
+ * @param cls closure
+ * @param http_status HTTP status of the request
+ * @param ud details about the download operation
+ */
+static void
+backup_download_cb (void *cls,
+                    unsigned int http_status,
+                    const struct SYNC_DownloadDetails *ud)
+{
+  struct BackupDownloadState *bds = cls;
+
+  // FIXME: next!
+}
+
+
+/**
+ * Run a "backup download" CMD.
+ *
+ * @param cls closure.
+ * @param cmd command currently being run.
+ * @param is interpreter state.
+ */
+static void
+backup_download_run (void *cls,
+                     const struct TALER_TESTING_Command *cmd,
+                     struct TALER_TESTING_Interpreter *is)
+{
+  struct BackupDownloadState *bds = cls;
+
+  bds->is = is;
+  bds->download = SYNC_download (is->ctx,
+                                 bds->sync_url,
+                                 &bds->sync_pub,
+                                 &backup_download_cb,
+                                 bds);
+  if (NULL == bds->download)
+  {
+    // FIMXE: fail!
+  }
+}
+
+
+/**
+ * Free the state of a "backup download" CMD, and possibly
+ * cancel it if it did not complete.
+ *
+ * @param cls closure.
+ * @param cmd command being freed.
+ */
+static void
+backup_download_cleanup (void *cls,
+                         const struct TALER_TESTING_Command *cmd)
+{
+  struct BackupDownloadState *bds = cls;
+
+  if (NULL != bds->download)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "Command '%s' did not complete (backup download)\n",
+                cmd->label);
+    SYNC_download_cancel (bds->download);
+    bds->download = NULL;
+  }
+  GNUNET_free (bds);
+}
+
+
+/**
+ * Make the "backup download" command.
+ *
+ * @param label command label
+ * @param sync_url base URL of the sync serving
+ *        the policy store request.
+ * @param http_status expected HTTP status.
+ * @param upload_ref reference to upload command
+ * @return the command
+ */
+struct TALER_TESTING_Command
+SYNC_TESTING_cmd_backup_download (const char *label,
+                                  const char *sync_url,
+                                  unsigned int http_status,
+                                  const char *upload_ref)
+{
+  struct BackupDownloadState *bds;
+
+  bds = GNUNET_new (struct BackupDownloadState);
+  bds->http_status = http_status;
+  bds->sync_url = sync_url;
+  bds->upload_reference = upload_ref;
+  {
+    struct TALER_TESTING_Command cmd = {
+      .cls = bds,
+      .label = label,
+      .run = &backup_download_run,
+      .cleanup = &backup_download_cleanup
+    };
+
+    return cmd;
+  }
+}
diff --git a/src/lib/testing_api_cmd_backup_upload.c 
b/src/lib/testing_api_cmd_backup_upload.c
new file mode 100644
index 0000000..e2b792e
--- /dev/null
+++ b/src/lib/testing_api_cmd_backup_upload.c
@@ -0,0 +1,188 @@
+/*
+  This file is part of SYNC
+  Copyright (C) 2014-2019 Taler Systems SA
+
+  SYNC 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.
+
+  SYNC 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 SYNC; see the file COPYING.  If not, see
+  <http://www.gnu.org/licenses/>
+*/
+/**
+ * @file lib/testing_api_cmd_backup_upload.c
+ * @brief command to upload data to the sync backend service.
+ * @author Christian Grothoff
+ */
+#include "platform.h"
+#include "sync_service.h"
+#include "sync_testing_lib.h"
+#include <taler/taler_util.h>
+#include <taler/taler_testing_lib.h>
+
+/**
+ * State for a "backup upload" CMD.
+ */
+struct BackupUploadState
+{
+
+  /**
+   * The backup data we are uploading.
+   */
+  const void *backup;
+
+  /**
+   * Number of bytes in @e backup.
+   */
+  size_t backup_size;
+
+  /**
+   * Expected status code.
+   */
+  unsigned int http_status;
+
+  /**
+   * Eddsa private key.
+   */
+  struct SYNC_AccountPrivateKeyP sync_priv;
+
+  /**
+   * The /backups POST operation handle.
+   */
+  struct SYNC_UploadOperation *uo;
+
+  /**
+   * URL of the sync backend.
+   */
+  const char *sync_url;
+
+  /**
+   * The interpreter state.
+   */
+  struct TALER_TESTING_Interpreter *is;
+
+};
+
+
+/**
+ * Function called with the results of a #SYNC_upload().
+ *
+ * @param cls closure
+ * @param ec Taler error code
+ * @param http_status HTTP status of the request
+ * @param ud details about the upload operation
+ */
+static void
+backup_upload_cb (void *cls,
+                  enum TALER_ErrorCode ec,
+                  unsigned int http_status,
+                  const struct SYNC_UploadDetails *ud)
+{
+  struct BackupUploadState *bus = cls;
+
+  // FIXME: next!
+}
+
+
+/**
+ * Run a "backup upload" CMD.
+ *
+ * @param cls closure.
+ * @param cmd command currently being run.
+ * @param is interpreter state.
+ */
+static void
+backup_upload_run (void *cls,
+                   const struct TALER_TESTING_Command *cmd,
+                   struct TALER_TESTING_Interpreter *is)
+{
+  struct BackupUploadState *bus = cls;
+
+  bus->is = is;
+  bus->uo = SYNC_upload (is->ctx,
+                         bus->sync_url,
+                         &bus->sync_priv,
+                         NULL /* prev hash */,
+                         bus->backup_size,
+                         bus->backup,
+                         GNUNET_NO /* payment req */,
+                         NULL /* pay order id */,
+                         &backup_upload_cb,
+                         bus);
+  if (NULL == bus->uo)
+  {
+    // FIMXE: fail!
+  }
+}
+
+
+/**
+ * Free the state of a "backup upload" CMD, and possibly
+ * cancel it if it did not complete.
+ *
+ * @param cls closure.
+ * @param cmd command being freed.
+ */
+static void
+backup_upload_cleanup (void *cls,
+                       const struct TALER_TESTING_Command *cmd)
+{
+  struct BackupUploadState *bus = cls;
+
+  if (NULL != bus->uo)
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+                "Command '%s' did not complete (backup upload)\n",
+                cmd->label);
+    SYNC_upload_cancel (bus->uo);
+    bus->uo = NULL;
+  }
+  GNUNET_free (bus);
+}
+
+
+/**
+ * Make the "policy store" command.
+ *
+ * @param label command label
+ * @param sync_url base URL of the sync serving
+ *        the policy store request.
+ * @param http_status expected HTTP status.
+ * @param pub account identifier
+ * @param payment_id payment identifier
+ * @param policy_data recovery data to post
+ *
+ * @return the command
+ */
+struct TALER_TESTING_Command
+SYNC_TESTING_cmd_backup_upload (const char *label,
+                                const char *sync_url,
+                                unsigned int http_status,
+                                const void *backup_data,
+                                size_t backup_data_size)
+{
+  struct BackupUploadState *bus;
+
+  bus = GNUNET_new (struct BackupUploadState);
+  bus->http_status = http_status;
+  bus->sync_url = sync_url;
+  bus->backup = backup_data;
+  bus->backup_size = backup_data_size;
+  {
+    struct TALER_TESTING_Command cmd = {
+      .cls = bus,
+      .label = label,
+      .run = &backup_upload_run,
+      .cleanup = &backup_upload_cleanup
+    };
+
+    return cmd;
+  }
+}
diff --git a/src/lib/testing_api_helpers.c b/src/lib/testing_api_helpers.c
new file mode 100644
index 0000000..a55b038
--- /dev/null
+++ b/src/lib/testing_api_helpers.c
@@ -0,0 +1,198 @@
+/*
+  This file is part of SYNC
+  Copyright (C) 2014-2019 Taler Systems SA
+
+  SYNC 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.
+
+  SYNC is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  SYNCABILITY 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 SYNC; see the file COPYING.  If not, see
+  <http://www.gnu.org/licenses/>
+*/
+/**
+ * @file lib/testing_api_helpers.c
+ * @brief helper functions for test library.
+ * @author Christian Grothoff
+ * @author Marcello Stanisci
+ */
+#include "platform.h"
+#include <taler/taler_testing_lib.h>
+#include "sync_testing_lib.h"
+#include <gnunet/gnunet_curl_lib.h>
+
+
+/**
+ * Start the sync backend process.  Assume the port
+ * is available and the database is clean.  Use the "prepare
+ * sync" function to do such tasks.
+ *
+ * @param config_filename configuration filename.
+ *
+ * @return the process, or NULL if the process could not
+ *         be started.
+ */
+struct GNUNET_OS_Process *
+TALER_TESTING_run_sync (const char *config_filename,
+                        const char *sync_url)
+{
+  struct GNUNET_OS_Process *sync_proc;
+  unsigned int iter;
+  char *wget_cmd;
+
+  sync_proc
+    = GNUNET_OS_start_process (GNUNET_NO,
+                               GNUNET_OS_INHERIT_STD_ALL,
+                               NULL, NULL, NULL,
+                               "sync-httpd",
+                               "sync-httpd",
+                               "--log=INFO",
+                               "-c", config_filename,
+                               NULL);
+  if (NULL == sync_proc)
+  {
+    GNUNET_break (0);
+    return NULL;
+  }
+  GNUNET_asprintf (&wget_cmd,
+                   "wget -q -t 1 -T 1"
+                   " %s"
+                   " -o /dev/null -O /dev/null",
+                   sync_url);
+
+  /* give child time to start and bind against the socket */
+  fprintf (stderr,
+           "Waiting for `sync-httpd' to be ready\n");
+  iter = 0;
+  do
+  {
+    if (10 == iter)
+    {
+      fprintf (stderr,
+               "Failed to launch"
+               " `sync-httpd' (or `wget')\n");
+      GNUNET_OS_process_kill (sync_proc,
+                              SIGTERM);
+      GNUNET_OS_process_wait (sync_proc);
+      GNUNET_OS_process_destroy (sync_proc);
+      GNUNET_break (0);
+      return NULL;
+    }
+    fprintf (stderr, ".\n");
+    sleep (1);
+    iter++;
+  }
+  while (0 != system (wget_cmd));
+  GNUNET_free (wget_cmd);
+  fprintf (stderr, "\n");
+  return sync_proc;
+}
+
+
+/**
+ * Prepare the sync execution.  Create tables and check if
+ * the port is available.
+ *
+ * @param config_filename configuration filename.
+ * @return the base url, or NULL upon errors.  Must be freed
+ *         by the caller.
+ */
+char *
+TALER_TESTING_prepare_sync (const char *config_filename)
+{
+  struct GNUNET_CONFIGURATION_Handle *cfg;
+  unsigned long long port;
+  struct GNUNET_OS_Process *dbinit_proc;
+  enum GNUNET_OS_ProcessStatusType type;
+  unsigned long code;
+  char *base_url;
+
+  cfg = GNUNET_CONFIGURATION_create ();
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_load (cfg,
+                                 config_filename))
+  {
+    GNUNET_break (0);
+    return NULL;
+  }
+  if (GNUNET_OK !=
+      GNUNET_CONFIGURATION_get_value_number (cfg,
+                                             "sync",
+                                             "PORT",
+                                             &port))
+  {
+    GNUNET_log_config_missing (GNUNET_ERROR_TYPE_ERROR,
+                               "sync",
+                               "PORT");
+    GNUNET_CONFIGURATION_destroy (cfg);
+    GNUNET_break (0);
+    return NULL;
+  }
+  GNUNET_CONFIGURATION_destroy (cfg);
+  if (GNUNET_OK !=
+      GNUNET_NETWORK_test_port_free (IPPROTO_TCP,
+                                     (uint16_t) port))
+  {
+    fprintf (stderr,
+             "Required port %llu not available, skipping.\n",
+             port);
+    GNUNET_break (0);
+    return NULL;
+  }
+
+  /* DB preparation */
+  if (NULL == (dbinit_proc = GNUNET_OS_start_process
+                               (GNUNET_NO,
+                               GNUNET_OS_INHERIT_STD_ALL,
+                               NULL, NULL, NULL,
+                               "sync-dbinit",
+                               "sync-dbinit",
+                               "-c", config_filename,
+                               "-r",
+                               NULL)))
+  {
+    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+                "Failed to run sync-dbinit."
+                " Check your PATH.\n");
+    GNUNET_break (0);
+    return NULL;
+  }
+
+  if (GNUNET_SYSERR ==
+      GNUNET_OS_process_wait_status (dbinit_proc,
+                                     &type,
+                                     &code))
+  {
+    GNUNET_OS_process_destroy (dbinit_proc);
+    GNUNET_break (0);
+    return NULL;
+  }
+  if ( (type == GNUNET_OS_PROCESS_EXITED) &&
+       (0 != code) )
+  {
+    fprintf (stderr,
+             "Failed to setup database\n");
+    GNUNET_break (0);
+    return NULL;
+  }
+  if ( (type != GNUNET_OS_PROCESS_EXITED) ||
+       (0 != code) )
+  {
+    fprintf (stderr,
+             "Unexpected error running"
+             " `sync-dbinit'!\n");
+    GNUNET_break (0);
+    return NULL;
+  }
+  GNUNET_OS_process_destroy (dbinit_proc);
+  GNUNET_asprintf (&base_url,
+                   "http://localhost:%llu/";,
+                   port);
+  return base_url;
+}

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



reply via email to

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