add test for json_wire.c logic
This commit is contained in:
parent
35fe98a165
commit
9a5030b993
@ -104,6 +104,46 @@ struct DenominationKeyEntry
|
|||||||
*/
|
*/
|
||||||
struct GNUNET_HashCode denom_key_hash;
|
struct GNUNET_HashCode denom_key_hash;
|
||||||
|
|
||||||
|
#ifdef OPTIMIZE_5777_AUDITOR_BY_COUNT_REALTIME_DETECTION
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mutex that must be held before threads may access or update
|
||||||
|
* @e known_coin_counter or @e known_coin_counter_db.
|
||||||
|
*/
|
||||||
|
pthread_mutex_t known_coin_counter_mutex;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mutex that must be held before threads may access or update
|
||||||
|
* @e issued_coin_counter or @e issued_coin_counter_db.
|
||||||
|
*/
|
||||||
|
pthread_mutex_t issued_coin_counter_mutex;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many coins of this denomination have been redeemed so far (according
|
||||||
|
* to only this process)?
|
||||||
|
*/
|
||||||
|
uint64_t known_coin_counter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many coins of this denomination have been redeemed so far (based on
|
||||||
|
* the last time we synchronized the value with our database).
|
||||||
|
*/
|
||||||
|
uint64_t known_coin_counter_db;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many coins of this denomination have been issued so far (according
|
||||||
|
* to only this process)?
|
||||||
|
*/
|
||||||
|
uint64_t issued_coin_counter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* How many coins of this denomination have been issued so far (based on the
|
||||||
|
* last time we synchronized the value with our database)?
|
||||||
|
*/
|
||||||
|
uint64_t issued_coin_counter_db;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -3384,9 +3384,9 @@ postgres_count_known_coins (void *cls,
|
|||||||
enum GNUNET_DB_QueryStatus qs;
|
enum GNUNET_DB_QueryStatus qs;
|
||||||
|
|
||||||
qs = GNUNET_PQ_eval_prepared_singleton_select (session->conn,
|
qs = GNUNET_PQ_eval_prepared_singleton_select (session->conn,
|
||||||
"count_known_coins",
|
"count_known_coins",
|
||||||
params,
|
params,
|
||||||
rs);
|
rs);
|
||||||
if (0 > qs)
|
if (0 > qs)
|
||||||
return (long long) qs;
|
return (long long) qs;
|
||||||
return (long long) count;
|
return (long long) count;
|
||||||
|
@ -1463,6 +1463,20 @@ struct TALER_EXCHANGEDB_Plugin
|
|||||||
struct TALER_EXCHANGEDB_Session *session,
|
struct TALER_EXCHANGEDB_Session *session,
|
||||||
const struct TALER_CoinPublicInfo *coin);
|
const struct TALER_CoinPublicInfo *coin);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve information about the given @a coin from the database.
|
||||||
|
*
|
||||||
|
* @param cls database connection plugin state
|
||||||
|
* @param session database session
|
||||||
|
* @param coin the coin that must be made known
|
||||||
|
* @return database transaction status, non-negative on success
|
||||||
|
*/
|
||||||
|
enum GNUNET_DB_QueryStatus
|
||||||
|
(*get_known_coin) (void *cls,
|
||||||
|
struct TALER_EXCHANGEDB_Session *session,
|
||||||
|
const struct TALER_CoinSpendPublicKeyP *coin_pub,
|
||||||
|
struct TALER_CoinPublicInfo *coin_info);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if we have the specified deposit already in the database.
|
* Check if we have the specified deposit already in the database.
|
||||||
|
1
src/json/.gitignore
vendored
Normal file
1
src/json/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
test_json_wire
|
@ -25,10 +25,12 @@ libtalerjson_la_LIBADD = \
|
|||||||
$(XLIB)
|
$(XLIB)
|
||||||
|
|
||||||
TESTS = \
|
TESTS = \
|
||||||
test_json
|
test_json \
|
||||||
|
test_json_wire
|
||||||
|
|
||||||
check_PROGRAMS= \
|
check_PROGRAMS= \
|
||||||
test_json
|
test_json \
|
||||||
|
test_json_wire
|
||||||
|
|
||||||
test_json_SOURCES = \
|
test_json_SOURCES = \
|
||||||
test_json.c
|
test_json.c
|
||||||
@ -38,3 +40,13 @@ test_json_LDADD = \
|
|||||||
$(top_builddir)/src/util/libtalerutil.la \
|
$(top_builddir)/src/util/libtalerutil.la \
|
||||||
-lgnunetutil \
|
-lgnunetutil \
|
||||||
-ljansson
|
-ljansson
|
||||||
|
|
||||||
|
|
||||||
|
test_json_wire_SOURCES = \
|
||||||
|
test_json_wire.c
|
||||||
|
test_json_wire_LDADD = \
|
||||||
|
$(top_builddir)/src/json/libtalerjson.la \
|
||||||
|
-lgnunetjson \
|
||||||
|
$(top_builddir)/src/util/libtalerutil.la \
|
||||||
|
-lgnunetutil \
|
||||||
|
-ljansson
|
||||||
|
59
src/json/test_json_wire.c
Normal file
59
src/json/test_json_wire.c
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
This file is part of TALER
|
||||||
|
(C) 2015, 2016 GNUnet e.V. and Inria
|
||||||
|
|
||||||
|
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
|
||||||
|
Foundation; either version 3, or (at your option) any later version.
|
||||||
|
|
||||||
|
TALER is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||||
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License along with
|
||||||
|
TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file json/test_json_wire.c
|
||||||
|
* @brief Tests for Taler-specific crypto logic
|
||||||
|
* @author Christian Grothoff <christian@grothoff.org>
|
||||||
|
*/
|
||||||
|
#include "platform.h"
|
||||||
|
#include "taler_util.h"
|
||||||
|
#include "taler_json_lib.h"
|
||||||
|
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc,
|
||||||
|
const char *const argv[])
|
||||||
|
{
|
||||||
|
struct TALER_MasterPublicKeyP master_pub;
|
||||||
|
struct GNUNET_CRYPTO_EddsaPrivateKey *priv;
|
||||||
|
struct TALER_MasterPrivateKeyP master_priv;
|
||||||
|
json_t *wire;
|
||||||
|
const char *payto = "payto://x-taler-bank/42";
|
||||||
|
char *p;
|
||||||
|
|
||||||
|
GNUNET_log_setup ("test-json-wire",
|
||||||
|
"WARNING",
|
||||||
|
NULL);
|
||||||
|
priv = GNUNET_CRYPTO_eddsa_key_create ();
|
||||||
|
master_priv.eddsa_priv = *priv;
|
||||||
|
GNUNET_free (priv);
|
||||||
|
GNUNET_CRYPTO_eddsa_key_get_public (&master_priv.eddsa_priv,
|
||||||
|
&master_pub.eddsa_pub);
|
||||||
|
wire = TALER_JSON_exchange_wire_signature_make (payto,
|
||||||
|
&master_priv);
|
||||||
|
p = TALER_JSON_wire_to_payto (wire);
|
||||||
|
GNUNET_assert (0 == strcmp (p, payto));
|
||||||
|
GNUNET_free (p);
|
||||||
|
GNUNET_assert (GNUNET_OK ==
|
||||||
|
TALER_JSON_exchange_wire_signature_check (wire,
|
||||||
|
&master_pub));
|
||||||
|
json_decref (wire);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* end of test_json_wire.c */
|
Loading…
Reference in New Issue
Block a user