summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2019-01-24 18:46:49 +0100
committerChristian Grothoff <christian@grothoff.org>2019-01-24 18:46:49 +0100
commit531b61cd43765e16ebaacd3900241efc9a6b6616 (patch)
tree2ce28f8cdda92608589eae7aff1d7852632f1da6
parent9de8b7762547e4064d618cf2ad1e4da8a1f6994b (diff)
parent649dd16401379285bb2260fce8dbb5eb6f24b453 (diff)
downloadexchange-531b61cd43765e16ebaacd3900241efc9a6b6616.tar.gz
exchange-531b61cd43765e16ebaacd3900241efc9a6b6616.tar.bz2
exchange-531b61cd43765e16ebaacd3900241efc9a6b6616.zip
adding separate test just for /verison API
-rw-r--r--src/bank-lib/Makefile.am12
-rw-r--r--src/include/taler_testing_lib.h6
-rw-r--r--src/lib/Makefile.am14
-rw-r--r--src/lib/auditor_api_handle.c3
-rw-r--r--src/lib/exchange_api_handle.c77
-rw-r--r--src/lib/test_auditor_api.c1
-rw-r--r--src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf2
-rw-r--r--src/lib/test_exchange_api_keys_cherry_picking_new.c2
-rwxr-xr-xsrc/lib/test_exchange_api_overlapping_keys_bug.c4
-rw-r--r--src/lib/testing_api_loop.c1
-rw-r--r--src/lib/testing_auditor_api_helpers.c34
11 files changed, 82 insertions, 74 deletions
diff --git a/src/bank-lib/Makefile.am b/src/bank-lib/Makefile.am
index 084614b62..6daf9e5c0 100644
--- a/src/bank-lib/Makefile.am
+++ b/src/bank-lib/Makefile.am
@@ -97,11 +97,11 @@ check_PROGRAMS += \
test_bank_api_with_fakebank_twisted_SOURCES = \
test_bank_api_with_fakebank_twisted.c
test_bank_api_with_fakebank_twisted_LDADD = \
- $(top_builddir)/src/exchange-lib/libtalertesting.la \
+ $(top_builddir)/src/lib/libtalertesting.la \
libtalerbank.la \
libtalerbanktesting.la \
libtalerfakebank.la \
- $(top_builddir)/src/exchange-lib/libtalerexchange.la \
+ $(top_builddir)/src/lib/libtalerexchange.la \
$(top_builddir)/src/json/libtalerjson.la \
-ltalertwistertesting \
-lgnunetjson \
@@ -113,11 +113,11 @@ endif
test_bank_api_twisted_SOURCES = \
test_bank_api_twisted.c
test_bank_api_twisted_LDADD = \
- $(top_builddir)/src/exchange-lib/libtalertesting.la \
+ $(top_builddir)/src/lib/libtalertesting.la \
libtalerbank.la \
libtalerbanktesting.la \
libtalerfakebank.la \
- $(top_builddir)/src/exchange-lib/libtalerexchange.la \
+ $(top_builddir)/src/lib/libtalerexchange.la \
$(top_builddir)/src/json/libtalerjson.la \
-ltalertwistertesting \
-lgnunetjson \
@@ -143,7 +143,7 @@ test_bank_api_new_SOURCES = \
test_bank_api_new.c
test_bank_api_new_LDADD = \
- $(top_builddir)/src/exchange-lib/libtalertesting.la \
+ $(top_builddir)/src/lib/libtalertesting.la \
$(top_builddir)/src/json/libtalerjson.la \
libtalerbanktesting.la \
-ltalerexchange \
@@ -165,7 +165,7 @@ test_bank_api_with_fakebank_new_SOURCES = \
test_bank_api_with_fakebank_new.c
test_bank_api_with_fakebank_new_LDADD = \
- $(top_builddir)/src/exchange-lib/libtalertesting.la \
+ $(top_builddir)/src/lib/libtalertesting.la \
libtalerbanktesting.la \
-ltalerexchange \
-lgnunetutil \
diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h
index 711a13235..6573d2cd7 100644
--- a/src/include/taler_testing_lib.h
+++ b/src/include/taler_testing_lib.h
@@ -370,12 +370,6 @@ struct TALER_TESTING_Interpreter
int working;
/**
- * Is the auditor running (#GNUNET_YES) or waiting
- * for /version (#GNUNET_NO)?
- */
- int auditor_working;
-
- /**
* How often have we gotten a /keys response so far?
*/
unsigned int key_generation;
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index b44eccbc8..9e91e7014 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -156,7 +156,6 @@ endif
check_PROGRAMS = \
test_exchange_api_keys_cherry_picking_new \
test_exchange_api_overlapping_keys_bug \
- test_exchange_api_interpreter_on-off \
test_exchange_api_new \
test_auditor_api_version \
test_auditor_api
@@ -202,19 +201,6 @@ test_exchange_api_new_LDADD = \
-lgnunetutil \
-ljansson
-test_exchange_api_interpreter_on_off_SOURCES = \
- test_exchange_api_interpreter_on-off.c
-test_exchange_api_interpreter_on_off_LDADD = \
- libtalertesting.la \
- libtalerexchange.la \
- $(LIBGCRYPT_LIBS) \
- $(top_builddir)/src/json/libtalerjson.la \
- $(top_builddir)/src/util/libtalerutil.la \
- $(top_builddir)/src/bank-lib/libtalerbank.la \
- -lgnunetcurl \
- -lgnunetutil \
- -ljansson
-
test_exchange_api_overlapping_keys_bug_SOURCES = \
test_exchange_api_overlapping_keys_bug.c
test_exchange_api_overlapping_keys_bug_LDADD = \
diff --git a/src/lib/auditor_api_handle.c b/src/lib/auditor_api_handle.c
index 13dd63df6..f14713e10 100644
--- a/src/lib/auditor_api_handle.c
+++ b/src/lib/auditor_api_handle.c
@@ -259,7 +259,6 @@ decode_version_json (const json_t *resp_obj,
return GNUNET_OK;
}
-
/**
* Initiate download of /version from the auditor.
*
@@ -308,6 +307,7 @@ version_completed_cb (void *cls,
if (NULL == resp_obj)
{
GNUNET_break_op (0);
+ TALER_LOG_WARNING ("NULL body for a 200-OK /version\n");
response_code = 0;
break;
}
@@ -348,6 +348,7 @@ version_completed_cb (void *cls,
auditor->vr = NULL;
free_version_request (vr);
+ TALER_LOG_DEBUG ("Switching auditor state to 'version'\n");
auditor->state = MHS_VERSION;
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"Auditor %p is now READY!\n",
diff --git a/src/lib/exchange_api_handle.c b/src/lib/exchange_api_handle.c
index b2ac596fe..78219e611 100644
--- a/src/lib/exchange_api_handle.c
+++ b/src/lib/exchange_api_handle.c
@@ -685,8 +685,11 @@ update_auditors (struct TALER_EXCHANGE_Handle *exchange)
{
struct TALER_EXCHANGE_Keys *kd = &exchange->key_data;
+ TALER_LOG_DEBUG ("Updating auditors\n");
for (unsigned int i=0;i<kd->num_auditors;i++)
{
+ /* Compare auditor data from /keys with auditor data
+ * from owned exchange structures. */
struct TALER_EXCHANGE_AuditorInformation *auditor = &kd->auditors[i];
struct TEAH_AuditorListEntry *ale = NULL;
@@ -704,7 +707,9 @@ update_auditors (struct TALER_EXCHANGE_Handle *exchange)
}
if (NULL != ale)
continue; /* found, no need to add */
+
/* new auditor, add */
+ TALER_LOG_DEBUG ("Found new auditor!\n");
ale = GNUNET_new (struct TEAH_AuditorListEntry);
ale->auditor_pub = auditor->auditor_pub;
ale->auditor_url = GNUNET_strdup (auditor->auditor_url);
@@ -719,6 +724,50 @@ update_auditors (struct TALER_EXCHANGE_Handle *exchange)
}
}
+/**
+ * Compare two denomination keys.
+ *
+ * @param denoma first denomination key
+ * @param denomb second denomination key
+ * @return 0 if the two keys are equal (not necessarily
+ * the same object), 1 otherwise.
+ */
+unsigned int
+TALER_denoms_cmp (struct TALER_EXCHANGE_DenomPublicKey *denom1,
+ struct TALER_EXCHANGE_DenomPublicKey *denom2)
+{
+ struct GNUNET_CRYPTO_RsaPublicKey *tmp1;
+ struct GNUNET_CRYPTO_RsaPublicKey *tmp2;
+
+ /* First check if pub is the same. */
+ if (0 != GNUNET_CRYPTO_rsa_public_key_cmp
+ (denom1->key.rsa_public_key,
+ denom2->key.rsa_public_key))
+ return 1;
+
+ tmp1 = denom1->key.rsa_public_key;
+ tmp2 = denom2->key.rsa_public_key;
+
+ denom1->key.rsa_public_key = NULL;
+ denom2->key.rsa_public_key = NULL;
+
+ /* Then procede with the rest of the object. */
+ if (0 != memcmp (denom1,
+ denom2,
+ sizeof (struct TALER_EXCHANGE_DenomPublicKey)))
+ {
+ denom1->key.rsa_public_key = tmp1;
+ denom2->key.rsa_public_key = tmp2;
+
+ return 1;
+ }
+
+ denom1->key.rsa_public_key = tmp1;
+ denom2->key.rsa_public_key = tmp2;
+
+ return 0;
+}
+
/**
* Decode the JSON in @a resp_obj from the /keys response
@@ -857,7 +906,7 @@ decode_keys_json (const json_t *resp_obj,
index = 0;
json_array_foreach (denom_keys_array, index, denom_key_obj) {
struct TALER_EXCHANGE_DenomPublicKey dk;
- bool found = false;
+ int found = GNUNET_NO;
EXITIF (GNUNET_SYSERR ==
parse_json_denomkey (&dk,
@@ -865,17 +914,19 @@ decode_keys_json (const json_t *resp_obj,
denom_key_obj,
&key_data->master_pub,
hash_context));
- for (unsigned int j=0;j<key_data->num_denom_keys;j++)
+
+ for (unsigned int j=0;
+ j<key_data->num_denom_keys;
+ j++)
{
- if (0 == memcmp (&dk,
- &key_data->denom_keys[j],
- sizeof (dk)))
+ if (0 == TALER_denoms_cmp (&dk,
+ &key_data->denom_keys[j]))
{
- found = true;
+ found = GNUNET_YES;
break;
}
}
- if (found)
+ if (GNUNET_YES == found)
{
/* 0:0:0 did not support /keys cherry picking */
GNUNET_break_op (0 == current);
@@ -910,7 +961,7 @@ decode_keys_json (const json_t *resp_obj,
index = 0;
json_array_foreach (auditors_array, index, auditor_info) {
struct TALER_EXCHANGE_AuditorInformation ai;
- bool found = false;
+ int found = GNUNET_NO;
memset (&ai,
0,
@@ -928,7 +979,7 @@ decode_keys_json (const json_t *resp_obj,
&aix->auditor_pub,
sizeof (struct TALER_AuditorPublicKeyP)))
{
- found = true;
+ found = GNUNET_YES;
/* Merge denomination key signatures of downloaded /keys into existing
auditor information 'aix'. */
GNUNET_array_grow (aix->denom_keys,
@@ -940,7 +991,7 @@ decode_keys_json (const json_t *resp_obj,
break;
}
}
- if (found)
+ if (GNUNET_YES == found)
continue; /* we are done */
if (key_data->auditors_size == key_data->num_auditors)
GNUNET_array_grow (key_data->auditors,
@@ -1077,7 +1128,6 @@ TALER_EXCHANGE_check_keys_current (struct TALER_EXCHANGE_Handle *exchange,
return GNUNET_TIME_UNIT_ZERO_ABS;
}
-
/**
* Callback used when downloading the reply to a /keys request
* is complete.
@@ -1136,6 +1186,7 @@ keys_completed_cb (void *cls,
memcpy (kd.denom_keys,
kd_old.denom_keys,
kd_old.num_denom_keys * sizeof (struct TALER_EXCHANGE_DenomPublicKey));
+
for (unsigned int i=0;i<kd_old.num_denom_keys;i++)
kd.denom_keys[i].key.rsa_public_key
= GNUNET_CRYPTO_rsa_public_key_dup (kd_old.denom_keys[i].key.rsa_public_key);
@@ -1160,6 +1211,7 @@ keys_completed_cb (void *cls,
aold->num_denom_keys * sizeof (struct TALER_EXCHANGE_AuditorDenominationInfo));
}
+ /* Old auditors got just copied into new ones. */
if (GNUNET_OK !=
decode_keys_json (j,
GNUNET_YES,
@@ -1682,6 +1734,9 @@ TALER_EXCHANGE_connect
va_list ap;
enum TALER_EXCHANGE_Option opt;
+ TALER_LOG_DEBUG ("Connecting to the exchange (%s)\n",
+ url);
+
exchange = GNUNET_new (struct TALER_EXCHANGE_Handle);
exchange->ctx = ctx;
exchange->url = GNUNET_strdup (url);
diff --git a/src/lib/test_auditor_api.c b/src/lib/test_auditor_api.c
index cddd21197..cde3e1aa9 100644
--- a/src/lib/test_auditor_api.c
+++ b/src/lib/test_auditor_api.c
@@ -471,6 +471,7 @@ run (void *cls,
};
struct TALER_TESTING_Command commands[] = {
+
CMD_RUN_AUDITOR("virgin-auditor"),
CMD_RUN_WIRE_AUDITOR("virgin-wire-auditor"),
TALER_TESTING_cmd_batch ("withdraw",
diff --git a/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf b/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf
index cfa8b1347..8097a6cda 100644
--- a/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf
+++ b/src/lib/test_exchange_api_keys_cherry_picking_extended_2.conf
@@ -2,4 +2,4 @@
[exchange]
# Lengthen over firstly extended value (100 s)
-LOOKAHEAD_SIGN = 1500 s
+LOOKAHEAD_SIGN = 3500 s
diff --git a/src/lib/test_exchange_api_keys_cherry_picking_new.c b/src/lib/test_exchange_api_keys_cherry_picking_new.c
index c1dde0009..b7cea5a48 100644
--- a/src/lib/test_exchange_api_keys_cherry_picking_new.c
+++ b/src/lib/test_exchange_api_keys_cherry_picking_new.c
@@ -113,7 +113,7 @@ run (void *cls,
*/
TALER_TESTING_cmd_check_keys ("check-freshest-keys",
8,
- 8),
+ 10),
TALER_TESTING_cmd_wire ("verify-/wire-with-fresh-keys",
"x-taler-bank",
diff --git a/src/lib/test_exchange_api_overlapping_keys_bug.c b/src/lib/test_exchange_api_overlapping_keys_bug.c
index 2614cd87f..01fb46237 100755
--- a/src/lib/test_exchange_api_overlapping_keys_bug.c
+++ b/src/lib/test_exchange_api_overlapping_keys_bug.c
@@ -93,8 +93,8 @@ run (void *cls,
/* Causes GET /keys?last_denom_issue=0 */
TALER_TESTING_cmd_check_keys_with_last_denom ("second-download",
- 2,
- 8,
+ 3,
+ 4,
GNUNET_TIME_UNIT_ZERO_ABS),
TALER_TESTING_cmd_end ()
};
diff --git a/src/lib/testing_api_loop.c b/src/lib/testing_api_loop.c
index d0865c905..0582b73ba 100644
--- a/src/lib/testing_api_loop.c
+++ b/src/lib/testing_api_loop.c
@@ -309,6 +309,7 @@ do_shutdown (void *cls)
if (NULL != is->exchange)
{
+ TALER_LOG_DEBUG ("Disconnecting the exchange\n");
TALER_EXCHANGE_disconnect (is->exchange);
is->exchange = NULL;
}
diff --git a/src/lib/testing_auditor_api_helpers.c b/src/lib/testing_auditor_api_helpers.c
index 7e7103150..c85fe47b7 100644
--- a/src/lib/testing_auditor_api_helpers.c
+++ b/src/lib/testing_auditor_api_helpers.c
@@ -70,28 +70,6 @@ cleanup_auditor (void *cls)
GNUNET_free (cc);
}
-
-
-/**
- * Function called with information about the auditor.
- *
- * @param cls closure
- * @param vi basic information about the auditor
- * @param compat protocol compatibility information
- */
-static void
-auditor_version_cb (void *cls,
- const struct TALER_AUDITOR_VersionInformation *vi,
- enum TALER_AUDITOR_VersionCompatibility compat)
-{
- struct TALER_TESTING_Interpreter *is = cls;
-
- /* TODO: check vi/compat? */
- is->auditor_working = GNUNET_YES;
-}
-
-
-
/**
* Closure for #auditor_main_wrapper()
*/
@@ -145,21 +123,13 @@ auditor_main_wrapper (void *cls,
"BASE_URL");
return;
}
- is->auditor = TALER_AUDITOR_connect (is->ctx,
- auditor_base_url,
- &auditor_version_cb,
- is);
+
GNUNET_free (auditor_base_url);
- if (NULL == is->auditor)
- {
- GNUNET_break (0);
- return;
- }
cc = GNUNET_new (struct CleanupContext);
cc->is = is;
cc->fcb = is->final_cleanup_cb;
cc->fcb_cls = is->final_cleanup_cb;
- is->final_cleanup_cb = &cleanup_auditor;
+ is->final_cleanup_cb = NULL;
is->final_cleanup_cb_cls = cc;
mwc->main_cb (mwc->main_cb_cls,
is);