gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] [taler-exchange] branch master updated: indentation, discus


From: gnunet
Subject: [GNUnet-SVN] [taler-exchange] branch master updated: indentation, discuss logic flaw, discuss todo in test-auditor.sh script
Date: Fri, 23 Aug 2019 21:14:54 +0200

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 b5dd2bcd indentation, discuss logic flaw, discuss todo in 
test-auditor.sh script
b5dd2bcd is described below

commit b5dd2bcdbb25cd6af1897b652c05d782a64dac5f
Author: Christian Grothoff <address@hidden>
AuthorDate: Fri Aug 23 21:14:50 2019 +0200

    indentation, discuss logic flaw, discuss todo in test-auditor.sh script
---
 src/auditor/taler-wire-auditor.c | 190 +++++++++++++++++++++++----------------
 src/auditor/test-auditor.sh      |   5 ++
 2 files changed, 119 insertions(+), 76 deletions(-)

diff --git a/src/auditor/taler-wire-auditor.c b/src/auditor/taler-wire-auditor.c
index 7b96e34e..3b84a641 100644
--- a/src/auditor/taler-wire-auditor.c
+++ b/src/auditor/taler-wire-auditor.c
@@ -1,6 +1,6 @@
 /*
   This file is part of TALER
-  Copyright (C) 2017-2018 Taler Systems SA
+  Copyright (C) 2017-2019 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 by the Free Software
@@ -330,15 +330,15 @@ struct ReserveOutInfo
  */
 static int
 free_rii (void *cls,
-         const struct GNUNET_HashCode *key,
-         void *value)
+          const struct GNUNET_HashCode *key,
+          void *value)
 {
   struct ReserveInInfo *rii = value;
 
   GNUNET_assert (GNUNET_YES ==
-                GNUNET_CONTAINER_multihashmap_remove (in_map,
-                                                      key,
-                                                      rii));
+                 GNUNET_CONTAINER_multihashmap_remove (in_map,
+                                                       key,
+                                                       rii));
   GNUNET_free (rii->details.account_url);
   GNUNET_free_non_null (rii->details.wtid_s); /* field not used (yet) */
   GNUNET_free (rii);
@@ -356,15 +356,15 @@ free_rii (void *cls,
  */
 static int
 free_roi (void *cls,
-         const struct GNUNET_HashCode *key,
-         void *value)
+          const struct GNUNET_HashCode *key,
+          void *value)
 {
   struct ReserveOutInfo *roi = value;
 
   GNUNET_assert (GNUNET_YES ==
-                GNUNET_CONTAINER_multihashmap_remove (out_map,
-                                                      key,
-                                                      roi));
+                 GNUNET_CONTAINER_multihashmap_remove (out_map,
+                                                       key,
+                                                       roi));
   GNUNET_free (roi->details.account_url);
   GNUNET_free_non_null (roi->details.wtid_s); /* field not used (yet) */
   GNUNET_free (roi);
@@ -391,13 +391,13 @@ do_shutdown (void *cls)
                         " s:o, s:o, s:o, s:o, s:o,"
                         " s:o, s:o, s:o, s:o }",
                         /* blocks of 5 */
-                       "wire_out_amount_inconsistencies",
+                        "wire_out_amount_inconsistencies",
                         report_wire_out_inconsistencies,
                         "total_wire_out_delta_plus",
                         TALER_JSON_from_amount (&total_bad_amount_out_plus),
                         "total_wire_out_delta_minus",
                         TALER_JSON_from_amount (&total_bad_amount_out_minus),
-                       "reserve_in_amount_inconsistencies",
+                        "reserve_in_amount_inconsistencies",
                         report_reserve_in_inconsistencies,
                         "total_wire_in_delta_plus",
                         TALER_JSON_from_amount (&total_bad_amount_in_plus),
@@ -408,9 +408,9 @@ do_shutdown (void *cls)
                         report_missattribution_in_inconsistencies,
                         "total_missattribution_in",
                         TALER_JSON_from_amount (&total_missattribution_in),
-                       "row_inconsistencies",
+                        "row_inconsistencies",
                         report_row_inconsistencies,
-                       "row_minor_inconsistencies",
+                        "row_minor_inconsistencies",
                         report_row_minor_inconsistencies,
                         /* block */
                         "total_wire_format_amount",
@@ -423,8 +423,8 @@ do_shutdown (void *cls)
                         report_lags);
     GNUNET_break (NULL != report);
     json_dumpf (report,
-               stdout,
-               JSON_INDENT (2));
+                stdout,
+                JSON_INDENT (2));
     json_decref (report);
     report_wire_out_inconsistencies = NULL;
     report_reserve_in_inconsistencies = NULL;
@@ -443,16 +443,16 @@ do_shutdown (void *cls)
   if (NULL != in_map)
   {
     GNUNET_CONTAINER_multihashmap_iterate (in_map,
-                                          &free_rii,
-                                          NULL);
+                                           &free_rii,
+                                           NULL);
     GNUNET_CONTAINER_multihashmap_destroy (in_map);
     in_map = NULL;
   }
   if (NULL != out_map)
   {
     GNUNET_CONTAINER_multihashmap_iterate (out_map,
-                                          &free_roi,
-                                          NULL);
+                                           &free_roi,
+                                           NULL);
     GNUNET_CONTAINER_multihashmap_destroy (out_map);
     out_map = NULL;
   }
@@ -499,12 +499,12 @@ do_shutdown (void *cls)
  */
 static void
 report (json_t *array,
-       json_t *object)
+        json_t *object)
 {
   GNUNET_assert (NULL != object);
   GNUNET_assert (0 ==
-                json_array_append_new (array,
-                                       object));
+                 json_array_append_new (array,
+                                        object));
 }
 
 
@@ -524,10 +524,10 @@ commit (enum GNUNET_DB_QueryStatus qs)
   {
     if (GNUNET_DB_STATUS_SOFT_ERROR == qs)
       GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-                 "Serialization issue, not recording progress\n");
+                  "Serialization issue, not recording progress\n");
     else
       GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                 "Hard error, not recording progress\n");
+                  "Hard error, not recording progress\n");
     adb->rollback (adb->cls,
                    asession);
     edb->rollback (edb->cls,
@@ -556,7 +556,7 @@ commit (enum GNUNET_DB_QueryStatus qs)
   if (0 >= qs)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-               "Failed to update auditor DB, not recording progress\n");
+                "Failed to update auditor DB, not recording progress\n");
     GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
     return qs;
   }
@@ -568,7 +568,7 @@ commit (enum GNUNET_DB_QueryStatus qs)
   if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qs)
   {
     qs = edb->commit (edb->cls,
-                       esession);
+                      esession);
     if (0 > qs)
     {
       GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
@@ -580,10 +580,10 @@ commit (enum GNUNET_DB_QueryStatus qs)
     else
     {
       qs = adb->commit (adb->cls,
-                       asession);
+                        asession);
       if (0 > qs)
       {
-       GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
+        GNUNET_break (GNUNET_DB_STATUS_SOFT_ERROR == qs);
         GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
                     "Auditor DB commit failed!\n");
       }
@@ -628,11 +628,16 @@ wire_out_cb (void *cls,
   struct GNUNET_HashCode key;
   struct ReserveOutInfo *roi;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Exchange wire OUT at %s of %s with WTID %s\n",
+              GNUNET_STRINGS_absolute_time_to_string (date),
+              TALER_amount2s (amount),
+              TALER_B2S (wtid));
   GNUNET_CRYPTO_hash (wtid,
-                     sizeof (struct TALER_WireTransferIdentifierRawP),
-                     &key);
+                      sizeof (struct TALER_WireTransferIdentifierRawP),
+                      &key);
   roi = GNUNET_CONTAINER_multihashmap_get (in_map,
-                                          &key);
+                                           &key);
   if (NULL == roi)
   {
     /* Wire transfer was not made (yet) at all (but would have been
@@ -693,7 +698,7 @@ wire_out_cb (void *cls,
     GNUNET_free (payto_url);
   }
   if (0 != TALER_amount_cmp (&roi->details.amount,
-                            amount))
+                             amount))
   {
     report (report_wire_out_inconsistencies,
             json_pack ("{s:I, s:o, s:o, s:o, s:s, s:s}",
@@ -745,13 +750,13 @@ wire_out_cb (void *cls,
   }
 cleanup:
   GNUNET_assert (GNUNET_OK ==
-                GNUNET_CONTAINER_multihashmap_remove (out_map,
-                                                      &key,
-                                                      roi));
+                 GNUNET_CONTAINER_multihashmap_remove (out_map,
+                                                       &key,
+                                                       roi));
   GNUNET_assert (GNUNET_OK ==
-                free_roi (NULL,
-                          &key,
-                          roi));
+                 free_roi (NULL,
+                           &key,
+                           roi));
   return GNUNET_OK;
 }
 
@@ -767,8 +772,8 @@ cleanup:
  */
 static int
 complain_out_not_found (void *cls,
-                       const struct GNUNET_HashCode *key,
-                       void *value)
+                        const struct GNUNET_HashCode *key,
+                        void *value)
 {
   struct ReserveOutInfo *roi = value;
 
@@ -861,6 +866,8 @@ check_exchange_wire_out ()
   enum GNUNET_DB_QueryStatus qs;
   struct GNUNET_TIME_Absolute next_timestamp;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Analyzing exchange's wire OUT table\n");
   qs = edb->select_wire_out_above_serial_id_by_account (edb->cls,
                                                         esession,
                                                         wp_section_name,
@@ -891,6 +898,8 @@ check_exchange_wire_out ()
      without immediately raising undue concern */
   next_timestamp = GNUNET_TIME_absolute_subtract (next_timestamp,
                                                   GRACE_PERIOD);
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Analyzing exchange's unfinished deposits\n");
   qs = edb->select_deposits_missing_wire (edb->cls,
                                           esession,
                                           pp.last_timestamp,
@@ -927,14 +936,15 @@ check_exchange_wire_out ()
 static int
 history_debit_cb (void *cls,
                   enum TALER_ErrorCode ec,
-                 enum TALER_BANK_Direction dir,
-                 const void *row_off,
-                 size_t row_off_size,
-                 const struct TALER_WIRE_TransferDetails *details)
+                  enum TALER_BANK_Direction dir,
+                  const void *row_off,
+                  size_t row_off_size,
+                  const struct TALER_WIRE_TransferDetails *details)
 {
   struct ReserveOutInfo *roi;
   struct GNUNET_HashCode rowh;
 
+
   if (TALER_BANK_DIRECTION_NONE == dir)
   {
     if (TALER_EC_NONE != ec)
@@ -950,6 +960,11 @@ history_debit_cb (void *cls,
     check_exchange_wire_out ();
     return GNUNET_OK;
   }
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Analyzing bank DEBIT at %s of %s with WTID %s\n",
+              GNUNET_STRINGS_absolute_time_to_string (details->execution_date),
+              TALER_amount2s (&details->amount),
+              TALER_B2S (&details->wtid));
   if (NULL != details->wtid_s)
   {
     char *diagnostic;
@@ -1019,9 +1034,11 @@ history_debit_cb (void *cls,
 static void
 process_debits ()
 {
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Checking bank DEBIT records\n");
   GNUNET_assert (NULL == hh);
   out_map = GNUNET_CONTAINER_multihashmap_create (1024,
-                                                 GNUNET_YES);
+                                                  GNUNET_YES);
   hh = wp->get_history (wp->cls,
                         wp_section_name,
                         TALER_BANK_DIRECTION_DEBIT,
@@ -1061,17 +1078,21 @@ process_debits ()
  */
 static int
 reserve_in_cb (void *cls,
-              uint64_t rowid,
-              const struct TALER_ReservePublicKeyP *reserve_pub,
-              const struct TALER_Amount *credit,
-              const char *sender_url,
-              const void *wire_reference,
-              size_t wire_reference_size,
-              struct GNUNET_TIME_Absolute execution_date)
-
+               uint64_t rowid,
+               const struct TALER_ReservePublicKeyP *reserve_pub,
+               const struct TALER_Amount *credit,
+               const char *sender_url,
+               const void *wire_reference,
+               size_t wire_reference_size,
+               struct GNUNET_TIME_Absolute execution_date)
 {
   struct ReserveInInfo *rii;
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Analyzing exchange wire IN at %s of %s with reserve_pub %s\n",
+              GNUNET_STRINGS_absolute_time_to_string (execution_date),
+              TALER_amount2s (credit),
+              TALER_B2S (reserve_pub));
   rii = GNUNET_new (struct ReserveInInfo);
   GNUNET_CRYPTO_hash (wire_reference,
                      wire_reference_size,
@@ -1089,9 +1110,9 @@ reserve_in_cb (void *cls,
   rii->rowid = rowid;
   if (GNUNET_OK !=
       GNUNET_CONTAINER_multihashmap_put (in_map,
-                                        &rii->row_off_hash,
-                                        rii,
-                                        
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
+                                         &rii->row_off_hash,
+                                         rii,
+                                         
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY))
   {
     report (report_row_inconsistencies,
             json_pack ("{s:s, s:I, s:o, s:s}",
@@ -1119,8 +1140,8 @@ reserve_in_cb (void *cls,
  */
 static int
 complain_in_not_found (void *cls,
-                      const struct GNUNET_HashCode *key,
-                      void *value)
+                       const struct GNUNET_HashCode *key,
+                       void *value)
 {
   struct ReserveInInfo *rii = value;
 
@@ -1199,16 +1220,21 @@ history_credit_cb (void *cls,
     conclude_credit_history ();
     return GNUNET_OK;
   }
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Analyzing bank CREDIT at %s of %s with WTID %s\n",
+              GNUNET_STRINGS_absolute_time_to_string (details->execution_date),
+              TALER_amount2s (&details->amount),
+              TALER_B2S (&details->wtid));
   GNUNET_CRYPTO_hash (row_off,
-                     row_off_size,
-                     &key);
+                      row_off_size,
+                      &key);
   rii = GNUNET_CONTAINER_multihashmap_get (in_map,
-                                          &key);
+                                           &key);
   if (NULL == rii)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_INFO,
-               "Failed to find wire transfer at `%s' in exchange database. 
Audit ends at this point in time.\n",
-               GNUNET_STRINGS_absolute_time_to_string 
(details->execution_date));
+                "Failed to find wire transfer at `%s' in exchange database. 
Audit ends at this point in time.\n",
+                GNUNET_STRINGS_absolute_time_to_string 
(details->execution_date));
     hh = NULL;
     conclude_credit_history ();
     return GNUNET_SYSERR; /* not an error, just end of processing */
@@ -1229,8 +1255,8 @@ history_credit_cb (void *cls,
     return GNUNET_SYSERR;
   }
   memcpy (in_wire_off,
-         row_off,
-         row_off_size);
+          row_off,
+          row_off_size);
 
   /* compare records with expected data */
   if (row_off_size != rii->row_off_size)
@@ -1275,7 +1301,7 @@ history_credit_cb (void *cls,
     goto cleanup;
   }
   if (0 != TALER_amount_cmp (&rii->details.amount,
-                            &details->amount))
+                             &details->amount))
   {
     report (report_reserve_in_inconsistencies,
             json_pack ("{s:I, s:o, s:o, s:o, s:s, s:s}",
@@ -1340,13 +1366,13 @@ history_credit_cb (void *cls,
   }
  cleanup:
   GNUNET_assert (GNUNET_OK ==
-                GNUNET_CONTAINER_multihashmap_remove (in_map,
-                                                      &key,
-                                                      rii));
+                 GNUNET_CONTAINER_multihashmap_remove (in_map,
+                                                       &key,
+                                                       rii));
   GNUNET_assert (GNUNET_OK ==
-                free_rii (NULL,
-                          &key,
-                          rii));
+                 free_rii (NULL,
+                           &key,
+                           rii));
   return GNUNET_OK;
 }
 
@@ -1368,9 +1394,16 @@ process_next_account (void *cls)
   int ret;
 
   (void) cls;
+  // FIXME: this logic is broken at a high level,
+  // as it iterates over the exchange's incoming
+  // transactions once PER bank account, so for
+  // multiple bank accounts this cannot work!
   if (NULL == (wa = wa_head))
   {
-    commit (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT);
+    GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+                "Finished with all accounts, shutting down\n");
+    if (NULL != wp)
+      commit (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT);
     GNUNET_SCHEDULER_shutdown ();
     return;
   }
@@ -1437,8 +1470,10 @@ process_next_account (void *cls)
                 (unsigned long long) pp.last_wire_out_serial_id);
   }
 
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Analyzing exchange's wire IN table\n");
   in_map = GNUNET_CONTAINER_multihashmap_create (1024,
-                                                GNUNET_YES);
+                                                 GNUNET_YES);
   qs = edb->select_reserves_in_above_serial_id_by_account (edb->cls,
                                                            esession,
                                                            wp_section_name,
@@ -1459,6 +1494,8 @@ process_next_account (void *cls)
     process_debits ();
     return;
   }
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+              "Checking bank CREDIT records\n");
   hh = wp->get_history (wp->cls,
                         wp_section_name,
                         TALER_BANK_DIRECTION_CREDIT,
@@ -1679,6 +1716,7 @@ run (void *cls,
   TALER_EXCHANGEDB_find_accounts (cfg,
                                   &process_account_cb,
                                   NULL);
+  process_next_account (NULL);
 }
 
 
diff --git a/src/auditor/test-auditor.sh b/src/auditor/test-auditor.sh
index 8bf54e5d..260124fa 100755
--- a/src/auditor/test-auditor.sh
+++ b/src/auditor/test-auditor.sh
@@ -32,6 +32,10 @@ taler-bank-manage -c test-auditor.conf serve-http 
2>/dev/null >/dev/null &
 # Run the auditor!
 echo "Running audit(s)"
 taler-auditor -c test-auditor.conf -m $MASTER_PUB > test-audit.json
+
+# TODO:
+# - need to configure exchange's bank accounts in test-auditor.conf,
+#   otherwise the auditor cannot find them!
 taler-wire-auditor -c test-auditor.conf -m $MASTER_PUB > test-wire-audit.json
 
 echo "Shutting down services"
@@ -51,6 +55,7 @@ echo -n "Test for emergencies... "
 jq -e .emergencies[0] < test-audit.json > /dev/null && (echo Failed; fail=1) 
|| echo OK
 
 # TODO: Add more checks to ensure test-audit.json matches expectations
+echo "UPDATE reserves_in SET credit_val=5 WHERE reserve_in_serial_id=1" | psql 
$DB
 
 
 echo "Cleanup"

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



reply via email to

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