observability-toolkit 1.8.0 → 1.8.4
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/README.md +81 -3
- package/dist/backends/index.d.ts +119 -0
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +57 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/backends/index.test.d.ts +5 -0
- package/dist/backends/index.test.d.ts.map +1 -0
- package/dist/backends/index.test.js +156 -0
- package/dist/backends/index.test.js.map +1 -0
- package/dist/backends/local-jsonl-boolean-search.test.js +8 -27
- package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
- package/dist/backends/local-jsonl-logs.test.d.ts +2 -0
- package/dist/backends/local-jsonl-logs.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-logs.test.js +603 -0
- package/dist/backends/local-jsonl-logs.test.js.map +1 -0
- package/dist/backends/local-jsonl-traces.test.d.ts +2 -0
- package/dist/backends/local-jsonl-traces.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-traces.test.js +1723 -0
- package/dist/backends/local-jsonl-traces.test.js.map +1 -0
- package/dist/backends/local-jsonl.d.ts +4 -1
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +185 -1
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/local-jsonl.test.js +723 -46
- package/dist/backends/local-jsonl.test.js.map +1 -1
- package/dist/backends/signoz-api.d.ts +32 -0
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.js +231 -33
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.js +410 -63
- package/dist/backends/signoz-api.test.js.map +1 -1
- package/dist/lib/constants.d.ts +59 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +252 -6
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/constants.test.js +357 -21
- package/dist/lib/constants.test.js.map +1 -1
- package/dist/lib/edge-cases.test.d.ts +11 -0
- package/dist/lib/edge-cases.test.d.ts.map +1 -0
- package/dist/lib/edge-cases.test.js +634 -0
- package/dist/lib/edge-cases.test.js.map +1 -0
- package/dist/lib/error-sanitizer.d.ts +57 -0
- package/dist/lib/error-sanitizer.d.ts.map +1 -0
- package/dist/lib/error-sanitizer.js +207 -0
- package/dist/lib/error-sanitizer.js.map +1 -0
- package/dist/lib/error-sanitizer.test.d.ts +8 -0
- package/dist/lib/error-sanitizer.test.d.ts.map +1 -0
- package/dist/lib/error-sanitizer.test.js +369 -0
- package/dist/lib/error-sanitizer.test.js.map +1 -0
- package/dist/lib/file-utils.d.ts +134 -0
- package/dist/lib/file-utils.d.ts.map +1 -1
- package/dist/lib/file-utils.js +395 -9
- package/dist/lib/file-utils.js.map +1 -1
- package/dist/lib/file-utils.test.js +444 -3
- package/dist/lib/file-utils.test.js.map +1 -1
- package/dist/lib/indexer.d.ts +9 -1
- package/dist/lib/indexer.d.ts.map +1 -1
- package/dist/lib/indexer.js +51 -2
- package/dist/lib/indexer.js.map +1 -1
- package/dist/lib/indexer.test.js +138 -20
- package/dist/lib/indexer.test.js.map +1 -1
- package/dist/lib/input-validator.d.ts +103 -0
- package/dist/lib/input-validator.d.ts.map +1 -0
- package/dist/lib/input-validator.js +250 -0
- package/dist/lib/input-validator.js.map +1 -0
- package/dist/lib/input-validator.test.d.ts +2 -0
- package/dist/lib/input-validator.test.d.ts.map +1 -0
- package/dist/lib/input-validator.test.js +287 -0
- package/dist/lib/input-validator.test.js.map +1 -0
- package/dist/lib/query-sanitizer.d.ts +143 -0
- package/dist/lib/query-sanitizer.d.ts.map +1 -0
- package/dist/lib/query-sanitizer.js +261 -0
- package/dist/lib/query-sanitizer.js.map +1 -0
- package/dist/lib/query-sanitizer.test.d.ts +5 -0
- package/dist/lib/query-sanitizer.test.d.ts.map +1 -0
- package/dist/lib/query-sanitizer.test.js +400 -0
- package/dist/lib/query-sanitizer.test.js.map +1 -0
- package/dist/lib/server-utils.d.ts +80 -0
- package/dist/lib/server-utils.d.ts.map +1 -0
- package/dist/lib/server-utils.js +141 -0
- package/dist/lib/server-utils.js.map +1 -0
- package/dist/lib/shared-schemas.d.ts +59 -0
- package/dist/lib/shared-schemas.d.ts.map +1 -0
- package/dist/lib/shared-schemas.js +58 -0
- package/dist/lib/shared-schemas.js.map +1 -0
- package/dist/lib/shared-schemas.test.d.ts +5 -0
- package/dist/lib/shared-schemas.test.d.ts.map +1 -0
- package/dist/lib/shared-schemas.test.js +106 -0
- package/dist/lib/shared-schemas.test.js.map +1 -0
- package/dist/lib/toon-encoder.d.ts +21 -0
- package/dist/lib/toon-encoder.d.ts.map +1 -0
- package/dist/lib/toon-encoder.js +46 -0
- package/dist/lib/toon-encoder.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +155 -81
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +363 -0
- package/dist/server.test.js.map +1 -1
- package/dist/test-helpers/env-utils.d.ts +65 -0
- package/dist/test-helpers/env-utils.d.ts.map +1 -0
- package/dist/test-helpers/env-utils.js +94 -0
- package/dist/test-helpers/env-utils.js.map +1 -0
- package/dist/test-helpers/file-utils.d.ts +93 -0
- package/dist/test-helpers/file-utils.d.ts.map +1 -0
- package/dist/test-helpers/file-utils.js +206 -0
- package/dist/test-helpers/file-utils.js.map +1 -0
- package/dist/test-helpers/index.d.ts +10 -0
- package/dist/test-helpers/index.d.ts.map +1 -0
- package/dist/test-helpers/index.js +28 -0
- package/dist/test-helpers/index.js.map +1 -0
- package/dist/test-helpers/mock-backends.d.ts +139 -0
- package/dist/test-helpers/mock-backends.d.ts.map +1 -0
- package/dist/test-helpers/mock-backends.js +227 -0
- package/dist/test-helpers/mock-backends.js.map +1 -0
- package/dist/test-helpers/mock-backends.test.d.ts +5 -0
- package/dist/test-helpers/mock-backends.test.d.ts.map +1 -0
- package/dist/test-helpers/mock-backends.test.js +368 -0
- package/dist/test-helpers/mock-backends.test.js.map +1 -0
- package/dist/test-helpers/schema-validators.d.ts +32 -0
- package/dist/test-helpers/schema-validators.d.ts.map +1 -0
- package/dist/test-helpers/schema-validators.js +125 -0
- package/dist/test-helpers/schema-validators.js.map +1 -0
- package/dist/test-helpers/test-data-builders.d.ts +223 -0
- package/dist/test-helpers/test-data-builders.d.ts.map +1 -0
- package/dist/test-helpers/test-data-builders.js +288 -0
- package/dist/test-helpers/test-data-builders.js.map +1 -0
- package/dist/test-helpers/test-data-builders.test.d.ts +2 -0
- package/dist/test-helpers/test-data-builders.test.d.ts.map +1 -0
- package/dist/test-helpers/test-data-builders.test.js +306 -0
- package/dist/test-helpers/test-data-builders.test.js.map +1 -0
- package/dist/test-helpers/tool-validators.d.ts +28 -0
- package/dist/test-helpers/tool-validators.d.ts.map +1 -0
- package/dist/test-helpers/tool-validators.js +56 -0
- package/dist/test-helpers/tool-validators.js.map +1 -0
- package/dist/tools/context-stats.d.ts +1 -0
- package/dist/tools/context-stats.d.ts.map +1 -1
- package/dist/tools/context-stats.js +9 -5
- package/dist/tools/context-stats.js.map +1 -1
- package/dist/tools/context-stats.test.js +24 -10
- package/dist/tools/context-stats.test.js.map +1 -1
- package/dist/tools/get-trace-url.js +2 -2
- package/dist/tools/get-trace-url.js.map +1 -1
- package/dist/tools/health-check.js +2 -2
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/query-evaluations.d.ts +186 -0
- package/dist/tools/query-evaluations.d.ts.map +1 -0
- package/dist/tools/query-evaluations.js +351 -0
- package/dist/tools/query-evaluations.js.map +1 -0
- package/dist/tools/query-evaluations.test.d.ts +5 -0
- package/dist/tools/query-evaluations.test.d.ts.map +1 -0
- package/dist/tools/query-evaluations.test.js +733 -0
- package/dist/tools/query-evaluations.test.js.map +1 -0
- package/dist/tools/query-llm-events.d.ts +24 -18
- package/dist/tools/query-llm-events.d.ts.map +1 -1
- package/dist/tools/query-llm-events.js +103 -60
- package/dist/tools/query-llm-events.js.map +1 -1
- package/dist/tools/query-llm-events.test.js +271 -9
- package/dist/tools/query-llm-events.test.js.map +1 -1
- package/dist/tools/query-logs.d.ts +28 -20
- package/dist/tools/query-logs.d.ts.map +1 -1
- package/dist/tools/query-logs.js +85 -61
- package/dist/tools/query-logs.js.map +1 -1
- package/dist/tools/query-logs.test.js +74 -145
- package/dist/tools/query-logs.test.js.map +1 -1
- package/dist/tools/query-metrics.d.ts +20 -20
- package/dist/tools/query-metrics.d.ts.map +1 -1
- package/dist/tools/query-metrics.js +109 -61
- package/dist/tools/query-metrics.js.map +1 -1
- package/dist/tools/query-metrics.test.js +26 -61
- package/dist/tools/query-metrics.test.js.map +1 -1
- package/dist/tools/query-traces.d.ts +24 -22
- package/dist/tools/query-traces.d.ts.map +1 -1
- package/dist/tools/query-traces.js +95 -70
- package/dist/tools/query-traces.js.map +1 -1
- package/dist/tools/query-traces.test.js +294 -90
- package/dist/tools/query-traces.test.js.map +1 -1
- package/dist/tools/setup-claudeignore.js +7 -7
- package/dist/tools/setup-claudeignore.js.map +1 -1
- package/dist/tools/setup-claudeignore.test.js +4 -25
- package/dist/tools/setup-claudeignore.test.js.map +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared mock backend factories for testing
|
|
3
|
+
*
|
|
4
|
+
* Provides type-safe factory functions for creating mock TelemetryBackend instances.
|
|
5
|
+
* Uses discriminated unions and type-specific stores to avoid unsafe type assertions.
|
|
6
|
+
*/
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Type Guards
|
|
9
|
+
// ============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Type guard to check if an object has required TraceSpan properties.
|
|
12
|
+
* Accepts both raw OTel format (startTimeUnixNano) and normalized format (durationMs).
|
|
13
|
+
* For mock data in tests, we only require the core identifiers.
|
|
14
|
+
*/
|
|
15
|
+
function isTraceSpan(obj) {
|
|
16
|
+
if (typeof obj !== 'object' || obj === null)
|
|
17
|
+
return false;
|
|
18
|
+
const span = obj;
|
|
19
|
+
// Core required fields
|
|
20
|
+
if (typeof span.traceId !== 'string' || typeof span.spanId !== 'string' || typeof span.name !== 'string') {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
// Accept if either startTimeUnixNano (raw) or durationMs (normalized) is present
|
|
24
|
+
const hasStartTime = typeof span.startTimeUnixNano === 'number';
|
|
25
|
+
const hasDuration = typeof span.durationMs === 'number';
|
|
26
|
+
return hasStartTime || hasDuration;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Type guard to check if an object has required LogRecord properties.
|
|
30
|
+
*/
|
|
31
|
+
function isLogRecord(obj) {
|
|
32
|
+
if (typeof obj !== 'object' || obj === null)
|
|
33
|
+
return false;
|
|
34
|
+
const log = obj;
|
|
35
|
+
return (typeof log.timestamp === 'string' &&
|
|
36
|
+
typeof log.severity === 'string' &&
|
|
37
|
+
typeof log.body === 'string');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Type guard to check if an object has required MetricDataPoint properties.
|
|
41
|
+
*/
|
|
42
|
+
function isMetricDataPoint(obj) {
|
|
43
|
+
if (typeof obj !== 'object' || obj === null)
|
|
44
|
+
return false;
|
|
45
|
+
const metric = obj;
|
|
46
|
+
return (typeof metric.timestamp === 'string' &&
|
|
47
|
+
typeof metric.name === 'string' &&
|
|
48
|
+
typeof metric.value === 'number');
|
|
49
|
+
}
|
|
50
|
+
// ============================================================================
|
|
51
|
+
// Type-Safe Factory Functions
|
|
52
|
+
// ============================================================================
|
|
53
|
+
/**
|
|
54
|
+
* Create a type-safe mock backend for trace data
|
|
55
|
+
* @param store - Type-safe trace data store
|
|
56
|
+
* @param source - Which source to read from ('local' or 'signoz')
|
|
57
|
+
*/
|
|
58
|
+
export function createTraceBackend(store, source) {
|
|
59
|
+
const data = store[source];
|
|
60
|
+
return {
|
|
61
|
+
name: `mock-${source}`,
|
|
62
|
+
queryTraces: async () => data,
|
|
63
|
+
queryLogs: async () => [],
|
|
64
|
+
queryMetrics: async () => [],
|
|
65
|
+
healthCheck: async () => ({ status: 'ok' }),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Create a type-safe mock backend for log data
|
|
70
|
+
* @param store - Type-safe log data store
|
|
71
|
+
* @param source - Which source to read from ('local' or 'signoz')
|
|
72
|
+
*/
|
|
73
|
+
export function createLogBackend(store, source) {
|
|
74
|
+
const data = store[source];
|
|
75
|
+
return {
|
|
76
|
+
name: `mock-${source}`,
|
|
77
|
+
queryTraces: async () => [],
|
|
78
|
+
queryLogs: async () => data,
|
|
79
|
+
queryMetrics: async () => [],
|
|
80
|
+
healthCheck: async () => ({ status: 'ok' }),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Create a type-safe mock backend for metric data
|
|
85
|
+
* @param store - Type-safe metric data store
|
|
86
|
+
* @param source - Which source to read from ('local' or 'signoz')
|
|
87
|
+
*/
|
|
88
|
+
export function createMetricBackend(store, source) {
|
|
89
|
+
const data = store[source];
|
|
90
|
+
return {
|
|
91
|
+
name: `mock-${source}`,
|
|
92
|
+
queryTraces: async () => [],
|
|
93
|
+
queryLogs: async () => [],
|
|
94
|
+
queryMetrics: async () => data,
|
|
95
|
+
healthCheck: async () => ({ status: 'ok' }),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get type-safe mock options for trace backends
|
|
100
|
+
* @param store - Type-safe trace data store
|
|
101
|
+
*/
|
|
102
|
+
export function getTraceBackendOptions(store) {
|
|
103
|
+
return {
|
|
104
|
+
localBackend: createTraceBackend(store, 'local'),
|
|
105
|
+
signozBackend: createTraceBackend(store, 'signoz'),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get type-safe mock options for log backends
|
|
110
|
+
* @param store - Type-safe log data store
|
|
111
|
+
*/
|
|
112
|
+
export function getLogBackendOptions(store) {
|
|
113
|
+
return {
|
|
114
|
+
localBackend: createLogBackend(store, 'local'),
|
|
115
|
+
signozBackend: createLogBackend(store, 'signoz'),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get type-safe mock options for metric backends
|
|
120
|
+
* @param store - Type-safe metric data store
|
|
121
|
+
*/
|
|
122
|
+
export function getMetricBackendOptions(store) {
|
|
123
|
+
return {
|
|
124
|
+
localBackend: createMetricBackend(store, 'local'),
|
|
125
|
+
signozBackend: createMetricBackend(store, 'signoz'),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Create a type-safe mock backend for LLM event data
|
|
130
|
+
* @param store - Type-safe LLM event data store
|
|
131
|
+
* @param source - Which source to read from ('local' or 'signoz')
|
|
132
|
+
*/
|
|
133
|
+
export function createLLMEventBackend(store, source) {
|
|
134
|
+
const data = store[source];
|
|
135
|
+
return {
|
|
136
|
+
name: `mock-${source}`,
|
|
137
|
+
queryTraces: async () => [],
|
|
138
|
+
queryLogs: async () => [],
|
|
139
|
+
queryMetrics: async () => [],
|
|
140
|
+
queryLLMEvents: async () => data,
|
|
141
|
+
healthCheck: async () => ({ status: 'ok' }),
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create a type-safe mock backend for evaluation data
|
|
146
|
+
* @param store - Type-safe evaluation data store
|
|
147
|
+
* @param source - Which source to read from ('local' or 'signoz')
|
|
148
|
+
*/
|
|
149
|
+
export function createEvaluationBackend(store, source) {
|
|
150
|
+
const data = store[source];
|
|
151
|
+
return {
|
|
152
|
+
name: `mock-${source}`,
|
|
153
|
+
queryTraces: async () => [],
|
|
154
|
+
queryLogs: async () => [],
|
|
155
|
+
queryMetrics: async () => [],
|
|
156
|
+
queryEvaluations: async () => data,
|
|
157
|
+
healthCheck: async () => ({ status: 'ok' }),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get type-safe mock options for LLM event backends
|
|
162
|
+
* @param store - Type-safe LLM event data store
|
|
163
|
+
*/
|
|
164
|
+
export function getLLMEventBackendOptions(store) {
|
|
165
|
+
return {
|
|
166
|
+
localBackend: createLLMEventBackend(store, 'local'),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Get type-safe mock options for evaluation backends
|
|
171
|
+
* @param store - Type-safe evaluation data store
|
|
172
|
+
*/
|
|
173
|
+
export function getEvaluationBackendOptions(store) {
|
|
174
|
+
return {
|
|
175
|
+
localBackend: createEvaluationBackend(store, 'local'),
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
// ============================================================================
|
|
179
|
+
// Backward Compatible Functions (with runtime validation)
|
|
180
|
+
// ============================================================================
|
|
181
|
+
/**
|
|
182
|
+
* Create a mock TelemetryBackend that returns data from a mock store
|
|
183
|
+
* Uses runtime type guards to safely convert generic data to specific types.
|
|
184
|
+
*
|
|
185
|
+
* @param store - Mock data store with local and signoz arrays
|
|
186
|
+
* @param dataType - Type of data this backend returns
|
|
187
|
+
* @param source - Which source to read from ('local' or 'signoz')
|
|
188
|
+
* @deprecated Use type-specific factories (createTraceBackend, createLogBackend, createMetricBackend) for compile-time type safety
|
|
189
|
+
*/
|
|
190
|
+
export function createMockBackend(store, dataType, source) {
|
|
191
|
+
const data = store[source];
|
|
192
|
+
return {
|
|
193
|
+
name: `mock-${source}`,
|
|
194
|
+
queryTraces: async () => {
|
|
195
|
+
if (dataType !== 'traces')
|
|
196
|
+
return [];
|
|
197
|
+
// Validate each item with type guard
|
|
198
|
+
return data.filter((item) => isTraceSpan(item));
|
|
199
|
+
},
|
|
200
|
+
queryLogs: async () => {
|
|
201
|
+
if (dataType !== 'logs')
|
|
202
|
+
return [];
|
|
203
|
+
// Validate each item with type guard
|
|
204
|
+
return data.filter((item) => isLogRecord(item));
|
|
205
|
+
},
|
|
206
|
+
queryMetrics: async () => {
|
|
207
|
+
if (dataType !== 'metrics')
|
|
208
|
+
return [];
|
|
209
|
+
// Validate each item with type guard
|
|
210
|
+
return data.filter((item) => isMetricDataPoint(item));
|
|
211
|
+
},
|
|
212
|
+
healthCheck: async () => ({ status: 'ok' }),
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get mock options with both local and signoz backends
|
|
217
|
+
* @param store - Mock data store with local and signoz arrays
|
|
218
|
+
* @param dataType - Type of data these backends return
|
|
219
|
+
* @deprecated Use type-specific options (getTraceBackendOptions, getLogBackendOptions, getMetricBackendOptions) for compile-time type safety
|
|
220
|
+
*/
|
|
221
|
+
export function getMockOptions(store, dataType) {
|
|
222
|
+
return {
|
|
223
|
+
localBackend: createMockBackend(store, dataType, 'local'),
|
|
224
|
+
signozBackend: createMockBackend(store, dataType, 'signoz'),
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=mock-backends.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-backends.js","sourceRoot":"","sources":["../../src/test-helpers/mock-backends.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-backends.test.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-backends.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for mock backend factories
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it } from 'node:test';
|
|
5
|
+
import * as assert from 'node:assert';
|
|
6
|
+
import {
|
|
7
|
+
// Type-specific factories
|
|
8
|
+
createTraceBackend, createLogBackend, createMetricBackend, getTraceBackendOptions, getLogBackendOptions, getMetricBackendOptions,
|
|
9
|
+
// Legacy generic factories
|
|
10
|
+
createMockBackend, getMockOptions, } from './mock-backends.js';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Test Data
|
|
13
|
+
// ============================================================================
|
|
14
|
+
const mockTraceSpan = {
|
|
15
|
+
traceId: 'trace-123',
|
|
16
|
+
spanId: 'span-456',
|
|
17
|
+
name: 'test-span',
|
|
18
|
+
startTimeUnixNano: 1700000000000000000,
|
|
19
|
+
durationMs: 1000,
|
|
20
|
+
};
|
|
21
|
+
const mockLogRecord = {
|
|
22
|
+
timestamp: '2023-11-14T22:13:20.000Z',
|
|
23
|
+
severity: 'INFO',
|
|
24
|
+
body: 'Test log message',
|
|
25
|
+
};
|
|
26
|
+
const mockMetricDataPoint = {
|
|
27
|
+
timestamp: '2023-11-14T22:13:20.000Z',
|
|
28
|
+
name: 'test.metric',
|
|
29
|
+
value: 100,
|
|
30
|
+
};
|
|
31
|
+
// ============================================================================
|
|
32
|
+
// Type-Specific Factory Tests
|
|
33
|
+
// ============================================================================
|
|
34
|
+
describe('mock-backends: createTraceBackend', () => {
|
|
35
|
+
it('should return traces from local store', async () => {
|
|
36
|
+
const store = {
|
|
37
|
+
local: [mockTraceSpan],
|
|
38
|
+
signoz: [],
|
|
39
|
+
};
|
|
40
|
+
const backend = createTraceBackend(store, 'local');
|
|
41
|
+
const traces = await backend.queryTraces({});
|
|
42
|
+
assert.strictEqual(traces.length, 1);
|
|
43
|
+
assert.strictEqual(traces[0].traceId, 'trace-123');
|
|
44
|
+
});
|
|
45
|
+
it('should return traces from signoz store', async () => {
|
|
46
|
+
const store = {
|
|
47
|
+
local: [],
|
|
48
|
+
signoz: [mockTraceSpan],
|
|
49
|
+
};
|
|
50
|
+
const backend = createTraceBackend(store, 'signoz');
|
|
51
|
+
const traces = await backend.queryTraces({});
|
|
52
|
+
assert.strictEqual(traces.length, 1);
|
|
53
|
+
assert.strictEqual(traces[0].spanId, 'span-456');
|
|
54
|
+
});
|
|
55
|
+
it('should return empty arrays for other query types', async () => {
|
|
56
|
+
const store = {
|
|
57
|
+
local: [mockTraceSpan],
|
|
58
|
+
signoz: [],
|
|
59
|
+
};
|
|
60
|
+
const backend = createTraceBackend(store, 'local');
|
|
61
|
+
const logs = await backend.queryLogs({});
|
|
62
|
+
const metrics = await backend.queryMetrics({});
|
|
63
|
+
assert.strictEqual(logs.length, 0);
|
|
64
|
+
assert.strictEqual(metrics.length, 0);
|
|
65
|
+
});
|
|
66
|
+
it('should return healthy status', async () => {
|
|
67
|
+
const store = { local: [], signoz: [] };
|
|
68
|
+
const backend = createTraceBackend(store, 'local');
|
|
69
|
+
const health = await backend.healthCheck();
|
|
70
|
+
assert.strictEqual(health.status, 'ok');
|
|
71
|
+
});
|
|
72
|
+
it('should set correct backend name', () => {
|
|
73
|
+
const store = { local: [], signoz: [] };
|
|
74
|
+
const localBackend = createTraceBackend(store, 'local');
|
|
75
|
+
const signozBackend = createTraceBackend(store, 'signoz');
|
|
76
|
+
assert.strictEqual(localBackend.name, 'mock-local');
|
|
77
|
+
assert.strictEqual(signozBackend.name, 'mock-signoz');
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
describe('mock-backends: createLogBackend', () => {
|
|
81
|
+
it('should return logs from local store', async () => {
|
|
82
|
+
const store = {
|
|
83
|
+
local: [mockLogRecord],
|
|
84
|
+
signoz: [],
|
|
85
|
+
};
|
|
86
|
+
const backend = createLogBackend(store, 'local');
|
|
87
|
+
const logs = await backend.queryLogs({});
|
|
88
|
+
assert.strictEqual(logs.length, 1);
|
|
89
|
+
assert.strictEqual(logs[0].body, 'Test log message');
|
|
90
|
+
});
|
|
91
|
+
it('should return logs from signoz store', async () => {
|
|
92
|
+
const store = {
|
|
93
|
+
local: [],
|
|
94
|
+
signoz: [mockLogRecord],
|
|
95
|
+
};
|
|
96
|
+
const backend = createLogBackend(store, 'signoz');
|
|
97
|
+
const logs = await backend.queryLogs({});
|
|
98
|
+
assert.strictEqual(logs.length, 1);
|
|
99
|
+
assert.strictEqual(logs[0].severity, 'INFO');
|
|
100
|
+
});
|
|
101
|
+
it('should return empty arrays for other query types', async () => {
|
|
102
|
+
const store = {
|
|
103
|
+
local: [mockLogRecord],
|
|
104
|
+
signoz: [],
|
|
105
|
+
};
|
|
106
|
+
const backend = createLogBackend(store, 'local');
|
|
107
|
+
const traces = await backend.queryTraces({});
|
|
108
|
+
const metrics = await backend.queryMetrics({});
|
|
109
|
+
assert.strictEqual(traces.length, 0);
|
|
110
|
+
assert.strictEqual(metrics.length, 0);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('mock-backends: createMetricBackend', () => {
|
|
114
|
+
it('should return metrics from local store', async () => {
|
|
115
|
+
const store = {
|
|
116
|
+
local: [mockMetricDataPoint],
|
|
117
|
+
signoz: [],
|
|
118
|
+
};
|
|
119
|
+
const backend = createMetricBackend(store, 'local');
|
|
120
|
+
const metrics = await backend.queryMetrics({});
|
|
121
|
+
assert.strictEqual(metrics.length, 1);
|
|
122
|
+
assert.strictEqual(metrics[0].name, 'test.metric');
|
|
123
|
+
});
|
|
124
|
+
it('should return metrics from signoz store', async () => {
|
|
125
|
+
const store = {
|
|
126
|
+
local: [],
|
|
127
|
+
signoz: [mockMetricDataPoint],
|
|
128
|
+
};
|
|
129
|
+
const backend = createMetricBackend(store, 'signoz');
|
|
130
|
+
const metrics = await backend.queryMetrics({});
|
|
131
|
+
assert.strictEqual(metrics.length, 1);
|
|
132
|
+
assert.strictEqual(metrics[0].value, 100);
|
|
133
|
+
});
|
|
134
|
+
it('should return empty arrays for other query types', async () => {
|
|
135
|
+
const store = {
|
|
136
|
+
local: [mockMetricDataPoint],
|
|
137
|
+
signoz: [],
|
|
138
|
+
};
|
|
139
|
+
const backend = createMetricBackend(store, 'local');
|
|
140
|
+
const traces = await backend.queryTraces({});
|
|
141
|
+
const logs = await backend.queryLogs({});
|
|
142
|
+
assert.strictEqual(traces.length, 0);
|
|
143
|
+
assert.strictEqual(logs.length, 0);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
// ============================================================================
|
|
147
|
+
// Type-Specific Options Tests
|
|
148
|
+
// ============================================================================
|
|
149
|
+
describe('mock-backends: getTraceBackendOptions', () => {
|
|
150
|
+
it('should return both local and signoz backends', () => {
|
|
151
|
+
const store = {
|
|
152
|
+
local: [mockTraceSpan],
|
|
153
|
+
signoz: [],
|
|
154
|
+
};
|
|
155
|
+
const options = getTraceBackendOptions(store);
|
|
156
|
+
assert.ok(options.localBackend);
|
|
157
|
+
assert.ok(options.signozBackend);
|
|
158
|
+
assert.strictEqual(options.localBackend.name, 'mock-local');
|
|
159
|
+
assert.strictEqual(options.signozBackend.name, 'mock-signoz');
|
|
160
|
+
});
|
|
161
|
+
it('should return traces from correct backend', async () => {
|
|
162
|
+
const localSpan = { ...mockTraceSpan, traceId: 'local-trace' };
|
|
163
|
+
const signozSpan = { ...mockTraceSpan, traceId: 'signoz-trace' };
|
|
164
|
+
const store = {
|
|
165
|
+
local: [localSpan],
|
|
166
|
+
signoz: [signozSpan],
|
|
167
|
+
};
|
|
168
|
+
const options = getTraceBackendOptions(store);
|
|
169
|
+
const localTraces = await options.localBackend.queryTraces({});
|
|
170
|
+
const signozTraces = await options.signozBackend.queryTraces({});
|
|
171
|
+
assert.strictEqual(localTraces[0].traceId, 'local-trace');
|
|
172
|
+
assert.strictEqual(signozTraces[0].traceId, 'signoz-trace');
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe('mock-backends: getLogBackendOptions', () => {
|
|
176
|
+
it('should return both local and signoz backends', () => {
|
|
177
|
+
const store = {
|
|
178
|
+
local: [mockLogRecord],
|
|
179
|
+
signoz: [],
|
|
180
|
+
};
|
|
181
|
+
const options = getLogBackendOptions(store);
|
|
182
|
+
assert.ok(options.localBackend);
|
|
183
|
+
assert.ok(options.signozBackend);
|
|
184
|
+
});
|
|
185
|
+
it('should return logs from correct backend', async () => {
|
|
186
|
+
const localLog = { ...mockLogRecord, body: 'local log' };
|
|
187
|
+
const signozLog = { ...mockLogRecord, body: 'signoz log' };
|
|
188
|
+
const store = {
|
|
189
|
+
local: [localLog],
|
|
190
|
+
signoz: [signozLog],
|
|
191
|
+
};
|
|
192
|
+
const options = getLogBackendOptions(store);
|
|
193
|
+
const localLogs = await options.localBackend.queryLogs({});
|
|
194
|
+
const signozLogs = await options.signozBackend.queryLogs({});
|
|
195
|
+
assert.strictEqual(localLogs[0].body, 'local log');
|
|
196
|
+
assert.strictEqual(signozLogs[0].body, 'signoz log');
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
describe('mock-backends: getMetricBackendOptions', () => {
|
|
200
|
+
it('should return both local and signoz backends', () => {
|
|
201
|
+
const store = {
|
|
202
|
+
local: [mockMetricDataPoint],
|
|
203
|
+
signoz: [],
|
|
204
|
+
};
|
|
205
|
+
const options = getMetricBackendOptions(store);
|
|
206
|
+
assert.ok(options.localBackend);
|
|
207
|
+
assert.ok(options.signozBackend);
|
|
208
|
+
});
|
|
209
|
+
it('should return metrics from correct backend', async () => {
|
|
210
|
+
const localMetric = { ...mockMetricDataPoint, value: 100 };
|
|
211
|
+
const signozMetric = { ...mockMetricDataPoint, value: 200 };
|
|
212
|
+
const store = {
|
|
213
|
+
local: [localMetric],
|
|
214
|
+
signoz: [signozMetric],
|
|
215
|
+
};
|
|
216
|
+
const options = getMetricBackendOptions(store);
|
|
217
|
+
const localMetrics = await options.localBackend.queryMetrics({});
|
|
218
|
+
const signozMetrics = await options.signozBackend.queryMetrics({});
|
|
219
|
+
assert.strictEqual(localMetrics[0].value, 100);
|
|
220
|
+
assert.strictEqual(signozMetrics[0].value, 200);
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
// ============================================================================
|
|
224
|
+
// Legacy Generic Factory Tests (Backward Compatibility)
|
|
225
|
+
// ============================================================================
|
|
226
|
+
describe('mock-backends: createMockBackend (legacy)', () => {
|
|
227
|
+
it('should return traces with runtime validation', async () => {
|
|
228
|
+
const store = {
|
|
229
|
+
local: [mockTraceSpan],
|
|
230
|
+
signoz: [],
|
|
231
|
+
};
|
|
232
|
+
const backend = createMockBackend(store, 'traces', 'local');
|
|
233
|
+
const traces = await backend.queryTraces({});
|
|
234
|
+
assert.strictEqual(traces.length, 1);
|
|
235
|
+
assert.strictEqual(traces[0].traceId, 'trace-123');
|
|
236
|
+
});
|
|
237
|
+
it('should return logs with runtime validation', async () => {
|
|
238
|
+
const store = {
|
|
239
|
+
local: [mockLogRecord],
|
|
240
|
+
signoz: [],
|
|
241
|
+
};
|
|
242
|
+
const backend = createMockBackend(store, 'logs', 'local');
|
|
243
|
+
const logs = await backend.queryLogs({});
|
|
244
|
+
assert.strictEqual(logs.length, 1);
|
|
245
|
+
assert.strictEqual(logs[0].body, 'Test log message');
|
|
246
|
+
});
|
|
247
|
+
it('should return metrics with runtime validation', async () => {
|
|
248
|
+
const store = {
|
|
249
|
+
local: [mockMetricDataPoint],
|
|
250
|
+
signoz: [],
|
|
251
|
+
};
|
|
252
|
+
const backend = createMockBackend(store, 'metrics', 'local');
|
|
253
|
+
const metrics = await backend.queryMetrics({});
|
|
254
|
+
assert.strictEqual(metrics.length, 1);
|
|
255
|
+
assert.strictEqual(metrics[0].name, 'test.metric');
|
|
256
|
+
});
|
|
257
|
+
it('should filter out invalid data with type guards', async () => {
|
|
258
|
+
// Intentionally pass invalid data to test type guards
|
|
259
|
+
const invalidData = [
|
|
260
|
+
{ invalid: true },
|
|
261
|
+
mockTraceSpan,
|
|
262
|
+
{ alsoinvalid: 'yes' },
|
|
263
|
+
];
|
|
264
|
+
const store = {
|
|
265
|
+
local: invalidData,
|
|
266
|
+
signoz: [],
|
|
267
|
+
};
|
|
268
|
+
const backend = createMockBackend(store, 'traces', 'local');
|
|
269
|
+
const traces = await backend.queryTraces({});
|
|
270
|
+
// Only the valid TraceSpan should pass the type guard
|
|
271
|
+
assert.strictEqual(traces.length, 1);
|
|
272
|
+
assert.strictEqual(traces[0].traceId, 'trace-123');
|
|
273
|
+
});
|
|
274
|
+
it('should return empty array for mismatched data types', async () => {
|
|
275
|
+
const store = {
|
|
276
|
+
local: [mockTraceSpan],
|
|
277
|
+
signoz: [],
|
|
278
|
+
};
|
|
279
|
+
const backend = createMockBackend(store, 'traces', 'local');
|
|
280
|
+
// Query for logs on a trace backend
|
|
281
|
+
const logs = await backend.queryLogs({});
|
|
282
|
+
assert.strictEqual(logs.length, 0);
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
describe('mock-backends: getMockOptions (legacy)', () => {
|
|
286
|
+
it('should return both local and signoz backends', () => {
|
|
287
|
+
const store = {
|
|
288
|
+
local: [mockTraceSpan],
|
|
289
|
+
signoz: [],
|
|
290
|
+
};
|
|
291
|
+
const options = getMockOptions(store, 'traces');
|
|
292
|
+
assert.ok(options.localBackend);
|
|
293
|
+
assert.ok(options.signozBackend);
|
|
294
|
+
});
|
|
295
|
+
it('should work with traces', async () => {
|
|
296
|
+
const store = {
|
|
297
|
+
local: [mockTraceSpan],
|
|
298
|
+
signoz: [],
|
|
299
|
+
};
|
|
300
|
+
const options = getMockOptions(store, 'traces');
|
|
301
|
+
const traces = await options.localBackend.queryTraces({});
|
|
302
|
+
assert.strictEqual(traces.length, 1);
|
|
303
|
+
});
|
|
304
|
+
it('should work with logs', async () => {
|
|
305
|
+
const store = {
|
|
306
|
+
local: [mockLogRecord],
|
|
307
|
+
signoz: [],
|
|
308
|
+
};
|
|
309
|
+
const options = getMockOptions(store, 'logs');
|
|
310
|
+
const logs = await options.localBackend.queryLogs({});
|
|
311
|
+
assert.strictEqual(logs.length, 1);
|
|
312
|
+
});
|
|
313
|
+
it('should work with metrics', async () => {
|
|
314
|
+
const store = {
|
|
315
|
+
local: [mockMetricDataPoint],
|
|
316
|
+
signoz: [],
|
|
317
|
+
};
|
|
318
|
+
const options = getMockOptions(store, 'metrics');
|
|
319
|
+
const metrics = await options.localBackend.queryMetrics({});
|
|
320
|
+
assert.strictEqual(metrics.length, 1);
|
|
321
|
+
});
|
|
322
|
+
});
|
|
323
|
+
// ============================================================================
|
|
324
|
+
// Type Guard Edge Cases
|
|
325
|
+
// ============================================================================
|
|
326
|
+
describe('mock-backends: type guard edge cases', () => {
|
|
327
|
+
it('should reject null values', async () => {
|
|
328
|
+
const store = {
|
|
329
|
+
local: [null, undefined, mockTraceSpan],
|
|
330
|
+
signoz: [],
|
|
331
|
+
};
|
|
332
|
+
const backend = createMockBackend(store, 'traces', 'local');
|
|
333
|
+
const traces = await backend.queryTraces({});
|
|
334
|
+
assert.strictEqual(traces.length, 1);
|
|
335
|
+
});
|
|
336
|
+
it('should reject non-object values', async () => {
|
|
337
|
+
const store = {
|
|
338
|
+
local: ['string', 123, true, mockTraceSpan],
|
|
339
|
+
signoz: [],
|
|
340
|
+
};
|
|
341
|
+
const backend = createMockBackend(store, 'traces', 'local');
|
|
342
|
+
const traces = await backend.queryTraces({});
|
|
343
|
+
assert.strictEqual(traces.length, 1);
|
|
344
|
+
});
|
|
345
|
+
it('should validate log record required fields', async () => {
|
|
346
|
+
const incompleteLog = { timestamp: '2023-01-01' }; // missing severity and body
|
|
347
|
+
const store = {
|
|
348
|
+
local: [incompleteLog, mockLogRecord],
|
|
349
|
+
signoz: [],
|
|
350
|
+
};
|
|
351
|
+
const backend = createMockBackend(store, 'logs', 'local');
|
|
352
|
+
const logs = await backend.queryLogs({});
|
|
353
|
+
assert.strictEqual(logs.length, 1);
|
|
354
|
+
assert.strictEqual(logs[0].body, 'Test log message');
|
|
355
|
+
});
|
|
356
|
+
it('should validate metric data point required fields', async () => {
|
|
357
|
+
const incompleteMetric = { timestamp: '2023-01-01', name: 'test' }; // missing value
|
|
358
|
+
const store = {
|
|
359
|
+
local: [incompleteMetric, mockMetricDataPoint],
|
|
360
|
+
signoz: [],
|
|
361
|
+
};
|
|
362
|
+
const backend = createMockBackend(store, 'metrics', 'local');
|
|
363
|
+
const metrics = await backend.queryMetrics({});
|
|
364
|
+
assert.strictEqual(metrics.length, 1);
|
|
365
|
+
assert.strictEqual(metrics[0].name, 'test.metric');
|
|
366
|
+
});
|
|
367
|
+
});
|
|
368
|
+
//# sourceMappingURL=mock-backends.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock-backends.test.js","sourceRoot":"","sources":["../../src/test-helpers/mock-backends.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared test utilities for validating Zod schemas
|
|
3
|
+
*/
|
|
4
|
+
import type { z } from 'zod';
|
|
5
|
+
/**
|
|
6
|
+
* Generate standard backend selection schema tests
|
|
7
|
+
* @param schema - Zod schema with backend field
|
|
8
|
+
* @param schemaName - Name for test descriptions
|
|
9
|
+
*/
|
|
10
|
+
export declare function validateBackendSchema(schema: z.ZodType<{
|
|
11
|
+
backend?: string;
|
|
12
|
+
}>, schemaName: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Generate standard limit parameter validation tests
|
|
15
|
+
* @param schema - Zod schema with limit field
|
|
16
|
+
* @param schemaName - Name for test descriptions
|
|
17
|
+
* @param defaultLimit - Expected default limit value
|
|
18
|
+
* @param maxLimit - Maximum allowed limit (optional, defaults to 1000)
|
|
19
|
+
*/
|
|
20
|
+
export declare function validateLimitSchema(schema: z.ZodType<{
|
|
21
|
+
limit?: number;
|
|
22
|
+
}>, schemaName: string, defaultLimit: number, maxLimit?: number): void;
|
|
23
|
+
/**
|
|
24
|
+
* Generate standard date range validation tests
|
|
25
|
+
* @param schema - Zod schema with startDate/endDate fields
|
|
26
|
+
* @param schemaName - Name for test descriptions
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateDateRangeSchema(schema: z.ZodType<{
|
|
29
|
+
startDate?: string;
|
|
30
|
+
endDate?: string;
|
|
31
|
+
}>, schemaName: string): void;
|
|
32
|
+
//# sourceMappingURL=schema-validators.d.ts.map
|