write test for new wire fee APIs (#4931)
This commit is contained in:
parent
0e15a99504
commit
43cfb0eace
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of TALER
|
This file is part of TALER
|
||||||
Copyright (C) 2014, 2015, 2016 GNUnet e.V.
|
Copyright (C) 2014, 2015, 2016, 2017 GNUnet e.V.
|
||||||
|
|
||||||
TALER is free software; you can redistribute it and/or modify it under the
|
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
|
terms of the GNU General Public License as published by the Free Software
|
||||||
@ -947,6 +947,7 @@ deposit_cb (void *cls,
|
|||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Callback for #select_deposits_above_serial_id ()
|
* Callback for #select_deposits_above_serial_id ()
|
||||||
*
|
*
|
||||||
@ -965,7 +966,7 @@ deposit_cb (void *cls,
|
|||||||
* @param done flag set if the deposit was already executed (or not)
|
* @param done flag set if the deposit was already executed (or not)
|
||||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||||
*/
|
*/
|
||||||
int
|
static int
|
||||||
audit_deposit_cb (void *cls,
|
audit_deposit_cb (void *cls,
|
||||||
uint64_t rowid,
|
uint64_t rowid,
|
||||||
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
const struct TALER_MerchantPublicKeyP *merchant_pub,
|
||||||
@ -998,7 +999,7 @@ audit_deposit_cb (void *cls,
|
|||||||
* @param amount_with_fee amount that was deposited including fee
|
* @param amount_with_fee amount that was deposited including fee
|
||||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||||
*/
|
*/
|
||||||
int
|
static int
|
||||||
audit_refund_cb (void *cls,
|
audit_refund_cb (void *cls,
|
||||||
uint64_t rowid,
|
uint64_t rowid,
|
||||||
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
||||||
@ -1025,7 +1026,7 @@ audit_refund_cb (void *cls,
|
|||||||
* @param execution_date when did we receive the funds
|
* @param execution_date when did we receive the funds
|
||||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||||
*/
|
*/
|
||||||
int
|
static int
|
||||||
audit_reserve_in_cb (void *cls,
|
audit_reserve_in_cb (void *cls,
|
||||||
uint64_t rowid,
|
uint64_t rowid,
|
||||||
const struct TALER_ReservePublicKeyP *reserve_pub,
|
const struct TALER_ReservePublicKeyP *reserve_pub,
|
||||||
@ -1038,6 +1039,7 @@ audit_reserve_in_cb (void *cls,
|
|||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Function called with details about withdraw operations.
|
* Function called with details about withdraw operations.
|
||||||
*
|
*
|
||||||
@ -1052,7 +1054,7 @@ audit_reserve_in_cb (void *cls,
|
|||||||
* @param amount_with_fee amount that was withdrawn
|
* @param amount_with_fee amount that was withdrawn
|
||||||
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
* @return #GNUNET_OK to continue to iterate, #GNUNET_SYSERR to stop
|
||||||
*/
|
*/
|
||||||
int
|
static int
|
||||||
audit_reserve_out_cb (void *cls,
|
audit_reserve_out_cb (void *cls,
|
||||||
uint64_t rowid,
|
uint64_t rowid,
|
||||||
const struct GNUNET_HashCode *h_blind_ev,
|
const struct GNUNET_HashCode *h_blind_ev,
|
||||||
@ -1067,6 +1069,7 @@ audit_reserve_out_cb (void *cls,
|
|||||||
return GNUNET_OK;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test garbage collection.
|
* Test garbage collection.
|
||||||
*
|
*
|
||||||
@ -1115,6 +1118,99 @@ test_gc (struct TALER_EXCHANGEDB_Session *session)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test wire fee storage.
|
||||||
|
*
|
||||||
|
* @param session DB session to use
|
||||||
|
* @return #GNUNET_OK on success
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
test_wire_fees (struct TALER_EXCHANGEDB_Session *session)
|
||||||
|
{
|
||||||
|
struct GNUNET_TIME_Absolute start_date;
|
||||||
|
struct GNUNET_TIME_Absolute end_date;
|
||||||
|
struct TALER_Amount wire_fee;
|
||||||
|
struct TALER_MasterSignatureP master_sig;
|
||||||
|
struct GNUNET_TIME_Absolute sd;
|
||||||
|
struct GNUNET_TIME_Absolute ed;
|
||||||
|
struct TALER_Amount fee;
|
||||||
|
struct TALER_MasterSignatureP ms;
|
||||||
|
|
||||||
|
start_date = GNUNET_TIME_absolute_get ();
|
||||||
|
end_date = GNUNET_TIME_relative_to_absolute (GNUNET_TIME_UNIT_MINUTES);
|
||||||
|
GNUNET_assert (GNUNET_OK ==
|
||||||
|
TALER_string_to_amount (CURRENCY ":1.424242",
|
||||||
|
&wire_fee));
|
||||||
|
GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK,
|
||||||
|
&master_sig,
|
||||||
|
sizeof (master_sig));
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
plugin->insert_wire_fee (plugin->cls,
|
||||||
|
session,
|
||||||
|
"wire-method",
|
||||||
|
start_date,
|
||||||
|
end_date,
|
||||||
|
&wire_fee,
|
||||||
|
&master_sig))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
if (GNUNET_NO !=
|
||||||
|
plugin->insert_wire_fee (plugin->cls,
|
||||||
|
session,
|
||||||
|
"wire-method",
|
||||||
|
start_date,
|
||||||
|
end_date,
|
||||||
|
&wire_fee,
|
||||||
|
&master_sig))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
/* This must fail as 'end_date' is NOT in the
|
||||||
|
half-open interval [start_date,end_date) */
|
||||||
|
if (GNUNET_OK ==
|
||||||
|
plugin->get_wire_fee (plugin->cls,
|
||||||
|
session,
|
||||||
|
"wire-method",
|
||||||
|
end_date,
|
||||||
|
&sd,
|
||||||
|
&ed,
|
||||||
|
&fee,
|
||||||
|
&ms))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
plugin->get_wire_fee (plugin->cls,
|
||||||
|
session,
|
||||||
|
"wire-method",
|
||||||
|
start_date,
|
||||||
|
&sd,
|
||||||
|
&ed,
|
||||||
|
&fee,
|
||||||
|
&ms))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
if ( (sd.abs_value_us != start_date.abs_value_us) ||
|
||||||
|
(ed.abs_value_us != end_date.abs_value_us) ||
|
||||||
|
(0 != TALER_amount_cmp (&fee,
|
||||||
|
&wire_fee)) ||
|
||||||
|
(0 != memcmp (&ms,
|
||||||
|
&master_sig,
|
||||||
|
sizeof (ms))) )
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
return GNUNET_SYSERR;
|
||||||
|
}
|
||||||
|
return GNUNET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Main function that will be run by the scheduler.
|
* Main function that will be run by the scheduler.
|
||||||
*
|
*
|
||||||
@ -1595,6 +1691,8 @@ run (void *cls)
|
|||||||
&cb_wtid_never));
|
&cb_wtid_never));
|
||||||
FAILIF (GNUNET_OK !=
|
FAILIF (GNUNET_OK !=
|
||||||
test_gc (session));
|
test_gc (session));
|
||||||
|
FAILIF (GNUNET_OK !=
|
||||||
|
test_wire_fees (session));
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user