timing reworked

This commit is contained in:
Fournier Nicolas 2015-07-17 16:23:12 +02:00
parent 0e69c33d1f
commit cb37f25146
2 changed files with 102 additions and 29 deletions

View File

@ -61,6 +61,13 @@ data_free (struct PERF_TALER_MINTDB_Data *data)
{ {
switch (data->type) switch (data->type)
{ {
case PERF_TALER_MINTDB_TIME:
if (NULL == data->data.time)
return;
GNUNET_free (data->data.time);
data->data.time = NULL;
return;
case PERF_TALER_MINTDB_DEPOSIT: case PERF_TALER_MINTDB_DEPOSIT:
if (NULL == data->data.deposit) if (NULL == data->data.deposit)
return; return;
@ -112,7 +119,8 @@ data_copy (const struct PERF_TALER_MINTDB_Data *data, struct PERF_TALER_MINTDB_D
switch (data->type) switch (data->type)
{ {
case PERF_TALER_MINTDB_TIME: case PERF_TALER_MINTDB_TIME:
copy->data.time = data->data.time; copy->data.time = GNUNET_new (struct GNUNET_TIME_Absolute);
*copy->data.time = *data->data.time;
return; return;
case PERF_TALER_MINTDB_DEPOSIT: case PERF_TALER_MINTDB_DEPOSIT:
@ -437,15 +445,18 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
break; break;
case PERF_TALER_MINTDB_CMD_GET_TIME: case PERF_TALER_MINTDB_CMD_GET_TIME:
clock_gettime (CLOCK_MONOTONIC, &state->cmd[state->i].exposed.data.time); state->cmd[state->i].exposed.data.time =
GNUNET_new (struct GNUNET_TIME_Absolute);
*state->cmd[state->i].exposed.data.time =
GNUNET_TIME_absolute_get ();
break; break;
case PERF_TALER_MINTDB_CMD_GAUGER: case PERF_TALER_MINTDB_CMD_GAUGER:
{ {
int start_index, stop_index; int start_index, stop_index;
struct timespec start, stop; float ips;
unsigned long elapsed_ms; struct GNUNET_TIME_Absolute start, stop;
struct GNUNET_TIME_Relative elapsed;
GNUNET_assert (GNUNET_SYSERR != GNUNET_assert (GNUNET_SYSERR !=
(start_index = cmd_find (state->cmd, (start_index = cmd_find (state->cmd,
state->cmd[state->i] state->cmd[state->i]
@ -454,14 +465,15 @@ interpret (struct PERF_TALER_MINTDB_interpreter_state *state)
(stop_index = cmd_find (state->cmd, (stop_index = cmd_find (state->cmd,
state->cmd[state->i] state->cmd[state->i]
.details.gauger.label_stop))); .details.gauger.label_stop)));
start = state->cmd[start_index].exposed.data.time; start = *state->cmd[start_index].exposed.data.time;
stop = state->cmd[stop_index].exposed.data.time; stop = *state->cmd[stop_index].exposed.data.time;
elapsed_ms = (start.tv_sec - stop.tv_sec) * 1000 + elapsed = GNUNET_TIME_absolute_get_difference (start,
(start.tv_nsec - stop.tv_nsec) / 1000000; stop);
ips = (1.0 * state->cmd[state->i].details.gauger.divide) / (elapsed.rel_value_us/1000000.0);
printf ("gauger data:%lu - %f\n", elapsed.rel_value_us, ips);
GAUGER ("MINTDB", GAUGER ("MINTDB",
state->cmd[state->i].details.gauger.description, state->cmd[state->i].details.gauger.description,
((1.0 * state->cmd[state->i].details.gauger.divide) / elapsed_ms) * 1000, ips,
state->cmd[state->i].details.gauger.unit); state->cmd[state->i].details.gauger.unit);
} }
break; break;

View File

@ -181,7 +181,7 @@
* @param _label the label of the command, used by other commands to reference it * @param _label the label of the command, used by other commands to reference it
* @param _label_loop the label of the loop the array iterates over * @param _label_loop the label of the loop the array iterates over
* @param _label_save the label of the command which outout is saved by this command * @param _label_save the label of the command which outout is saved by this command
* @param _nb_saved the total number of tiems to be saved * @param _nb_saved the total number of items to be saved
*/ */
#define PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY(_label, _label_loop, _label_save, _nb_saved) \ #define PERF_TALER_MINTDB_INIT_CMD_SAVE_ARRAY(_label, _label_loop, _label_save, _nb_saved) \
{ \ { \
@ -216,7 +216,7 @@
/** /**
* Inserts informations about a denomination key in the database * Inserts informations about a denomination key in the database
* * Exposes a #PERF_TALER_MINTDB_DENOMINATION_INFO to be used by other commands
* @exposed #PERF_TALER_MINTDB_DENOMINATION_INFO * @exposed #PERF_TALER_MINTDB_DENOMINATION_INFO
* *
* @param _label the label of this command * @param _label the label of this command
@ -232,7 +232,7 @@
* Polls the database about informations regarding a specific denomination key * Polls the database about informations regarding a specific denomination key
* *
* @param _label the label of this command * @param _label the label of this command
* @param _label_denom the label of the command prividing information about the denomination key * @param _label_denom the label of the command providing information about the denomination key
*/ */
#define PERF_TALER_MINTDB_INIT_CMD_GET_DENOMINATION(_label, _label_denom) \ #define PERF_TALER_MINTDB_INIT_CMD_GET_DENOMINATION(_label, _label_denom) \
{ \ { \
@ -243,7 +243,8 @@
} }
/** /**
* Creates a new reserve in the database * Creates a new reserve in the database containing 1000 Euros
* Exposes a #PERF_TALER_MINTDB_RESERVE
* *
* @exposed #PERF_TALER_MINTDB_RESERVE * @exposed #PERF_TALER_MINTDB_RESERVE
* *
@ -261,7 +262,7 @@
* Polls the database for a secific reserve's details * Polls the database for a secific reserve's details
* *
* @param _label the label of this command * @param _label the label of this command
* @param _label_reserve Source for the reserve to poll * @param _label_reserve the reserve to poll
*/ */
#define PERF_TALER_MINTDB_INIT_CMD_GET_RESERVE(_label, _label_reserve) \ #define PERF_TALER_MINTDB_INIT_CMD_GET_RESERVE(_label, _label_reserve) \
{ \ { \
@ -293,7 +294,7 @@
* @exposes #PERF_TALER_MINTDB_DEPOSIT * @exposes #PERF_TALER_MINTDB_DEPOSIT
* *
* @param _label the label of this command * @param _label the label of this command
* @param _label_coin source of the coin used to pay * @param _label_coin the coin used to pay
*/ */
#define PERF_TALER_MINTDB_INIT_CMD_INSERT_DEPOSIT(_label, _label_coin) \ #define PERF_TALER_MINTDB_INIT_CMD_INSERT_DEPOSIT(_label, _label_coin) \
{ \ { \
@ -308,7 +309,7 @@
* Check if a deposit is in the database * Check if a deposit is in the database
* *
* @param _label the label of this command * @param _label the label of this command
* @param _label_deposit the label of the deposit to use * @param _label_deposit the deposit to use
*/ */
#define PERF_TALER_MINTDB_INIT_CMD_GET_DEPOSIT(_label, _label_deposit) \ #define PERF_TALER_MINTDB_INIT_CMD_GET_DEPOSIT(_label, _label_deposit) \
{ \ { \
@ -344,7 +345,7 @@
* Polls the database about informations regarding a specific withdrawal * Polls the database about informations regarding a specific withdrawal
* *
* @param _label the label of this command * @param _label the label of this command
* @param _label_coin the label of the command providing the coin to check * @param _label_coin the coin to check
*/ */
#define PERF_TALER_MINTDB_INIT_CMD_GET_WITHDRAW(_label, _label_coin) \ #define PERF_TALER_MINTDB_INIT_CMD_GET_WITHDRAW(_label, _label_coin) \
{ \ { \
@ -356,17 +357,15 @@
/** /**
* Composit command representing a coin withdrawal * The /withdraw/sign api call
* It first access the reserve history to check the ballance *
* and hen emits a coin. * Exposes #PERF_TALER_MINTDB_COIN
*
* @exposes #PERF_TALER_MINTDB_COIN
* *
* @param _label the label of this command * @param _label the label of this command
* @param _label_reserve the reserve used to provide currency
* @param _label_dki the denomination of the created coin * @param _label_dki the denomination of the created coin
* @param _label_reserve the reserve used to provide currency
*/ */
#define PERF_TALER_MINTDB_INIT_CMD_WITHDRAWAL(_label, _label_dki, _label_reserve) \ #define PERF_TALER_MINTDB_INIT_CMD_WITHDRAW_SIGN(_label, _label_dki, _label_reserve) \
PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY("", _label_reserve), \ PERF_TALER_MINTDB_CMD_GET_RESERVE_HISTORY("", _label_reserve), \
PERF_TALER_MINTDB_CMD_INSERT_WITHDRAW(_label, _label_dki, _label_reserve), PERF_TALER_MINTDB_CMD_INSERT_WITHDRAW(_label, _label_dki, _label_reserve),
@ -382,6 +381,7 @@ enum PERF_TALER_MINTDB_Type
PERF_TALER_MINTDB_COIN, PERF_TALER_MINTDB_COIN,
PERF_TALER_MINTDB_RESERVE, PERF_TALER_MINTDB_RESERVE,
PERF_TALER_MINTDB_DENOMINATION_INFO, PERF_TALER_MINTDB_DENOMINATION_INFO,
PERF_TALER_MINTDB_REFRESH_HASH
}; };
@ -399,7 +399,7 @@ struct PERF_TALER_MINTDB_Data
union PERF_TALER_MINTDB_Memory union PERF_TALER_MINTDB_Memory
{ {
/** #PERF_TALER_MINTDB_TIME */ /** #PERF_TALER_MINTDB_TIME */
struct timespec time; struct GNUNET_TIME_Absolute *time;
/** #PERF_TALER_MINTDB_DEPOSIT */ /** #PERF_TALER_MINTDB_DEPOSIT */
struct TALER_MINTDB_Deposit *deposit; struct TALER_MINTDB_Deposit *deposit;
/** #PERF_TALER_MINTDB_COIN */ /** #PERF_TALER_MINTDB_COIN */
@ -408,6 +408,8 @@ struct PERF_TALER_MINTDB_Data
struct PERF_TALER_MINTDB_Reserve *reserve; struct PERF_TALER_MINTDB_Reserve *reserve;
/** #PERF_TALER_MINTDB_DENOMINATION_INFO */ /** #PERF_TALER_MINTDB_DENOMINATION_INFO */
struct TALER_MINTDB_DenominationKeyIssueInformation *dki; struct TALER_MINTDB_DenominationKeyIssueInformation *dki;
/** #PERF_TALER_MINTDB_REFRESH_HASH */
struct GNUNET_HashCode session_hash;
} data; } data;
}; };
@ -601,7 +603,6 @@ enum PERF_TALER_MINTDB_CMD_Name
*/ */
union PERF_TALER_MINTDB_CMD_Details union PERF_TALER_MINTDB_CMD_Details
{ {
/** /**
* Extra data requiered for the #PERF_TALER_MINTDB_CMD_LOOP command * Extra data requiered for the #PERF_TALER_MINTDB_CMD_LOOP command
*/ */
@ -801,7 +802,7 @@ union PERF_TALER_MINTDB_CMD_Details
} insert_withdraw; } insert_withdraw;
/** /**
* * data requiered for the #PERF_TALER_MINTDB_CMD_GET_WITHDRAW
*/ */
struct PERF_TALER_MINTDB_CMD_getWithdraw struct PERF_TALER_MINTDB_CMD_getWithdraw
{ {
@ -810,6 +811,66 @@ union PERF_TALER_MINTDB_CMD_Details
*/ */
const char *label_coin; const char *label_coin;
} get_withdraw; } get_withdraw;
/**
* Data requiered for the #PERF_TALER_MINTDB_CMD_GET_COIN_TRANSACTION command
*/
struct PERF_TALER_MINTDB_CMD_getCoinTransactionDetails
{
/**
* The coin which history is checked
*/
const char *label_coin;
} get_coin_transaction;
/**
* Data requiered for the #PERF_TALER_MINTDB_CMD_GET_REFRESH_SESSION command
*/
struct PERF_TALER_MINTDB_CMD_getRefreshSessionDetails
{
/**
* label of the source of the hash of the session
*/
const char *label_hash;
} get_refresh_session;
/**
* Data requiered for the #PERF_TALER_MINTDB_CMD_INSERT_REFRESH_MELT command
*/
struct PERF_TALER_MINTDB_CMD_insertRefreshMeltDetails
{
/**
* The label of the hash of the refresh session
*/
const char *label_hash;
/**
* The label of the coin to melt
*/
const char *label_coin;
} insert_refresh_melt;
/**
* Data requiered for the #PERF_TALER_MINTDB_CMD_GET_REFRESH_MELT command
*/
struct PERF_TALER_MINTDB_CMD_getRefreshMeltDetails
{
/**
* The label of the hash of the session
*/
const char *label_hash;
} get_refresh_melt;
/**
* Data requiered for the #PERF_TALER_MINTDB_CMD_INSERT_REFRESH_ORDER command
*/
struct PERF_TALER_MINTDB_CMD_insertRefreshOrderDetails
{
/**
* The refresh session hash
*/
const char *label_hash;
} insert_refresh_order;
}; };