Inserting "now" argument into "/keys".
Also using this new logic from the cherry-pick test case.
This commit is contained in:
parent
ce71d83ad6
commit
3e757cdeda
@ -935,6 +935,30 @@ TALER_TESTING_cmd_exec_keyup_with_now
|
|||||||
struct GNUNET_TIME_Absolute now);
|
struct GNUNET_TIME_Absolute now);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make a "check keys" command. This type of command
|
||||||
|
* checks whether the number of denomination keys from
|
||||||
|
* @a exchange matches @a num_denom_keys.
|
||||||
|
*
|
||||||
|
* @param label command label
|
||||||
|
* @param generation when this command is run, exactly @a
|
||||||
|
* generation /keys downloads took place. If the number
|
||||||
|
* of downloads is less than @a generation, the logic will
|
||||||
|
* first make sure that @a generation downloads are done,
|
||||||
|
* and _then_ execute the rest of the command.
|
||||||
|
* @param num_denom_keys expected number of denomination keys.
|
||||||
|
* @param exchange connection handle to the exchange to test.
|
||||||
|
*
|
||||||
|
* @return the command.
|
||||||
|
*/
|
||||||
|
struct TALER_TESTING_Command
|
||||||
|
TALER_TESTING_cmd_check_keys_with_now
|
||||||
|
(const char *label,
|
||||||
|
unsigned int generation,
|
||||||
|
unsigned int num_denom_keys,
|
||||||
|
struct GNUNET_TIME_Absolute now);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Make a "auditor sign" CMD.
|
* Make a "auditor sign" CMD.
|
||||||
*
|
*
|
||||||
|
@ -218,7 +218,7 @@ struct TALER_EXCHANGE_Handle
|
|||||||
* If GNUNET_YES, use fake now given by the user, in
|
* If GNUNET_YES, use fake now given by the user, in
|
||||||
* request of "/keys".
|
* request of "/keys".
|
||||||
*/
|
*/
|
||||||
unsigned int with_now;
|
int with_now;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fake now given by the user.
|
* Fake now given by the user.
|
||||||
@ -1824,30 +1824,36 @@ request_keys (void *cls)
|
|||||||
struct TALER_EXCHANGE_Handle *exchange = cls;
|
struct TALER_EXCHANGE_Handle *exchange = cls;
|
||||||
struct KeysRequest *kr;
|
struct KeysRequest *kr;
|
||||||
CURL *eh;
|
CURL *eh;
|
||||||
|
char url[200] = "/keys?";
|
||||||
|
|
||||||
exchange->retry_task = NULL;
|
exchange->retry_task = NULL;
|
||||||
GNUNET_assert (NULL == exchange->kr);
|
GNUNET_assert (NULL == exchange->kr);
|
||||||
kr = GNUNET_new (struct KeysRequest);
|
kr = GNUNET_new (struct KeysRequest);
|
||||||
kr->exchange = exchange;
|
kr->exchange = exchange;
|
||||||
if (GNUNET_YES ==
|
|
||||||
TEAH_handle_is_ready (exchange))
|
|
||||||
{
|
|
||||||
char *arg;
|
|
||||||
|
|
||||||
|
if (GNUNET_YES == TEAH_handle_is_ready (exchange))
|
||||||
|
{
|
||||||
TALER_LOG_DEBUG ("Last DK issue date (before GETting /keys): %s\n",
|
TALER_LOG_DEBUG ("Last DK issue date (before GETting /keys): %s\n",
|
||||||
GNUNET_STRINGS_absolute_time_to_string (exchange->key_data.last_denom_issue_date));
|
GNUNET_STRINGS_absolute_time_to_string (exchange->key_data.last_denom_issue_date));
|
||||||
GNUNET_asprintf (&arg,
|
sprintf (&url[strlen (url)],
|
||||||
"/keys?last_issue_date=%llu",
|
"last_issue_date=%llu&",
|
||||||
(unsigned long long) exchange->key_data.last_denom_issue_date.abs_value_us / 1000000LLU);
|
(unsigned long long) exchange->key_data.last_denom_issue_date.abs_value_us / 1000000LLU);
|
||||||
kr->url = TEAH_path_to_url (exchange,
|
|
||||||
arg);
|
|
||||||
GNUNET_free (arg);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
if (GNUNET_YES == exchange->with_now)
|
||||||
{
|
{
|
||||||
kr->url = TEAH_path_to_url (exchange,
|
TALER_LOG_DEBUG ("Faking now to GET /keys): %s\n",
|
||||||
"/keys");
|
GNUNET_STRINGS_absolute_time_to_string (exchange->now));
|
||||||
|
sprintf (&url[strlen (url)],
|
||||||
|
"now=%llu&",
|
||||||
|
(unsigned long long) exchange->now.abs_value_us / 1000000LLU);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Clean the last '&'/'?' sign that we optimistically put. */
|
||||||
|
url[strlen (url) - 1] = '\0';
|
||||||
|
kr->url = TEAH_path_to_url (exchange,
|
||||||
|
url);
|
||||||
|
|
||||||
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
|
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
|
||||||
"Requesting keys with URL `%s'.\n",
|
"Requesting keys with URL `%s'.\n",
|
||||||
kr->url);
|
kr->url);
|
||||||
|
@ -151,6 +151,7 @@ run (void *cls,
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
now = GNUNET_TIME_absolute_get ();
|
||||||
struct TALER_TESTING_Command ordinary_cherry_pick[] = {
|
struct TALER_TESTING_Command ordinary_cherry_pick[] = {
|
||||||
|
|
||||||
/* Trigger keys reloading from disk. */
|
/* Trigger keys reloading from disk. */
|
||||||
@ -164,11 +165,12 @@ run (void *cls,
|
|||||||
1, /* generation */
|
1, /* generation */
|
||||||
1),
|
1),
|
||||||
/**
|
/**
|
||||||
* We now set lookahead_sign to 90s, and fake 10s passed.
|
* We now set lookahead_sign to 90s, and expect a new DK
|
||||||
|
* to be created. The first one lives (= has withdraw_duration of)
|
||||||
|
* only 80s.
|
||||||
*/
|
*/
|
||||||
TALER_TESTING_cmd_exec_keyup_with_now ("keyup-2",
|
TALER_TESTING_cmd_exec_keyup ("keyup-2",
|
||||||
CONFIG_FILE_EXTENDED,
|
CONFIG_FILE_EXTENDED),
|
||||||
NOWPLUSSECS (10)),
|
|
||||||
|
|
||||||
TALER_TESTING_cmd_exec_auditor_sign ("sign-keys-1",
|
TALER_TESTING_cmd_exec_auditor_sign ("sign-keys-1",
|
||||||
CONFIG_FILE_EXTENDED),
|
CONFIG_FILE_EXTENDED),
|
||||||
@ -177,19 +179,15 @@ run (void *cls,
|
|||||||
is->exchanged,
|
is->exchanged,
|
||||||
SIGUSR1),
|
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.
|
* Total 2 DKs.
|
||||||
*/
|
*/
|
||||||
TALER_TESTING_cmd_check_keys ("check-keys-2",
|
TALER_TESTING_cmd_check_keys ("check-keys-2",
|
||||||
2, /* generation */
|
2, /* generation */
|
||||||
2),
|
2),
|
||||||
|
|
||||||
/* Must fake 20s lapse now. */
|
/* Nothing should happen now. */
|
||||||
TALER_TESTING_cmd_exec_keyup_with_now ("keyup-3",
|
TALER_TESTING_cmd_exec_keyup ("keyup-3",
|
||||||
CONFIG_FILE_EXTENDED,
|
CONFIG_FILE_EXTENDED),
|
||||||
NOWPLUSSECS (20)),
|
|
||||||
TALER_TESTING_cmd_exec_auditor_sign ("sign-keys-2",
|
TALER_TESTING_cmd_exec_auditor_sign ("sign-keys-2",
|
||||||
CONFIG_FILE),
|
CONFIG_FILE),
|
||||||
TALER_TESTING_cmd_signal ("trigger-keys-reload-2",
|
TALER_TESTING_cmd_signal ("trigger-keys-reload-2",
|
||||||
@ -197,13 +195,15 @@ run (void *cls,
|
|||||||
SIGUSR1),
|
SIGUSR1),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* First DK has 50s of remaining life (duration_withdraw).
|
* Make 30s time lapse (by passing the "now" argument to
|
||||||
* The second DK has ~60s of remaining life, therefore two
|
* "/keys"). First DK has 50s of remaining life
|
||||||
* keys should be (still) returned.
|
* (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",
|
TALER_TESTING_cmd_check_keys_with_now ("check-keys-3",
|
||||||
3,
|
3,
|
||||||
2),
|
2,
|
||||||
|
NOWPLUSSECS (30)),
|
||||||
TALER_TESTING_cmd_end ()
|
TALER_TESTING_cmd_end ()
|
||||||
};
|
};
|
||||||
struct TALER_TESTING_Command commands[] = {
|
struct TALER_TESTING_Command commands[] = {
|
||||||
|
@ -73,7 +73,7 @@ struct CheckKeysState
|
|||||||
* If GNUNET_YES, then we'll provide the "/keys" request.
|
* If GNUNET_YES, then we'll provide the "/keys" request.
|
||||||
* with the "now" argument.
|
* with the "now" argument.
|
||||||
*/
|
*/
|
||||||
unsigned int with_now;
|
int with_now;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fake now as passed by the user.
|
* Fake now as passed by the user.
|
||||||
|
Loading…
Reference in New Issue
Block a user