+ private replacer(key: string, value: any) {
+ // Display the arrays of keys 'ranges' and 'values' horizontally as they take up too much space
+ // and Stringify displays it in vertical by default.
+ if ((key === 'ranges' || key === 'values') && Array.isArray(value)) {
+ const elements = [];
+ for (let i = 0; i < value.length; i++) {
+ elements.push(JSON.stringify(value[i]));
+ }
+ return elements;
+ }
+ // Else, just return the value as is, without any formatting.
+ return value;
+ }
+
+ replacerTest(report: object) {
+ return JSON.stringify(report, this.replacer, 2);
+ }
+
+ private formatReport() {
+ let copy = {};
+ copy = JSON.parse(JSON.stringify(this.report));
+ const perf_keys = [
+ 'perf_counters',
+ 'stats_per_pool',
+ 'stats_per_pg',
+ 'io_rate',
+ 'osd_perf_histograms',
+ 'mempool',
+ 'heap_stats',
+ 'rocksdb_stats'
+ ];
+ for (let i = 0; i < perf_keys.length; i++) {
+ const key = perf_keys[i];
+ if (key in copy['report']) {
+ delete copy['report'][key];
+ }
+ }
+ return JSON.stringify(copy, null, 2);
+ }
+
+ formatReportTest(report: object) {
+ let copy = {};
+ copy = JSON.parse(JSON.stringify(report));
+ const perf_keys = [
+ 'perf_counters',
+ 'stats_per_pool',
+ 'stats_per_pg',
+ 'io_rate',
+ 'osd_perf_histograms',
+ 'mempool',
+ 'heap_stats',
+ 'rocksdb_stats'
+ ];
+ for (let i = 0; i < perf_keys.length; i++) {
+ const key = perf_keys[i];
+ if (key in copy) {
+ delete copy[key];
+ }
+ }
+ return JSON.stringify(copy, null, 2);
+ }
+