diff options
| author | Christian Grothoff <christian@grothoff.org> | 2019-12-03 12:39:32 +0100 | 
|---|---|---|
| committer | Christian Grothoff <christian@grothoff.org> | 2019-12-03 12:39:32 +0100 | 
| commit | 25a0b60f129dc99aee8d1b5e55903ca6f212bd5f (patch) | |
| tree | 0046eed4cc19faa3db19c59a7b5e935a075763fb /src/auditor/taler-wire-auditor.c | |
| parent | 6c5d46327bc09b1de2c5f1fb41290b7da4aed8d0 (diff) | |
implement #5967: have ranges in auditor reports, untested because right now tests somehow do not work
Diffstat (limited to 'src/auditor/taler-wire-auditor.c')
| -rw-r--r-- | src/auditor/taler-wire-auditor.c | 71 | 
1 files changed, 69 insertions, 2 deletions
diff --git a/src/auditor/taler-wire-auditor.c b/src/auditor/taler-wire-auditor.c index 276f3554..544f1277 100644 --- a/src/auditor/taler-wire-auditor.c +++ b/src/auditor/taler-wire-auditor.c @@ -85,6 +85,11 @@ struct WireAccount    struct TALER_AUDITORDB_WireAccountProgressPoint pp;    /** +   * Initial progress point for this account. +   */ +  struct TALER_AUDITORDB_WireAccountProgressPoint start_pp; + +  /**     * Where we are in the inbound (CREDIT) transaction history.     */    void *in_wire_off; @@ -160,6 +165,11 @@ static int global_ret;  static int restart;  /** + * Time when we started the wire audit. + */ +static struct GNUNET_TIME_Absolute start_time; + +/**   * Handle to access the exchange's database.   */  static struct TALER_EXCHANGEDB_Plugin *edb; @@ -228,6 +238,11 @@ static enum GNUNET_DB_QueryStatus qsx;  static struct TALER_AUDITORDB_WireProgressPoint pp;  /** + * Last reserve_in / wire_out serial IDs seen. + */ +static struct TALER_AUDITORDB_WireProgressPoint start_pp; + +/**   * Array of reports about row inconsitencies in wire_out table.   */  static json_t *report_wire_out_inconsistencies; @@ -270,6 +285,11 @@ static json_t *report_lags;  static json_t *report_closure_lags;  /** + * Array of per-account progress data. + */ +static json_t *report_account_progress; + +/**   * Amount that is considered "tiny"   */  static struct TALER_Amount tiny_amount; @@ -483,7 +503,8 @@ do_shutdown (void *cls)      report = json_pack ("{s:o, s:o, s:o, s:o, s:o,"                          " s:o, s:o, s:o, s:o, s:o,"                          " s:o, s:o, s:o, s:o, s:o," -                        " s:o }", +                        " s:o, s:o, s:o, s:I, s:I," +                        " s:s, s:s, s:o }",                          /* blocks of 5 */                          /* Tested in test-auditor.sh #11, #15, #20 */                          "wire_out_amount_inconsistencies", @@ -533,7 +554,28 @@ do_shutdown (void *cls)                          /* blocks of 5 */                          /* Tested in test-auditor.sh #22 */                          "reserve_lag_details", -                        report_closure_lags); +                        report_closure_lags, +                        "wire_auditor_start_time", json_string ( +                          GNUNET_STRINGS_absolute_time_to_string (start_time)), +                        "wire_auditor_end_time", json_string ( +                          GNUNET_STRINGS_absolute_time_to_string ( +                            GNUNET_TIME_absolute_get ())), +                        "start_pp_reserve_close_uuid", +                        (json_int_t) start_pp.last_reserve_close_uuid, +                        "end_pp_reserve_close_uuid", +                        (json_int_t) pp.last_reserve_close_uuid, +                        /* blocks of 5 */ +                        "start_pp_last_timestamp", +                        json_string ( +                          GNUNET_STRINGS_absolute_time_to_string ( +                            start_pp.last_timestamp)), +                        "end_pp_last_timestamp", +                        json_string ( +                          GNUNET_STRINGS_absolute_time_to_string ( +                            pp.last_timestamp)), +                        "account_progress", +                        report_account_progress +                        );      GNUNET_break (NULL != report);      json_dumpf (report,                  stdout, @@ -546,6 +588,7 @@ do_shutdown (void *cls)      report_missattribution_in_inconsistencies = NULL;      report_lags = NULL;      report_closure_lags = NULL; +    report_account_progress = NULL;      report_wire_format_inconsistencies = NULL;    }    if (NULL != reserve_closures) @@ -717,6 +760,26 @@ commit (enum GNUNET_DB_QueryStatus qs)         NULL != wa;         wa = wa->next)    { +    GNUNET_assert (0 == +                   json_array_append_new (report_account_progress, +                                          json_pack ( +                                            "{s:s, s:I, s:I, s:I, s:I}", +                                            "account", +                                            wa->section_name, +                                            "start_reserve_in", +                                            (json_int_t) wa->start_pp. +                                            last_reserve_in_serial_id, +                                            "end_reserve_in", +                                            (json_int_t) wa->pp. +                                            last_reserve_in_serial_id, +                                            "start_wire_out", +                                            (json_int_t) wa->start_pp. +                                            last_wire_out_serial_id, +                                            "end_wire_out", +                                            (json_int_t) wa->pp. +                                            last_wire_out_serial_id +                                            )) +                   );      if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qsx)        qs = adb->update_wire_auditor_account_progress (adb->cls,                                                        asession, @@ -1983,6 +2046,7 @@ begin_transaction ()        GNUNET_SCHEDULER_shutdown ();        return;      } +    wa->start_pp = wa->pp;    }    qsx = adb->get_wire_auditor_progress (adb->cls,                                          asession, @@ -2003,6 +2067,7 @@ begin_transaction ()    }    else    { +    start_pp = pp;      GNUNET_log (GNUNET_ERROR_TYPE_INFO,                  "Resuming audit at %s / %llu\n",                  GNUNET_STRINGS_absolute_time_to_string (pp.last_timestamp), @@ -2228,6 +2293,8 @@ run (void *cls,                   (report_lags = json_array ()));    GNUNET_assert (NULL !=                   (report_closure_lags = json_array ())); +  GNUNET_assert (NULL != +                 (report_account_progress = json_array ()));    GNUNET_assert (GNUNET_OK ==                   TALER_amount_get_zero (currency,                                          &total_bad_amount_out_plus));  | 
