diff options
| author | Christian Grothoff <grothoff@gnunet.org> | 2022-03-20 15:42:16 +0100 | 
|---|---|---|
| committer | Christian Grothoff <grothoff@gnunet.org> | 2022-03-20 15:42:16 +0100 | 
| commit | 65808106c7d7ddad9420338f3fde139ec0c9295e (patch) | |
| tree | b00f9a3ee193d2100fb5901a9303189f21cda1ad | |
| parent | 532fabf20a3f9377f1f9526d38e068069a81a922 (diff) | |
add test for reserve GET long polling
| -rw-r--r-- | src/include/taler_testing_lib.h | 2 | ||||
| -rw-r--r-- | src/testing/test_exchange_api.c | 14 | ||||
| -rw-r--r-- | src/testing/testing_api_cmd_reserve_get.c | 27 | 
3 files changed, 31 insertions, 12 deletions
| diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h index 19d1aaa2..4badc0b9 100644 --- a/src/include/taler_testing_lib.h +++ b/src/include/taler_testing_lib.h @@ -1406,11 +1406,13 @@ TALER_TESTING_cmd_reserve_poll (const char *label,   * Fail if it did not conclude by the timeout.   *   * @param label our label + * @param timeout how long to give the long poll to finish   * @param poll_reference reference to a #TALER_TESTING_cmd_reserve_poll() command   * @return the command.   */  struct TALER_TESTING_Command  TALER_TESTING_cmd_reserve_poll_finish (const char *label, +                                       struct GNUNET_TIME_Relative timeout,                                         const char *poll_reference); diff --git a/src/testing/test_exchange_api.c b/src/testing/test_exchange_api.c index 5d3465df..71f9ab7c 100644 --- a/src/testing/test_exchange_api.c +++ b/src/testing/test_exchange_api.c @@ -134,6 +134,11 @@ run (void *cls,       */      CMD_TRANSFER_TO_EXCHANGE ("create-reserve-1",                                "EUR:6.02"), +    TALER_TESTING_cmd_reserve_poll ("poll-reserve-1", +                                    "create-reserve-1", +                                    "EUR:6.02", +                                    GNUNET_TIME_UNIT_MINUTES, +                                    MHD_HTTP_OK),      TALER_TESTING_cmd_check_bank_admin_transfer ("check-create-reserve-1",                                                   "EUR:6.02",                                                   bc.user42_payto, @@ -144,6 +149,9 @@ run (void *cls,       * transfer.       */      CMD_EXEC_WIREWATCH ("wirewatch-1"), +    TALER_TESTING_cmd_reserve_poll_finish ("finish-poll-reserve-1", +                                           GNUNET_TIME_UNIT_SECONDS, +                                           "poll-reserve-1"),      /**       * Withdraw EUR:5.       */ @@ -290,7 +298,8 @@ run (void *cls,                                         MHD_HTTP_OK),      /* Try to partially spend (deposit) 1 EUR of the 5 EUR coin       * (in full) (merchant would receive EUR:0.99 due to 1 ct -     * deposit fee) */// +     * deposit fee) +     */      TALER_TESTING_cmd_deposit ("refresh-deposit-partial",                                 "refresh-withdraw-coin-1",                                 0, @@ -587,7 +596,8 @@ run (void *cls,                                         MHD_HTTP_OK),      /* Try to partially spend (deposit) 1 EUR of the 5 EUR coin       * (in full) (merchant would receive EUR:0.99 due to 1 ct -     * deposit fee) */// +     * deposit fee) +     */      TALER_TESTING_cmd_deposit ("refresh-deposit-partial-age",                                 "refresh-withdraw-coin-age-1",                                 0, diff --git a/src/testing/testing_api_cmd_reserve_get.c b/src/testing/testing_api_cmd_reserve_get.c index 3e590f4b..b4375ee2 100644 --- a/src/testing/testing_api_cmd_reserve_get.c +++ b/src/testing/testing_api_cmd_reserve_get.c @@ -34,6 +34,11 @@ struct PollState  {    /** +   * How long do we give the exchange to respond? +   */ +  struct GNUNET_TIME_Relative timeout; + +  /**     * Label to the command which created the reserve to check,     * needed to resort the reserve key.     */ @@ -331,7 +336,7 @@ finish_run (void *cls,    }    GNUNET_assert (NULL == ss->ps);    ss->ps = ps; -  ps->tt = GNUNET_SCHEDULER_add_delayed (ss->timeout, +  ps->tt = GNUNET_SCHEDULER_add_delayed (ps->timeout,                                           &finish_timeout,                                           ps);  } @@ -347,29 +352,31 @@ static void  finish_cleanup (void *cls,                  const struct TALER_TESTING_Command *cmd)  { -  struct PollState *ss = cls; +  struct PollState *ps = cls; -  if (NULL != ss->tt) +  if (NULL != ps->tt)    { -    GNUNET_SCHEDULER_cancel (ss->tt); -    ss->tt = NULL; +    GNUNET_SCHEDULER_cancel (ps->tt); +    ps->tt = NULL;    } -  GNUNET_free (ss); +  GNUNET_free (ps);  }  struct TALER_TESTING_Command  TALER_TESTING_cmd_reserve_poll_finish (const char *label, +                                       struct GNUNET_TIME_Relative timeout,                                         const char *poll_reference)  { -  struct PollState *ss; +  struct PollState *ps;    GNUNET_assert (NULL != poll_reference); -  ss = GNUNET_new (struct PollState); -  ss->poll_reference = poll_reference; +  ps = GNUNET_new (struct PollState); +  ps->timeout = timeout; +  ps->poll_reference = poll_reference;    {      struct TALER_TESTING_Command cmd = { -      .cls = ss, +      .cls = ps,        .label = label,        .run = &finish_run,        .cleanup = &finish_cleanup | 
