@checkstack/collector-hardware-backend 0.1.14 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @checkstack/collector-hardware-backend
2
2
 
3
+ ## 0.1.15
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [3dd1914]
8
+ - @checkstack/backend-api@0.7.0
9
+
3
10
  ## 0.1.14
4
11
 
5
12
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@checkstack/collector-hardware-backend",
3
- "version": "0.1.14",
3
+ "version": "0.1.15",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "scripts": {
@@ -121,10 +121,10 @@ describe("CpuCollector", () => {
121
121
  let aggregated = collector.mergeResult(undefined, runs[0]);
122
122
  aggregated = collector.mergeResult(aggregated, runs[1]);
123
123
 
124
- expect(aggregated.avgUsagePercent).toBe(50);
125
- expect(aggregated.maxUsagePercent).toBe(75);
124
+ expect(aggregated.avgUsagePercent.avg).toBe(50);
125
+ expect(aggregated.maxUsagePercent.max).toBe(75);
126
126
  // (1.0 + 2.0) / 2 = 1.5
127
- expect(aggregated.avgLoadAvg1m).toBe(1.5);
127
+ expect(aggregated.avgLoadAvg1m.avg).toBe(1.5);
128
128
  });
129
129
  });
130
130
 
@@ -6,10 +6,10 @@ import {
6
6
  type CollectorStrategy,
7
7
  mergeAverage,
8
8
  mergeMinMax,
9
- averageStateSchema,
10
- minMaxStateSchema,
11
- type AverageState,
12
- type MinMaxState,
9
+ VersionedAggregated,
10
+ aggregatedAverage,
11
+ aggregatedMinMax,
12
+ type InferAggregatedResult,
13
13
  } from "@checkstack/backend-api";
14
14
  import { healthResultNumber } from "@checkstack/healthcheck-common";
15
15
  import {
@@ -64,34 +64,28 @@ const cpuResultSchema = z.object({
64
64
 
65
65
  export type CpuResult = z.infer<typeof cpuResultSchema>;
66
66
 
67
- const cpuAggregatedDisplaySchema = z.object({
68
- avgUsagePercent: healthResultNumber({
67
+ // Aggregated result fields definition
68
+ const cpuAggregatedFields = {
69
+ avgUsagePercent: aggregatedAverage({
69
70
  "x-chart-type": "line",
70
71
  "x-chart-label": "Avg CPU Usage",
71
72
  "x-chart-unit": "%",
72
73
  }),
73
- maxUsagePercent: healthResultNumber({
74
+ maxUsagePercent: aggregatedMinMax({
74
75
  "x-chart-type": "line",
75
76
  "x-chart-label": "Max CPU Usage",
76
77
  "x-chart-unit": "%",
77
78
  }),
78
- avgLoadAvg1m: healthResultNumber({
79
+ avgLoadAvg1m: aggregatedAverage({
79
80
  "x-chart-type": "line",
80
81
  "x-chart-label": "Avg Load (1m)",
81
82
  }),
82
- });
83
-
84
- const cpuAggregatedInternalSchema = z.object({
85
- _usage: averageStateSchema.optional(),
86
- _maxUsage: minMaxStateSchema.optional(),
87
- _load: averageStateSchema.optional(),
88
- });
83
+ };
89
84
 
90
- const cpuAggregatedSchema = cpuAggregatedDisplaySchema.merge(
91
- cpuAggregatedInternalSchema,
92
- );
93
-
94
- export type CpuAggregatedResult = z.infer<typeof cpuAggregatedSchema>;
85
+ // Type inferred from field definitions
86
+ export type CpuAggregatedResult = InferAggregatedResult<
87
+ typeof cpuAggregatedFields
88
+ >;
95
89
 
96
90
  // ============================================================================
97
91
  // CPU COLLECTOR
@@ -111,7 +105,10 @@ export class CpuCollector implements CollectorStrategy<
111
105
 
112
106
  config = new Versioned({ version: 1, schema: cpuConfigSchema });
113
107
  result = new Versioned({ version: 1, schema: cpuResultSchema });
114
- aggregatedResult = new Versioned({ version: 1, schema: cpuAggregatedSchema });
108
+ aggregatedResult = new VersionedAggregated({
109
+ version: 1,
110
+ fields: cpuAggregatedFields,
111
+ });
115
112
 
116
113
  async execute({
117
114
  config,
@@ -154,28 +151,16 @@ export class CpuCollector implements CollectorStrategy<
154
151
  ): CpuAggregatedResult {
155
152
  const metadata = run.metadata;
156
153
 
157
- const usageState = mergeAverage(
158
- existing?._usage as AverageState | undefined,
159
- metadata?.usagePercent,
160
- );
161
-
162
- const maxUsageState = mergeMinMax(
163
- existing?._maxUsage as MinMaxState | undefined,
164
- metadata?.usagePercent,
165
- );
166
-
167
- const loadState = mergeAverage(
168
- existing?._load as AverageState | undefined,
169
- metadata?.loadAvg1m,
170
- );
171
-
172
154
  return {
173
- avgUsagePercent: usageState.avg,
174
- maxUsagePercent: maxUsageState.max,
175
- avgLoadAvg1m: loadState.avg,
176
- _usage: usageState,
177
- _maxUsage: maxUsageState,
178
- _load: loadState,
155
+ avgUsagePercent: mergeAverage(
156
+ existing?.avgUsagePercent,
157
+ metadata?.usagePercent,
158
+ ),
159
+ maxUsagePercent: mergeMinMax(
160
+ existing?.maxUsagePercent,
161
+ metadata?.usagePercent,
162
+ ),
163
+ avgLoadAvg1m: mergeAverage(existing?.avgLoadAvg1m, metadata?.loadAvg1m),
179
164
  };
180
165
  }
181
166
 
@@ -105,8 +105,8 @@ describe("DiskCollector", () => {
105
105
  let aggregated = collector.mergeResult(undefined, runs[0]);
106
106
  aggregated = collector.mergeResult(aggregated, runs[1]);
107
107
 
108
- expect(aggregated.avgUsedPercent).toBe(40);
109
- expect(aggregated.maxUsedPercent).toBe(50);
108
+ expect(aggregated.avgUsedPercent.avg).toBe(40);
109
+ expect(aggregated.maxUsedPercent.max).toBe(50);
110
110
  });
111
111
  });
112
112
 
@@ -6,10 +6,10 @@ import {
6
6
  type CollectorStrategy,
7
7
  mergeAverage,
8
8
  mergeMinMax,
9
- averageStateSchema,
10
- minMaxStateSchema,
11
- type AverageState,
12
- type MinMaxState,
9
+ VersionedAggregated,
10
+ aggregatedAverage,
11
+ aggregatedMinMax,
12
+ type InferAggregatedResult,
13
13
  } from "@checkstack/backend-api";
14
14
  import {
15
15
  healthResultNumber,
@@ -70,29 +70,24 @@ const diskResultSchema = z.object({
70
70
 
71
71
  export type DiskResult = z.infer<typeof diskResultSchema>;
72
72
 
73
- const diskAggregatedDisplaySchema = z.object({
74
- avgUsedPercent: healthResultNumber({
73
+ // Aggregated result fields definition
74
+ const diskAggregatedFields = {
75
+ avgUsedPercent: aggregatedAverage({
75
76
  "x-chart-type": "line",
76
77
  "x-chart-label": "Avg Disk Usage",
77
78
  "x-chart-unit": "%",
78
79
  }),
79
- maxUsedPercent: healthResultNumber({
80
+ maxUsedPercent: aggregatedMinMax({
80
81
  "x-chart-type": "line",
81
82
  "x-chart-label": "Max Disk Usage",
82
83
  "x-chart-unit": "%",
83
84
  }),
84
- });
85
-
86
- const diskAggregatedInternalSchema = z.object({
87
- _usage: averageStateSchema.optional(),
88
- _maxUsage: minMaxStateSchema.optional(),
89
- });
90
-
91
- const diskAggregatedSchema = diskAggregatedDisplaySchema.merge(
92
- diskAggregatedInternalSchema,
93
- );
85
+ };
94
86
 
95
- export type DiskAggregatedResult = z.infer<typeof diskAggregatedSchema>;
87
+ // Type inferred from field definitions
88
+ export type DiskAggregatedResult = InferAggregatedResult<
89
+ typeof diskAggregatedFields
90
+ >;
96
91
 
97
92
  // ============================================================================
98
93
  // DISK COLLECTOR
@@ -112,9 +107,9 @@ export class DiskCollector implements CollectorStrategy<
112
107
 
113
108
  config = new Versioned({ version: 1, schema: diskConfigSchema });
114
109
  result = new Versioned({ version: 1, schema: diskResultSchema });
115
- aggregatedResult = new Versioned({
110
+ aggregatedResult = new VersionedAggregated({
116
111
  version: 1,
117
- schema: diskAggregatedSchema,
112
+ fields: diskAggregatedFields,
118
113
  });
119
114
 
120
115
  async execute({
@@ -138,21 +133,15 @@ export class DiskCollector implements CollectorStrategy<
138
133
  ): DiskAggregatedResult {
139
134
  const metadata = run.metadata;
140
135
 
141
- const usageState = mergeAverage(
142
- existing?._usage as AverageState | undefined,
143
- metadata?.usedPercent,
144
- );
145
-
146
- const maxUsageState = mergeMinMax(
147
- existing?._maxUsage as MinMaxState | undefined,
148
- metadata?.usedPercent,
149
- );
150
-
151
136
  return {
152
- avgUsedPercent: usageState.avg,
153
- maxUsedPercent: maxUsageState.max,
154
- _usage: usageState,
155
- _maxUsage: maxUsageState,
137
+ avgUsedPercent: mergeAverage(
138
+ existing?.avgUsedPercent,
139
+ metadata?.usedPercent,
140
+ ),
141
+ maxUsedPercent: mergeMinMax(
142
+ existing?.maxUsedPercent,
143
+ metadata?.usedPercent,
144
+ ),
156
145
  };
157
146
  }
158
147
 
@@ -111,9 +111,9 @@ Swap: 4096 512 3584`
111
111
  let aggregated = collector.mergeResult(undefined, runs[0]);
112
112
  aggregated = collector.mergeResult(aggregated, runs[1]);
113
113
 
114
- expect(aggregated.avgUsedPercent).toBe(50);
115
- expect(aggregated.maxUsedPercent).toBe(75);
116
- expect(aggregated.avgUsedMb).toBe(8000);
114
+ expect(aggregated.avgUsedPercent.avg).toBe(50);
115
+ expect(aggregated.maxUsedPercent.max).toBe(75);
116
+ expect(aggregated.avgUsedMb.avg).toBe(8000);
117
117
  });
118
118
  });
119
119
 
@@ -6,10 +6,10 @@ import {
6
6
  type CollectorStrategy,
7
7
  mergeAverage,
8
8
  mergeMinMax,
9
- averageStateSchema,
10
- minMaxStateSchema,
11
- type AverageState,
12
- type MinMaxState,
9
+ VersionedAggregated,
10
+ aggregatedAverage,
11
+ aggregatedMinMax,
12
+ type InferAggregatedResult,
13
13
  } from "@checkstack/backend-api";
14
14
  import { healthResultNumber } from "@checkstack/healthcheck-common";
15
15
  import {
@@ -73,35 +73,29 @@ const memoryResultSchema = z.object({
73
73
 
74
74
  export type MemoryResult = z.infer<typeof memoryResultSchema>;
75
75
 
76
- const memoryAggregatedDisplaySchema = z.object({
77
- avgUsedPercent: healthResultNumber({
76
+ // Aggregated result fields definition
77
+ const memoryAggregatedFields = {
78
+ avgUsedPercent: aggregatedAverage({
78
79
  "x-chart-type": "line",
79
80
  "x-chart-label": "Avg Memory Usage",
80
81
  "x-chart-unit": "%",
81
82
  }),
82
- maxUsedPercent: healthResultNumber({
83
+ maxUsedPercent: aggregatedMinMax({
83
84
  "x-chart-type": "line",
84
85
  "x-chart-label": "Max Memory Usage",
85
86
  "x-chart-unit": "%",
86
87
  }),
87
- avgUsedMb: healthResultNumber({
88
+ avgUsedMb: aggregatedAverage({
88
89
  "x-chart-type": "line",
89
90
  "x-chart-label": "Avg Memory Used",
90
91
  "x-chart-unit": "MB",
91
92
  }),
92
- });
93
-
94
- const memoryAggregatedInternalSchema = z.object({
95
- _usedPercent: averageStateSchema.optional(),
96
- _maxUsedPercent: minMaxStateSchema.optional(),
97
- _usedMb: averageStateSchema.optional(),
98
- });
93
+ };
99
94
 
100
- const memoryAggregatedSchema = memoryAggregatedDisplaySchema.merge(
101
- memoryAggregatedInternalSchema,
102
- );
103
-
104
- export type MemoryAggregatedResult = z.infer<typeof memoryAggregatedSchema>;
95
+ // Type inferred from field definitions
96
+ export type MemoryAggregatedResult = InferAggregatedResult<
97
+ typeof memoryAggregatedFields
98
+ >;
105
99
 
106
100
  // ============================================================================
107
101
  // MEMORY COLLECTOR
@@ -121,9 +115,9 @@ export class MemoryCollector implements CollectorStrategy<
121
115
 
122
116
  config = new Versioned({ version: 1, schema: memoryConfigSchema });
123
117
  result = new Versioned({ version: 1, schema: memoryResultSchema });
124
- aggregatedResult = new Versioned({
118
+ aggregatedResult = new VersionedAggregated({
125
119
  version: 1,
126
- schema: memoryAggregatedSchema,
120
+ fields: memoryAggregatedFields,
127
121
  });
128
122
 
129
123
  async execute({
@@ -159,28 +153,16 @@ export class MemoryCollector implements CollectorStrategy<
159
153
  ): MemoryAggregatedResult {
160
154
  const metadata = run.metadata;
161
155
 
162
- const usedPercentState = mergeAverage(
163
- existing?._usedPercent as AverageState | undefined,
164
- metadata?.usedPercent,
165
- );
166
-
167
- const maxUsedPercentState = mergeMinMax(
168
- existing?._maxUsedPercent as MinMaxState | undefined,
169
- metadata?.usedPercent,
170
- );
171
-
172
- const usedMbState = mergeAverage(
173
- existing?._usedMb as AverageState | undefined,
174
- metadata?.usedMb,
175
- );
176
-
177
156
  return {
178
- avgUsedPercent: usedPercentState.avg,
179
- maxUsedPercent: maxUsedPercentState.max,
180
- avgUsedMb: usedMbState.avg,
181
- _usedPercent: usedPercentState,
182
- _maxUsedPercent: maxUsedPercentState,
183
- _usedMb: usedMbState,
157
+ avgUsedPercent: mergeAverage(
158
+ existing?.avgUsedPercent,
159
+ metadata?.usedPercent,
160
+ ),
161
+ maxUsedPercent: mergeMinMax(
162
+ existing?.maxUsedPercent,
163
+ metadata?.usedPercent,
164
+ ),
165
+ avgUsedMb: mergeAverage(existing?.avgUsedMb, metadata?.usedMb),
184
166
  };
185
167
  }
186
168