gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] branch master updated: clean up history building/checki


From: gnunet
Subject: [taler-exchange] branch master updated: clean up history building/checking logic a bit
Date: Wed, 15 Jan 2020 22:29:12 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

The following commit(s) were added to refs/heads/master by this push:
     new 85c285be clean up history building/checking logic a bit
85c285be is described below

commit 85c285be79e75aaae135a3c1624408e872d607e5
Author: Christian Grothoff <address@hidden>
AuthorDate: Wed Jan 15 22:29:09 2020 +0100

    clean up history building/checking logic a bit
---
 src/include/taler_testing_lib.h                   | 34 ++++++++----
 src/lib/testing_api_cmd_bank_admin_add_incoming.c |  2 +-
 src/lib/testing_api_cmd_bank_history_credit.c     | 41 ++++++++-------
 src/lib/testing_api_cmd_bank_history_debit.c      | 46 +++++++---------
 src/lib/testing_api_cmd_bank_transfer.c           |  2 +-
 src/lib/testing_api_trait_number.c                | 64 +++++++++++++++++------
 6 files changed, 113 insertions(+), 76 deletions(-)

diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h
index 554106cd..877647bb 100644
--- a/src/include/taler_testing_lib.h
+++ b/src/include/taler_testing_lib.h
@@ -49,15 +49,6 @@
   } while (0)
 
 
-// FIXME: replace these
-#define TALER_TESTING_GET_TRAIT_ROW_ID(cmd,out) \
-  TALER_TESTING_get_trait_uint64 (cmd, 3, out)
-
-// FIXME: replace these
-#define TALER_TESTING_MAKE_TRAIT_ROW_ID(data) \
-  TALER_TESTING_make_trait_uint64 (3, data)
-
-
 /**
  * Allocate and return a piece of wire-details.  Combines
  * a @a payto -URL and adds some salt to create the JSON.
@@ -1727,6 +1718,27 @@ TALER_TESTING_get_trait (const struct 
TALER_TESTING_Trait *traits,
 /* ****** Specific traits supported by this component ******* */
 
 
+/**
+ * Obtain a bank transaction row value from @a cmd.
+ *
+ * @param cmd command to extract the number from.
+ * @param row[out] set to the number coming from @a cmd.
+ * @return #GNUNET_OK on success.
+ */
+int
+TALER_TESTING_get_trait_bank_row (const struct TALER_TESTING_Command *cmd,
+                                  const uint64_t **row);
+
+
+/**
+ * Offer bank transaction row trait.
+ *
+ * @param row number to offer.
+ */
+struct TALER_TESTING_Trait
+TALER_TESTING_make_trait_bank_row (const uint64_t *row);
+
+
 /**
  * Offer a reserve private key.
  *
@@ -1857,7 +1869,7 @@ TALER_TESTING_get_trait_exchange_pub (const struct 
TALER_TESTING_Command *cmd,
 int
 TALER_TESTING_get_trait_process (const struct TALER_TESTING_Command *cmd,
                                  unsigned int index,
-                                 struct GNUNET_OS_Process ***processp); // 
FIXME: why is this a ***!? ** should do!
+                                 struct GNUNET_OS_Process ***processp);
 
 
 /**
@@ -1871,7 +1883,7 @@ TALER_TESTING_get_trait_process (const struct 
TALER_TESTING_Command *cmd,
  */
 struct TALER_TESTING_Trait
 TALER_TESTING_make_trait_process (unsigned int index,
-                                  struct GNUNET_OS_Process **processp); // 
FIXME: why is this a "**"? * should do!
+                                  struct GNUNET_OS_Process **processp);
 
 
 /**
diff --git a/src/lib/testing_api_cmd_bank_admin_add_incoming.c 
b/src/lib/testing_api_cmd_bank_admin_add_incoming.c
index 04e7d563..a5c8d684 100644
--- a/src/lib/testing_api_cmd_bank_admin_add_incoming.c
+++ b/src/lib/testing_api_cmd_bank_admin_add_incoming.c
@@ -404,7 +404,7 @@ admin_add_incoming_traits (void *cls,
 {
   struct AdminAddIncomingState *fts = cls;
   struct TALER_TESTING_Trait traits[] = {
-    TALER_TESTING_MAKE_TRAIT_ROW_ID (&fts->serial_id),
+    TALER_TESTING_make_trait_bank_row (&fts->serial_id),
     TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT,
                                     fts->payto_debit_account),
     TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
diff --git a/src/lib/testing_api_cmd_bank_history_credit.c 
b/src/lib/testing_api_cmd_bank_history_credit.c
index fbabc77b..8c85bc17 100644
--- a/src/lib/testing_api_cmd_bank_history_credit.c
+++ b/src/lib/testing_api_cmd_bank_history_credit.c
@@ -217,7 +217,7 @@ build_history (struct TALER_TESTING_Interpreter *is,
   GNUNET_assert (0 != hs->num_results);
   if (0 == is->ip)
   {
-    TALER_LOG_DEBUG ("Checking history at first CMD (empty history)\n");
+    TALER_LOG_DEBUG ("Checking history at FIRST transaction (EMPTY)\n");
     *rh = NULL;
     return 0;
   }
@@ -241,6 +241,9 @@ build_history (struct TALER_TESTING_Interpreter *is,
   if (NULL == row_id_start)
     ok = GNUNET_YES;
 
+  // FIXME: simplify logic by folding the TWO loops into ONE,
+  // (first doubling h if needed, and finally shrinking h to required size)
+
   /* This loop counts how many commands _later than "start"_ belong
    * to the history of the caller.  This is stored in the @var total
    * variable.  */
@@ -251,13 +254,12 @@ build_history (struct TALER_TESTING_Interpreter *is,
     const char *credit_account;
     const char *debit_account;
 
-    /**
-     * The following command allows us to skip over those CMDs
+    /* The following command allows us to skip over those CMDs
      * that do not offer a "row_id" trait.  Such skipped CMDs are
-     * not interesting for building a history.
-     */if (GNUNET_OK != TALER_TESTING_get_trait_uint64 (pos,
-                                                     0,
-                                                     &row_id))
+     * not interesting for building a history. *///
+    if (GNUNET_OK !=
+        TALER_TESTING_get_trait_bank_row (pos,
+                                          &row_id))
       continue;
 
     /* Seek "/history" starting row.  */
@@ -309,7 +311,7 @@ build_history (struct TALER_TESTING_Interpreter *is,
 
   if (0 == total)
   {
-    TALER_LOG_DEBUG ("Checking history at first CMD.. (2)\n");
+    TALER_LOG_DEBUG ("Checking history with ZERO transactions\n");
     *rh = NULL;
     return 0;
   }
@@ -334,8 +336,8 @@ build_history (struct TALER_TESTING_Interpreter *is,
     const char *debit_account;
 
     if (GNUNET_OK !=
-        TALER_TESTING_GET_TRAIT_ROW_ID (pos,
-                                        &row_id))
+        TALER_TESTING_get_trait_bank_row (pos,
+                                          &row_id))
       continue;
 
     if (NULL != row_id_start)
@@ -377,8 +379,7 @@ build_history (struct TALER_TESTING_Interpreter *is,
                    TALER_TESTING_get_trait_payto (pos,
                                                   TALER_TESTING_PT_DEBIT,
                                                   &debit_account));
-    TALER_LOG_INFO ("Potential history bit:"
-                    " %s->%s; my account: %s\n",
+    TALER_LOG_INFO ("Potential history bit: %s->%s; my account: %s\n",
                     debit_account,
                     credit_account,
                     hs->account_url);
@@ -399,15 +400,17 @@ build_history (struct TALER_TESTING_Interpreter *is,
       const char *account_url;
 
       GNUNET_assert (GNUNET_OK ==
-                     TALER_TESTING_get_trait_amount_obj
-                       (pos, 0, &amount));
+                     TALER_TESTING_get_trait_amount_obj (pos,
+                                                         0,
+                                                         &amount));
       GNUNET_assert (GNUNET_OK ==
-                     TALER_TESTING_get_trait_reserve_pub
-                       (pos, 0, &reserve_pub));
+                     TALER_TESTING_get_trait_reserve_pub (pos,
+                                                          0,
+                                                          &reserve_pub));
       GNUNET_assert (GNUNET_OK ==
-                     TALER_TESTING_get_trait_url
-                       (pos, 1,
-                       &account_url));
+                     TALER_TESTING_get_trait_url (pos,
+                                                  1,
+                                                  &account_url));
       h[total].url = GNUNET_strdup (debit_account);
       h[total].details.debit_account_url = h[total].url;
       h[total].details.amount = *amount;
diff --git a/src/lib/testing_api_cmd_bank_history_debit.c 
b/src/lib/testing_api_cmd_bank_history_debit.c
index c98eb26a..2b80ca83 100644
--- a/src/lib/testing_api_cmd_bank_history_debit.c
+++ b/src/lib/testing_api_cmd_bank_history_debit.c
@@ -239,6 +239,9 @@ build_history (struct TALER_TESTING_Interpreter *is,
   if (NULL == row_id_start)
     ok = GNUNET_YES;
 
+  // FIXME: simplify logic by folding the TWO loops into ONE,
+  // (first doubling h if needed, and finally shrinking h to required size)
+
   /* This loop counts how many commands _later than "start"_ belong
    * to the history of the caller.  This is stored in the @var total
    * variable.  */
@@ -251,11 +254,10 @@ build_history (struct TALER_TESTING_Interpreter *is,
 
     /* The following command allows us to skip over those CMDs
      * that do not offer a "row_id" trait.  Such skipped CMDs are
-     * not interesting for building a history.
-     */
-    if (GNUNET_OK != TALER_TESTING_get_trait_uint64 (pos,
-                                                     0,
-                                                     &row_id))
+     * not interesting for building a history. *///
+    if (GNUNET_OK !=
+        TALER_TESTING_get_trait_bank_row (pos,
+                                          &row_id))
       continue;
 
     /* Seek "/history" starting row.  */
@@ -275,7 +277,6 @@ build_history (struct TALER_TESTING_Interpreter *is,
       continue; /* skip until we find the marker */
 
     TALER_LOG_DEBUG ("Found first row\n");
-
     if (total >= GNUNET_MAX (hs->num_results,
                              -hs->num_results) )
     {
@@ -287,7 +288,6 @@ build_history (struct TALER_TESTING_Interpreter *is,
                    TALER_TESTING_get_trait_payto (pos,
                                                   TALER_TESTING_PT_DEBIT,
                                                   &debit_account));
-
     GNUNET_assert (GNUNET_OK ==
                    TALER_TESTING_get_trait_payto (pos,
                                                   TALER_TESTING_PT_CREDIT,
@@ -333,8 +333,8 @@ build_history (struct TALER_TESTING_Interpreter *is,
     const char *debit_account;
 
     if (GNUNET_OK !=
-        TALER_TESTING_GET_TRAIT_ROW_ID (pos,
-                                        &row_id))
+        TALER_TESTING_get_trait_bank_row (pos,
+                                          &row_id))
       continue;
 
     if (NULL != row_id_start)
@@ -353,7 +353,6 @@ build_history (struct TALER_TESTING_Interpreter *is,
     }
 
     TALER_LOG_INFO ("Found first row (2)\n");
-
     if (GNUNET_NO == ok)
     {
       TALER_LOG_INFO ("Skip on `%s'\n",
@@ -380,17 +379,6 @@ build_history (struct TALER_TESTING_Interpreter *is,
                     debit_account,
                     credit_account,
                     hs->account_url);
-    /* Discard transactions where the audited account played _both_ the debit
-     * and the debit roles, but _only if_ the audit goes on both directions..
-     * This needs more explaination!
-     */
-    if (0 == strcasecmp (hs->account_url,
-                         debit_account))
-    {
-      GNUNET_break (0);
-      continue;
-    }
-
     bank_hostname = strchr (hs->account_url, ':');
     GNUNET_assert (NULL != bank_hostname);
     bank_hostname += 3;
@@ -407,15 +395,17 @@ build_history (struct TALER_TESTING_Interpreter *is,
       const char *account_url;
 
       GNUNET_assert (GNUNET_OK ==
-                     TALER_TESTING_get_trait_amount_obj
-                       (pos, 0, &amount));
+                     TALER_TESTING_get_trait_amount_obj (pos,
+                                                         0,
+                                                         &amount));
       GNUNET_assert (GNUNET_OK ==
-                     TALER_TESTING_get_trait_wtid
-                       (pos, 0, &wtid));
+                     TALER_TESTING_get_trait_wtid (pos,
+                                                   0,
+                                                   &wtid));
       GNUNET_assert (GNUNET_OK ==
-                     TALER_TESTING_get_trait_url
-                       (pos, 1,
-                       &account_url));
+                     TALER_TESTING_get_trait_url (pos,
+                                                  1,
+                                                  &account_url));
       h[total].url = GNUNET_strdup (credit_account);
       h[total].details.credit_account_url = h[total].url;
       h[total].details.amount = *amount;
diff --git a/src/lib/testing_api_cmd_bank_transfer.c 
b/src/lib/testing_api_cmd_bank_transfer.c
index efa22d74..bad707aa 100644
--- a/src/lib/testing_api_cmd_bank_transfer.c
+++ b/src/lib/testing_api_cmd_bank_transfer.c
@@ -298,7 +298,7 @@ transfer_traits (void *cls,
   struct TransferState *fts = cls;
   struct TALER_TESTING_Trait traits[] = {
     TALER_TESTING_make_trait_url (1, fts->account_debit_url),
-    TALER_TESTING_MAKE_TRAIT_ROW_ID (&fts->serial_id),
+    TALER_TESTING_make_trait_bank_row (&fts->serial_id),
     TALER_TESTING_make_trait_payto (TALER_TESTING_PT_CREDIT,
                                     fts->payto_credit_account),
     TALER_TESTING_make_trait_payto (TALER_TESTING_PT_DEBIT,
diff --git a/src/lib/testing_api_trait_number.c 
b/src/lib/testing_api_trait_number.c
index ff774165..82aa3470 100644
--- a/src/lib/testing_api_trait_number.c
+++ b/src/lib/testing_api_trait_number.c
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2018 Taler Systems SA
+  Copyright (C) 2018-2020 Taler Systems SA
 
   TALER is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published
@@ -16,7 +16,6 @@
   License along with TALER; see the file COPYING.  If not, see
   <http://www.gnu.org/licenses/>
 */
-
 /**
  * @file exchange-lib/testing_api_trait_number.c
  * @brief traits to offer numbers
@@ -31,6 +30,8 @@
 
 #define TALER_TESTING_TRAIT_UINT "uint"
 #define TALER_TESTING_TRAIT_UINT64 "uint-64"
+#define TALER_TESTING_TRAIT_BANK_ROW "bank-transaction-row"
+
 
 /**
  * Obtain a number from @a cmd.
@@ -41,10 +42,9 @@
  * @return #GNUNET_OK on success.
  */
 int
-TALER_TESTING_get_trait_uint
-  (const struct TALER_TESTING_Command *cmd,
-  unsigned int index,
-  const unsigned int **n)
+TALER_TESTING_get_trait_uint (const struct TALER_TESTING_Command *cmd,
+                              unsigned int index,
+                              const unsigned int **n)
 {
   return cmd->traits (cmd->cls,
                       (const void **) n,
@@ -61,9 +61,8 @@ TALER_TESTING_get_trait_uint
  * @return #GNUNET_OK on success.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_uint
-  (unsigned int index,
-  const unsigned int *n)
+TALER_TESTING_make_trait_uint (unsigned int index,
+                               const unsigned int *n)
 {
   struct TALER_TESTING_Trait ret = {
     .index = index,
@@ -84,10 +83,9 @@ TALER_TESTING_make_trait_uint
  * @return #GNUNET_OK on success.
  */
 int
-TALER_TESTING_get_trait_uint64
-  (const struct TALER_TESTING_Command *cmd,
-  unsigned int index,
-  const uint64_t **n)
+TALER_TESTING_get_trait_uint64 (const struct TALER_TESTING_Command *cmd,
+                                unsigned int index,
+                                const uint64_t **n)
 {
   return cmd->traits (cmd->cls,
                       (const void **) n,
@@ -103,9 +101,8 @@ TALER_TESTING_get_trait_uint64
  * @param n number to offer.
  */
 struct TALER_TESTING_Trait
-TALER_TESTING_make_trait_uint64
-  (unsigned int index,
-  const uint64_t *n)
+TALER_TESTING_make_trait_uint64 (unsigned int index,
+                                 const uint64_t *n)
 {
   struct TALER_TESTING_Trait ret = {
     .index = index,
@@ -116,4 +113,39 @@ TALER_TESTING_make_trait_uint64
 }
 
 
+/**
+ * Obtain a bank transaction row value from @a cmd.
+ *
+ * @param cmd command to extract the number from.
+ * @param row[out] set to the number coming from @a cmd.
+ * @return #GNUNET_OK on success.
+ */
+int
+TALER_TESTING_get_trait_bank_row (const struct TALER_TESTING_Command *cmd,
+                                  const uint64_t **row)
+{
+  return cmd->traits (cmd->cls,
+                      (const void **) row,
+                      TALER_TESTING_TRAIT_BANK_ROW,
+                      0);
+}
+
+
+/**
+ * Offer bank transaction row trait.
+ *
+ * @param row number to offer.
+ */
+struct TALER_TESTING_Trait
+TALER_TESTING_make_trait_bank_row (const uint64_t *row)
+{
+  struct TALER_TESTING_Trait ret = {
+    .index = 0,
+    .trait_name = TALER_TESTING_TRAIT_BANK_ROW,
+    .ptr = (const void *) row
+  };
+  return ret;
+}
+
+
 /* end of testing_api_trait_number.c */

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]