Make cherry-picking test more isolated.

This commit is contained in:
Marcello Stanisci 2019-02-19 15:48:52 +01:00
parent cf5eb8689b
commit 7c5a277b34
No known key found for this signature in database
GPG Key ID: 8D526861953F4C0F
4 changed files with 60 additions and 46 deletions

View File

@ -2,7 +2,7 @@
#
[PATHS]
# Persistent data storage for the testcase
TALER_TEST_HOME = test_exchange_api_home/
TALER_TEST_HOME = test_exchange_api_keys_cherry_picking_home/
[taler]
# Currency supported by the exchange (can only be one)
@ -16,19 +16,24 @@ PORT = 8083
[exchange]
KEYDIR = ${TALER_TEST_HOME}/.local/share/taler/exchange/live-keys/
# how long is one signkey valid?
signkey_duration = 5 seconds
# how long are the signatures with the signkey valid?
legal_duration = 2 years
# how long do we provide to clients denomination and signing keys
# ahead of time?
lookahead_provide = 30 seconds
# Keep it short so we can prolong later!
LOOKAHEAD_SIGN = 60 s
# This vaule causes keys to be *RETURNED* in a /keys response.
# It's a relative time that materializes always in now+itsvalue.
# We keep it very high, so as to not introduce divergencies between
# keys that have been created and keys that are returned along /keys.
lookahead_provide = 10000 seconds
# This value causes keys to be *CREATED*. The rule is that
# at any given time there are always N keys whose all the withdraw
# durations sum up to a time window as big as lookahead_sign.
lookahead_sign = 60 s
# HTTP port the exchange listens to
PORT = 8081
@ -133,26 +138,14 @@ CLOSING-FEE-2024 = EUR:0.01
CLOSING-FEE-2025 = EUR:0.01
CLOSING-FEE-2026 = EUR:0.01
[coin_eur_ct_1]
value = EUR:0.01
[coin_eur_1]
value = EUR:1
duration_overlap = 1 s
duration_withdraw = 25 s
duration_spend = 40 s
duration_legal = 60 s
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_2]
value = EUR:0.02
duration_overlap = 1 s
duration_withdraw = 25 s
duration_spend = 40 s
duration_withdraw = 80 s
duration_spend = 80 s
duration_legal = 60 s
fee_withdraw = EUR:0.01
fee_deposit = EUR:0.01
fee_refresh = EUR:0.01
fee_refresh = EUR:0.03
fee_refund = EUR:0.01
rsa_keysize = 1024

View File

@ -2,4 +2,4 @@
[exchange]
# Lengthen over original value (60 s)
LOOKAHEAD_SIGN = 100 s
LOOKAHEAD_SIGN = 90 s

View File

@ -74,24 +74,22 @@ run (void *cls,
struct TALER_TESTING_Interpreter *is)
{
struct TALER_TESTING_Command keys_serialization[] = {
/**
* Serialize keys, and disconnect from the exchange.
*/
TALER_TESTING_cmd_serialize_keys ("serialize-keys"),
/**
* Reconnect to the exchange using the serialized keys.
*/
TALER_TESTING_cmd_connect_with_state ("reconnect-with-state",
"serialize-keys"),
TALER_TESTING_cmd_wire ("verify-/wire-with-serialized-keys",
"x-taler-bank",
NULL,
MHD_HTTP_OK),
/**
* This loads a very big lookahead_sign (3500s).
*/
TALER_TESTING_cmd_exec_keyup ("keyup-serialization",
CONFIG_FILE_EXTENDED_2),
TALER_TESTING_cmd_exec_auditor_sign
("auditor-sign-serialization",
CONFIG_FILE_EXTENDED_2),
TALER_TESTING_cmd_sleep ("sleep-serialization",
3),
TALER_TESTING_cmd_signal ("reload-keys-serialization",
@ -99,12 +97,17 @@ run (void *cls,
SIGUSR1),
TALER_TESTING_cmd_sleep ("sleep-serialization",
3),
/**
* Why keys number decrease?
*/
TALER_TESTING_cmd_check_keys ("check-freshest-keys",
8, /* generation */
8),
/* At this point, /keys has been
* downloaded roughly 6 times, so by
* forcing 10 here we make sure we get
* all the new ones. */
10,
/* We use a very high number here to make
* sure the "big" lookahead value got
* respected. */
45),
TALER_TESTING_cmd_wire ("verify-/wire-with-fresh-keys",
"x-taler-bank",
@ -116,32 +119,44 @@ run (void *cls,
};
struct TALER_TESTING_Command ordinary_cherry_pick[] = {
/* Trigger keys reloading from disk. */
TALER_TESTING_cmd_signal ("signal-reaction-1",
is->exchanged,
SIGUSR1),
/**
* 1 DK with 80s spend duration.
*/
TALER_TESTING_cmd_check_keys ("check-keys-1",
1, /* generation */
4),
/* sleep a bit */
1),
TALER_TESTING_cmd_sleep ("sleep",
10),
/* 1st keyup happens at start-up */
/**
* We set lookahead_sign to 90s.
*/
TALER_TESTING_cmd_exec_keyup ("keyup-2",
CONFIG_FILE_EXTENDED),
TALER_TESTING_cmd_exec_auditor_sign ("sign-keys-1",
CONFIG_FILE_EXTENDED),
/* Cause exchange to reload (new) keys */
TALER_TESTING_cmd_signal ("trigger-keys-reload-1",
is->exchanged,
SIGUSR1),
/**
* First DK has still 70s of remaining life
* (duration_withdraw), so it's not enough to cover the new
* 90s window, so a new one should be created.
* Total 2 DKs.
*/
TALER_TESTING_cmd_check_keys ("check-keys-2",
2, /* generation */
6),
/* sleep a bit */
2),
TALER_TESTING_cmd_sleep ("sleep",
20),
/* Do 2nd keyup */
TALER_TESTING_cmd_exec_keyup ("keyup-3",
CONFIG_FILE_EXTENDED),
TALER_TESTING_cmd_exec_auditor_sign ("sign-keys-2",
@ -149,12 +164,19 @@ run (void *cls,
TALER_TESTING_cmd_signal ("trigger-keys-reload-2",
is->exchanged,
SIGUSR1),
/**
* First DK has 50s of remaining life (duration_withdraw).
* The second DK has ~60s of remaining life, therefore two
* keys should be (still) returned.
*/
TALER_TESTING_cmd_check_keys ("check-keys-3",
3, /* generation */
8),
3,
2),
TALER_TESTING_cmd_end ()
};
struct TALER_TESTING_Command commands[] = {
TALER_TESTING_cmd_batch ("ordinary-cherry-pick",
ordinary_cherry_pick),
TALER_TESTING_cmd_batch ("keys-serialization",
@ -177,7 +199,6 @@ main (int argc,
GNUNET_log_setup ("test-exchange-api-cherry-picking-new",
"DEBUG",
NULL);
TALER_TESTING_cleanup_files (CONFIG_FILE);
/* @helpers. Run keyup, create tables, ... Note: it
* fetches the port number from config in order to see

0
src/lib/test_exchange_api_overlapping_keys_bug.c Executable file → Normal file
View File