@smoothbricks/lmao 0.2.2 → 0.2.3
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/dist/allocator.wasm +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/lib/JsBufferStrategy.d.ts +4 -3
- package/dist/lib/JsBufferStrategy.d.ts.map +1 -1
- package/dist/lib/JsBufferStrategy.js +18 -11
- package/dist/lib/arrow/lease.d.ts +10 -0
- package/dist/lib/arrow/lease.d.ts.map +1 -0
- package/dist/lib/arrow/lease.js +33 -0
- package/dist/lib/arrow/utils.d.ts +3 -4
- package/dist/lib/arrow/utils.d.ts.map +1 -1
- package/dist/lib/arrow/utils.js +12 -13
- package/dist/lib/arrow/vocabularyDictionary.d.ts +21 -0
- package/dist/lib/arrow/vocabularyDictionary.d.ts.map +1 -0
- package/dist/lib/arrow/vocabularyDictionary.js +95 -0
- package/dist/lib/bufferStrategy.d.ts +3 -2
- package/dist/lib/bufferStrategy.d.ts.map +1 -1
- package/dist/lib/cloudflare/traceRows.d.ts.map +1 -1
- package/dist/lib/cloudflare/traceRows.js +3 -2
- package/dist/lib/codegen/evaluatorGenerator.d.ts.map +1 -1
- package/dist/lib/codegen/evaluatorGenerator.js +12 -11
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts +44 -82
- package/dist/lib/codegen/fixedPositionWriterGenerator.d.ts.map +1 -1
- package/dist/lib/codegen/fixedPositionWriterGenerator.js +223 -162
- package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts +63 -0
- package/dist/lib/codegen/spanLoggerClosureMaterializer.d.ts.map +1 -0
- package/dist/lib/codegen/spanLoggerClosureMaterializer.js +447 -0
- package/dist/lib/codegen/spanLoggerGenerator.d.ts +36 -19
- package/dist/lib/codegen/spanLoggerGenerator.d.ts.map +1 -1
- package/dist/lib/codegen/spanLoggerGenerator.js +164 -158
- package/dist/lib/convertToArrow.d.ts +7 -2
- package/dist/lib/convertToArrow.d.ts.map +1 -1
- package/dist/lib/convertToArrow.js +499 -285
- package/dist/lib/defineOpContext.js +1 -1
- package/dist/lib/enumMetadata.d.ts +19 -0
- package/dist/lib/enumMetadata.d.ts.map +1 -0
- package/dist/lib/enumMetadata.js +86 -0
- package/dist/lib/flushScheduler.d.ts.map +1 -1
- package/dist/lib/flushScheduler.js +13 -4
- package/dist/lib/library.d.ts +16 -98
- package/dist/lib/library.d.ts.map +1 -1
- package/dist/lib/library.js +32 -525
- package/dist/lib/logBinding.d.ts +21 -27
- package/dist/lib/logBinding.d.ts.map +1 -1
- package/dist/lib/op.d.ts +30 -30
- package/dist/lib/op.d.ts.map +1 -1
- package/dist/lib/op.js +15 -22
- package/dist/lib/opContext/createOpGroup.d.ts +1 -1
- package/dist/lib/opContext/createOpGroup.d.ts.map +1 -1
- package/dist/lib/opContext/createOpGroup.js +22 -29
- package/dist/lib/opContext/defineOp.d.ts +4 -4
- package/dist/lib/opContext/defineOp.d.ts.map +1 -1
- package/dist/lib/opContext/defineOp.js +53 -10
- package/dist/lib/opContext/opGroupTypes.d.ts +2 -2
- package/dist/lib/opContext/opTypes.d.ts +1 -1
- package/dist/lib/opContext/opTypes.d.ts.map +1 -1
- package/dist/lib/opContext/spanContextTypes.d.ts +29 -14
- package/dist/lib/opContext/spanContextTypes.d.ts.map +1 -1
- package/dist/lib/opContext/types.d.ts +4 -4
- package/dist/lib/opContext/types.d.ts.map +1 -1
- package/dist/lib/physicalLayoutPlan.d.ts +89 -0
- package/dist/lib/physicalLayoutPlan.d.ts.map +1 -0
- package/dist/lib/physicalLayoutPlan.js +442 -0
- package/dist/lib/resolveMessage.d.ts +9 -0
- package/dist/lib/resolveMessage.d.ts.map +1 -0
- package/dist/lib/resolveMessage.js +63 -0
- package/dist/lib/result.d.ts +5 -7
- package/dist/lib/result.d.ts.map +1 -1
- package/dist/lib/result.js +19 -26
- package/dist/lib/runtimeHint.d.ts +35 -0
- package/dist/lib/runtimeHint.d.ts.map +1 -0
- package/dist/lib/runtimeHint.js +79 -0
- package/dist/lib/schema/types.d.ts +1 -1
- package/dist/lib/schema/types.d.ts.map +1 -1
- package/dist/lib/span-buffer/aot/v1.d.ts +2 -0
- package/dist/lib/span-buffer/aot/v1.d.ts.map +1 -0
- package/dist/lib/span-buffer/aot/v1.js +24 -0
- package/dist/lib/spanBuffer.d.ts +33 -4
- package/dist/lib/spanBuffer.d.ts.map +1 -1
- package/dist/lib/spanBuffer.js +583 -91
- package/dist/lib/spanBufferStats.d.ts +1 -1
- package/dist/lib/spanBufferStats.d.ts.map +1 -1
- package/dist/lib/spanContext.d.ts +27 -51
- package/dist/lib/spanContext.d.ts.map +1 -1
- package/dist/lib/spanContext.js +822 -344
- package/dist/lib/sqlite/sqlite-common.d.ts.map +1 -1
- package/dist/lib/sqlite/sqlite-common.js +20 -21
- package/dist/lib/testing/bun-harness.d.ts +8 -3
- package/dist/lib/testing/bun-harness.d.ts.map +1 -1
- package/dist/lib/testing/bun-harness.js +30 -18
- package/dist/lib/testing/extractFacts.d.ts +1 -1
- package/dist/lib/testing/extractFacts.d.ts.map +1 -1
- package/dist/lib/testing/extractFacts.js +55 -63
- package/dist/lib/testing/facts.d.ts +1 -1
- package/dist/lib/testing/facts.d.ts.map +1 -1
- package/dist/lib/testing/queryable-span.d.ts +1 -1
- package/dist/lib/testing/queryable-span.d.ts.map +1 -1
- package/dist/lib/testing/queryable-span.js +26 -28
- package/dist/lib/testing/span-query.d.ts.map +1 -1
- package/dist/lib/testing/span-query.js +19 -22
- package/dist/lib/testing/stdio-replay.d.ts.map +1 -1
- package/dist/lib/testing/stdio-replay.js +19 -8
- package/dist/lib/threadId.d.ts.map +1 -1
- package/dist/lib/threadId.js +6 -3
- package/dist/lib/traceRoot.d.ts +30 -8
- package/dist/lib/traceRoot.d.ts.map +1 -1
- package/dist/lib/traceRoot.es.d.ts +17 -15
- package/dist/lib/traceRoot.es.d.ts.map +1 -1
- package/dist/lib/traceRoot.es.js +68 -34
- package/dist/lib/traceRoot.js +11 -0
- package/dist/lib/traceRoot.node.d.ts +17 -19
- package/dist/lib/traceRoot.node.d.ts.map +1 -1
- package/dist/lib/traceRoot.node.js +66 -38
- package/dist/lib/traceTopology.d.ts +42 -0
- package/dist/lib/traceTopology.d.ts.map +1 -0
- package/dist/lib/traceTopology.js +260 -0
- package/dist/lib/tracer.d.ts +9 -5
- package/dist/lib/tracer.d.ts.map +1 -1
- package/dist/lib/tracer.js +65 -71
- package/dist/lib/tracers/ArrayQueueTracer.d.ts +1 -1
- package/dist/lib/tracers/ArrayQueueTracer.js +1 -1
- package/dist/lib/tracers/StdioTracer.d.ts.map +1 -1
- package/dist/lib/tracers/StdioTracer.js +15 -13
- package/dist/lib/tracers/TestTracer.d.ts +4 -6
- package/dist/lib/tracers/TestTracer.d.ts.map +1 -1
- package/dist/lib/tracers/TestTracer.js +6 -8
- package/dist/lib/types.d.ts +49 -32
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/vocabularyRegistry.d.ts +25 -0
- package/dist/lib/vocabularyRegistry.d.ts.map +1 -0
- package/dist/lib/vocabularyRegistry.js +372 -0
- package/dist/lib/wasm/WasmBufferStrategy.d.ts +6 -10
- package/dist/lib/wasm/WasmBufferStrategy.d.ts.map +1 -1
- package/dist/lib/wasm/WasmBufferStrategy.js +44 -37
- package/dist/lib/wasm/wasmAllocator.d.ts +27 -22
- package/dist/lib/wasm/wasmAllocator.d.ts.map +1 -1
- package/dist/lib/wasm/wasmAllocator.js +66 -44
- package/dist/lib/wasm/wasmPhysicalLayout.d.ts +67 -0
- package/dist/lib/wasm/wasmPhysicalLayout.d.ts.map +1 -0
- package/dist/lib/wasm/wasmPhysicalLayout.js +179 -0
- package/dist/lib/wasm/wasmSpanBuffer.d.ts +79 -31
- package/dist/lib/wasm/wasmSpanBuffer.d.ts.map +1 -1
- package/dist/lib/wasm/wasmSpanBuffer.js +442 -272
- package/dist/lib/wasm/wasmTraceRoot.d.ts +24 -22
- package/dist/lib/wasm/wasmTraceRoot.d.ts.map +1 -1
- package/dist/lib/wasm/wasmTraceRoot.js +110 -71
- package/dist/vocabulary/register/v1.d.ts +2 -0
- package/dist/vocabulary/register/v1.d.ts.map +1 -0
- package/dist/vocabulary/register/v1.js +1 -0
- package/dist/wasm.d.ts +5 -0
- package/dist/wasm.d.ts.map +1 -0
- package/dist/wasm.js +4 -0
- package/package.json +54 -6
- package/src/index.ts +1 -0
- package/src/lib/JsBufferStrategy.ts +27 -9
- package/src/lib/__tests__/arrow-builder-integration/arrow-conversion.test.ts +335 -37
- package/src/lib/__tests__/arrow-builder-integration/binary-arrow-conversion.test.ts +97 -26
- package/src/lib/__tests__/arrow-builder-integration/binary-comparison.test.ts +75 -15
- package/src/lib/__tests__/arrow-builder-integration/binary-format-compliance.test.ts +30 -6
- package/src/lib/__tests__/arrow-builder-integration/buffer-chaining.test.ts +18 -21
- package/src/lib/__tests__/arrow-builder-integration/foundation.test.ts +5 -2
- package/src/lib/__tests__/arrow-builder-integration/integration.test.ts +25 -7
- package/src/lib/__tests__/arrow-builder-integration/lazy-columns.test.ts +3 -2
- package/src/lib/__tests__/buffer-overflow.test.ts +24 -18
- package/src/lib/__tests__/capability-span-context.test.ts +505 -0
- package/src/lib/__tests__/capacity-tuning.test.ts +5 -3
- package/src/lib/__tests__/eager-columns.test.ts +345 -0
- package/src/lib/__tests__/enum-metadata-aot.test.ts +153 -0
- package/src/lib/__tests__/enum-metadata.test.ts +177 -0
- package/src/lib/__tests__/fixtures/empty-vocabulary-runtime.fixture.ts +15 -0
- package/src/lib/__tests__/flushScheduler.test.ts +5 -1
- package/src/lib/__tests__/identity-view.property.test.ts +179 -0
- package/src/lib/__tests__/library.test.ts +19 -235
- package/src/lib/__tests__/message-buffer-families.test.ts +878 -0
- package/src/lib/__tests__/nested-library-tasks.test.ts +14 -15
- package/src/lib/__tests__/op-metadata.test.ts +1 -1
- package/src/lib/__tests__/op-type-safety.test.ts +5 -16
- package/src/lib/__tests__/physical-layout-plan.test.ts +333 -0
- package/src/lib/__tests__/remap-descriptor-integration.test.ts +381 -0
- package/src/lib/__tests__/root-context-construction.test.ts +414 -0
- package/src/lib/__tests__/span-auto-runtime.test.ts +386 -0
- package/src/lib/__tests__/span-buffer-segment-stats.test.ts +221 -0
- package/src/lib/__tests__/span-lifecycle.test.ts +53 -25
- package/src/lib/__tests__/spanbuffer-materializer-parity.test.ts +266 -0
- package/src/lib/__tests__/sync-async-trace.test.ts +24 -23
- package/src/lib/__tests__/tag-writer-aot.test.ts +214 -0
- package/src/lib/__tests__/test-helpers.ts +67 -12
- package/src/lib/__tests__/threadId.test.ts +62 -0
- package/src/lib/__tests__/timestamp.test.ts +221 -93
- package/src/lib/__tests__/traceTopology.property.test.ts +383 -0
- package/src/lib/__tests__/type-narrowing.test.ts +63 -0
- package/src/lib/__tests__/vocabulary-dense-decoding.test.ts +405 -0
- package/src/lib/__tests__/vocabularyRegistry.test.ts +313 -0
- package/src/lib/arrow/lease.ts +43 -0
- package/src/lib/arrow/utils.ts +10 -14
- package/src/lib/arrow/vocabularyDictionary.ts +123 -0
- package/src/lib/bufferStrategy.ts +9 -1
- package/src/lib/cloudflare/traceRows.ts +3 -2
- package/src/lib/codegen/__tests__/evaluatorGenerator.test.ts +21 -141
- package/src/lib/codegen/__tests__/fixedPositionWriter-parity.test.ts +273 -0
- package/src/lib/codegen/__tests__/fixedPositionWriter-uint64.test.ts +61 -34
- package/src/lib/codegen/__tests__/nullBitmap.test.ts +33 -37
- package/src/lib/codegen/__tests__/spanLoggerGenerator.test.ts +34 -18
- package/src/lib/codegen/__tests__/spanLoggerMaterializerParity.test.ts +503 -0
- package/src/lib/codegen/evaluatorGenerator.ts +18 -13
- package/src/lib/codegen/fixedPositionWriterGenerator.ts +329 -245
- package/src/lib/codegen/spanLoggerClosureMaterializer.ts +598 -0
- package/src/lib/codegen/spanLoggerGenerator.ts +241 -177
- package/src/lib/convertToArrow.ts +598 -311
- package/src/lib/defineOpContext.ts +1 -1
- package/src/lib/enumMetadata.ts +121 -0
- package/src/lib/flushScheduler.ts +11 -5
- package/src/lib/library.ts +37 -595
- package/src/lib/logBinding.ts +21 -27
- package/src/lib/op.ts +75 -18
- package/src/lib/opContext/__tests__/retry.test.ts +27 -21
- package/src/lib/opContext/createOpGroup.ts +33 -31
- package/src/lib/opContext/defineOp.ts +88 -11
- package/src/lib/opContext/opGroupTypes.ts +2 -2
- package/src/lib/opContext/opTypes.ts +1 -1
- package/src/lib/opContext/spanContextTypes.ts +98 -17
- package/src/lib/opContext/types.ts +7 -3
- package/src/lib/physicalLayoutPlan.ts +598 -0
- package/src/lib/resolveMessage.ts +67 -0
- package/src/lib/result.ts +20 -33
- package/src/lib/runtimeHint.ts +98 -0
- package/src/lib/schema/__tests__/featureFlags.test.ts +2 -1
- package/src/lib/schema/builder.ts +1 -1
- package/src/lib/schema/types.ts +1 -1
- package/src/lib/span-buffer/aot/v1.ts +26 -0
- package/src/lib/spanBuffer.ts +658 -92
- package/src/lib/spanBufferStats.ts +1 -1
- package/src/lib/spanContext.ts +1350 -861
- package/src/lib/sqlite/sqlite-common.ts +20 -31
- package/src/lib/testing/__tests__/topology-traversal.test.ts +174 -0
- package/src/lib/testing/__tests__/vitest-harness.test.ts +2 -1
- package/src/lib/testing/bun-harness.ts +94 -43
- package/src/lib/testing/extractFacts.ts +64 -78
- package/src/lib/testing/facts.ts +1 -1
- package/src/lib/testing/queryable-span.ts +23 -30
- package/src/lib/testing/span-query.ts +16 -20
- package/src/lib/testing/stdio-replay.ts +25 -8
- package/src/lib/testing/vitest-harness.ts +1 -1
- package/src/lib/threadId.ts +6 -3
- package/src/lib/traceRoot.es.ts +77 -42
- package/src/lib/traceRoot.node.ts +75 -46
- package/src/lib/traceRoot.ts +41 -14
- package/src/lib/traceTopology.ts +279 -0
- package/src/lib/tracer.ts +109 -98
- package/src/lib/tracers/ArrayQueueTracer.ts +1 -1
- package/src/lib/tracers/StdioTracer.ts +15 -13
- package/src/lib/tracers/TestTracer.ts +6 -8
- package/src/lib/tracers/__tests__/ArrayQueueTracer.test.ts +15 -10
- package/src/lib/tracers/__tests__/TestTracer.test.ts +23 -13
- package/src/lib/types.ts +64 -33
- package/src/lib/vocabularyRegistry.ts +439 -0
- package/src/lib/wasm/WasmBufferStrategy.ts +56 -48
- package/src/lib/wasm/__tests__/WasmBufferStrategy.test.ts +215 -11
- package/src/lib/wasm/__tests__/allocatorFreeBlockClamp.test.ts +86 -0
- package/src/lib/wasm/__tests__/wasm-identity-view.test.ts +311 -0
- package/src/lib/wasm/__tests__/wasm-integration.test.ts +417 -44
- package/src/lib/wasm/__tests__/wasm-message-buffer-families.test.ts +588 -0
- package/src/lib/wasm/__tests__/wasmAllocator.test.ts +100 -668
- package/src/lib/wasm/__tests__/wasmSpanBuffer.test.ts +419 -63
- package/src/lib/wasm/__tests__/wasmTraceRoot.test.ts +24 -29
- package/src/lib/wasm/__tests__/wasmTracer.test.ts.disabled +2 -2
- package/src/lib/wasm/wasmAllocator.ts +131 -96
- package/src/lib/wasm/wasmPhysicalLayout.ts +309 -0
- package/src/lib/wasm/wasmSpanBuffer.ts +597 -341
- package/src/lib/wasm/wasmTraceRoot.ts +140 -78
- package/src/vocabulary/register/v1.ts +1 -0
- package/src/wasm.ts +19 -0
- package/src/lib/__tests__/remapped-buffer-view-integration.test.ts +0 -319
- package/src/lib/__tests__/remapped-buffer-view.test.ts +0 -635
- package/src/lib/wasm/allocator.zig +0 -948
|
@@ -7,9 +7,11 @@ import {
|
|
|
7
7
|
} from '@smoothbricks/arrow-builder';
|
|
8
8
|
import { convertToArrowTable, createSpanBuffer, ENTRY_TYPE_SPAN_START, S } from '@smoothbricks/lmao';
|
|
9
9
|
import { defineOpContext } from '../../defineOpContext.js';
|
|
10
|
+
import { resolveMessage } from '../../resolveMessage.js';
|
|
10
11
|
import { defineLogSchema } from '../../schema/defineLogSchema.js';
|
|
11
12
|
import { ENTRY_TYPE_INFO } from '../../schema/systemSchema.js';
|
|
12
13
|
import { TestTracer } from '../../tracers/TestTracer.js';
|
|
14
|
+
import { NO_NODE } from '../../traceTopology.js';
|
|
13
15
|
import type { AnySpanBuffer } from '../../types.js';
|
|
14
16
|
import { invokeWriterMethod, nextWriterRow, requireAnySpanBuffer } from '../arrow-test-helpers.js';
|
|
15
17
|
import {
|
|
@@ -62,7 +64,7 @@ describe('Buffer Integration', () => {
|
|
|
62
64
|
// Metadata
|
|
63
65
|
expect(buf._capacity).toBe(capacity);
|
|
64
66
|
expect(buf._writeIndex).toBe(0);
|
|
65
|
-
expect(buf.
|
|
67
|
+
expect(buf._traceRoot._topology.firstChild[buf._nodeIndex]).toBe(NO_NODE);
|
|
66
68
|
});
|
|
67
69
|
|
|
68
70
|
it('integrates schema definition with buffer creation', () => {
|
|
@@ -144,7 +146,11 @@ describe('Buffer Integration', () => {
|
|
|
144
146
|
|
|
145
147
|
// Set required system columns
|
|
146
148
|
buffer.timestamp[0] = 1000n;
|
|
147
|
-
|
|
149
|
+
{
|
|
150
|
+
const entryTypes = buffer.entry_type;
|
|
151
|
+
if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
|
|
152
|
+
entryTypes[0] = ENTRY_TYPE_SPAN_START;
|
|
153
|
+
}
|
|
148
154
|
buffer._writeIndex = 1;
|
|
149
155
|
|
|
150
156
|
// Convert to Arrow table
|
|
@@ -188,7 +194,11 @@ describe('Buffer Integration', () => {
|
|
|
188
194
|
|
|
189
195
|
// Set required system columns
|
|
190
196
|
buffer.timestamp[0] = 1000n;
|
|
191
|
-
|
|
197
|
+
{
|
|
198
|
+
const entryTypes = buffer.entry_type;
|
|
199
|
+
if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
|
|
200
|
+
entryTypes[0] = ENTRY_TYPE_SPAN_START;
|
|
201
|
+
}
|
|
192
202
|
buffer._writeIndex = 1;
|
|
193
203
|
|
|
194
204
|
// Convert to Arrow table
|
|
@@ -230,7 +240,11 @@ describe('Buffer Integration', () => {
|
|
|
230
240
|
|
|
231
241
|
// Set required system columns
|
|
232
242
|
buffer.timestamp[0] = 1000n;
|
|
233
|
-
|
|
243
|
+
{
|
|
244
|
+
const entryTypes = buffer.entry_type;
|
|
245
|
+
if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
|
|
246
|
+
entryTypes[0] = ENTRY_TYPE_SPAN_START;
|
|
247
|
+
}
|
|
234
248
|
buffer._writeIndex = 1;
|
|
235
249
|
|
|
236
250
|
// Convert to Arrow table
|
|
@@ -300,7 +314,11 @@ describe('Buffer Integration', () => {
|
|
|
300
314
|
|
|
301
315
|
// Set system columns
|
|
302
316
|
buffer.timestamp[0] = 1000n;
|
|
303
|
-
|
|
317
|
+
{
|
|
318
|
+
const entryTypes = buffer.entry_type;
|
|
319
|
+
if (entryTypes === undefined) throw new Error('Expected split entry-type lane');
|
|
320
|
+
entryTypes[0] = ENTRY_TYPE_INFO;
|
|
321
|
+
}
|
|
304
322
|
buffer._writeIndex = 1;
|
|
305
323
|
|
|
306
324
|
// Convert to Arrow using arrow-builder
|
|
@@ -332,12 +350,12 @@ describe('Buffer Integration', () => {
|
|
|
332
350
|
|
|
333
351
|
// Verify buffer properly references schema via constructor
|
|
334
352
|
expect(buffer._logSchema).toBe(schema);
|
|
335
|
-
expect(buffer
|
|
353
|
+
expect(resolveMessage(buffer, 0)).toBe('context-integration');
|
|
336
354
|
|
|
337
355
|
// Verify system metadata columns are accessible
|
|
338
356
|
expect(buffer.span_id).toBeGreaterThan(0);
|
|
339
357
|
expect(typeof buffer._hasParent).toBe('boolean');
|
|
340
|
-
expect(buffer.
|
|
358
|
+
expect(buffer._traceRoot._topology.buffers[buffer._nodeIndex]).toBe(buffer);
|
|
341
359
|
expect(buffer._writeIndex).toBe(0);
|
|
342
360
|
expect(buffer._capacity).toBe(DEFAULT_BUFFER_CAPACITY);
|
|
343
361
|
});
|
|
@@ -3,7 +3,7 @@ import { createColumnBuffer } from '@smoothbricks/arrow-builder';
|
|
|
3
3
|
import { createTagWriter, S } from '@smoothbricks/lmao';
|
|
4
4
|
import { createSpanBuffer } from '../../spanBuffer.js';
|
|
5
5
|
|
|
6
|
-
import { createTestOpMetadata, createTestSchema, createTestTraceRoot } from '../test-helpers.js';
|
|
6
|
+
import { createTestOpMetadata, createTestSchema, createTestSpanContext, createTestTraceRoot } from '../test-helpers.js';
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* Tests for lazy column initialization
|
|
@@ -331,6 +331,7 @@ describe('SpanBuffer Lazy Column Allocation', () => {
|
|
|
331
331
|
});
|
|
332
332
|
|
|
333
333
|
const buffer = createSpanBuffer(schema, createTestTraceRoot('test-trace'), createTestOpMetadata(), 8);
|
|
334
|
+
const context = createTestSpanContext(schema, buffer);
|
|
334
335
|
|
|
335
336
|
// Lazy columns should be undefined before TagWriter access
|
|
336
337
|
expect(buffer.getColumnIfAllocated('userId')).toBeUndefined();
|
|
@@ -339,7 +340,7 @@ describe('SpanBuffer Lazy Column Allocation', () => {
|
|
|
339
340
|
expect(buffer.getColumnIfAllocated('operation')).toBeUndefined();
|
|
340
341
|
|
|
341
342
|
// Create TagWriter and write to one column (createTagWriter expects LogSchema instance)
|
|
342
|
-
const tagWriter = createTagWriter(schema,
|
|
343
|
+
const tagWriter = createTagWriter(schema, context);
|
|
343
344
|
tagWriter.userId('user-123');
|
|
344
345
|
|
|
345
346
|
// After TagWriter write, the column should be allocated
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { beforeEach, describe, expect, it } from 'bun:test';
|
|
2
2
|
import { DEFAULT_BUFFER_CAPACITY } from '@smoothbricks/arrow-builder';
|
|
3
3
|
import fc from 'fast-check';
|
|
4
|
-
import { createSpanLogger } from '../codegen/spanLoggerGenerator.js';
|
|
5
4
|
import { DEFAULT_METADATA } from '../opContext/defineOp.js';
|
|
5
|
+
import { resolveMessage } from '../resolveMessage.js';
|
|
6
6
|
import { S } from '../schema/builder.js';
|
|
7
7
|
import { LogSchema } from '../schema/LogSchema.js';
|
|
8
8
|
import { mergeWithSystemSchema } from '../schema/systemSchema.js';
|
|
9
9
|
import { createSpanBuffer, getSpanBufferClass, type SpanBufferConstructor } from '../spanBuffer.js';
|
|
10
10
|
|
|
11
|
-
import type { AnySpanBuffer } from '../types.js';
|
|
12
|
-
import { createBuffer, createTestTraceRoot } from './test-helpers.js';
|
|
11
|
+
import type { AnySpanBuffer, SpanBuffer } from '../types.js';
|
|
12
|
+
import { createBuffer, createTestSpanContext, createTestTraceRoot } from './test-helpers.js';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Property-based tests for buffer overflow handling.
|
|
@@ -41,6 +41,12 @@ const testSchema = new LogSchema(
|
|
|
41
41
|
const RESERVED_ROWS = 2;
|
|
42
42
|
const DB_OPERATIONS = ['SELECT', 'INSERT', 'UPDATE', 'DELETE'] as const;
|
|
43
43
|
|
|
44
|
+
function createLoggerContext(buffer: SpanBuffer<typeof testSchema>) {
|
|
45
|
+
const ctx = createTestSpanContext(testSchema, buffer);
|
|
46
|
+
ctx._buffer._writeIndex = RESERVED_ROWS;
|
|
47
|
+
return ctx;
|
|
48
|
+
}
|
|
49
|
+
|
|
44
50
|
type BufferChainAnalysis = {
|
|
45
51
|
bufferCount: number;
|
|
46
52
|
totalEntries: number;
|
|
@@ -198,7 +204,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
198
204
|
SpanBufferClass.stats.spansCreated = 0;
|
|
199
205
|
|
|
200
206
|
const buffer = createBuffer(testSchema);
|
|
201
|
-
const logger =
|
|
207
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
202
208
|
|
|
203
209
|
// Write entries
|
|
204
210
|
for (let i = 0; i < numEntries; i++) {
|
|
@@ -235,7 +241,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
235
241
|
SpanBufferClass.stats.spansCreated = 0;
|
|
236
242
|
|
|
237
243
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
238
|
-
const logger =
|
|
244
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
239
245
|
|
|
240
246
|
// Write entries
|
|
241
247
|
for (let i = 0; i < numEntries; i++) {
|
|
@@ -260,7 +266,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
260
266
|
SpanBufferClass.stats.spansCreated = 0;
|
|
261
267
|
|
|
262
268
|
const buffer = createBuffer(testSchema);
|
|
263
|
-
const logger =
|
|
269
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
264
270
|
|
|
265
271
|
for (let i = 0; i < numEntries; i++) {
|
|
266
272
|
logger.info(`msg-${i}`);
|
|
@@ -302,7 +308,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
302
308
|
SpanBufferClass.stats.spansCreated = 0;
|
|
303
309
|
|
|
304
310
|
const buffer = createBuffer(testSchema);
|
|
305
|
-
const logger =
|
|
311
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
306
312
|
|
|
307
313
|
const operations = ['SELECT', 'INSERT', 'UPDATE', 'DELETE'] as const;
|
|
308
314
|
|
|
@@ -342,7 +348,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
342
348
|
SpanBufferClass.stats.spansCreated = 0;
|
|
343
349
|
|
|
344
350
|
const buffer = createBuffer(testSchema);
|
|
345
|
-
const logger =
|
|
351
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
346
352
|
|
|
347
353
|
for (let i = 0; i < numEntries; i++) {
|
|
348
354
|
logger.info(`msg-${i}`);
|
|
@@ -365,7 +371,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
365
371
|
SpanBufferClass.stats.spansCreated = 0;
|
|
366
372
|
|
|
367
373
|
const buffer = createBuffer(testSchema);
|
|
368
|
-
const logger =
|
|
374
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
369
375
|
|
|
370
376
|
for (let i = 0; i < numEntries; i++) {
|
|
371
377
|
logger.info(`msg-${i}`);
|
|
@@ -392,7 +398,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
392
398
|
const usableCapacity = capacity - RESERVED_ROWS; // 6 entries fit
|
|
393
399
|
|
|
394
400
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
395
|
-
const logger =
|
|
401
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
396
402
|
|
|
397
403
|
// Write exactly usable capacity entries (6 with capacity=8, reserved=2)
|
|
398
404
|
for (let i = 0; i < usableCapacity; i++) {
|
|
@@ -411,7 +417,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
411
417
|
const usableCapacity = capacity - RESERVED_ROWS; // 6
|
|
412
418
|
|
|
413
419
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
414
|
-
const logger =
|
|
420
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
415
421
|
|
|
416
422
|
// Write usable capacity + 1 entries (7 entries)
|
|
417
423
|
for (let i = 0; i < usableCapacity + 1; i++) {
|
|
@@ -431,7 +437,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
431
437
|
it('zero entries: single buffer with just reserved space', () => {
|
|
432
438
|
const buffer = createBuffer(testSchema);
|
|
433
439
|
// Create logger but don't write anything
|
|
434
|
-
|
|
440
|
+
createLoggerContext(buffer)._spanLogger;
|
|
435
441
|
|
|
436
442
|
expect(buffer._overflow).toBeUndefined();
|
|
437
443
|
// Logger constructor sets writeIndex to 2 (after reserved rows)
|
|
@@ -453,7 +459,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
453
459
|
SpanBufferClass.stats.spansCreated = 0;
|
|
454
460
|
|
|
455
461
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
456
|
-
const logger =
|
|
462
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
457
463
|
|
|
458
464
|
for (let i = 0; i < numEntries; i++) {
|
|
459
465
|
logger.info(`msg-${i}`).requestId(`req-${i}`);
|
|
@@ -480,7 +486,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
480
486
|
const usableCapacity = capacity - RESERVED_ROWS; // 6
|
|
481
487
|
|
|
482
488
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
483
|
-
const logger =
|
|
489
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
484
490
|
|
|
485
491
|
// Set scope values that should be prefilled
|
|
486
492
|
buffer._scopeValues = Object.freeze({
|
|
@@ -509,7 +515,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
509
515
|
expect(overflowProbe._userId_values).toBeUndefined();
|
|
510
516
|
|
|
511
517
|
// Row 0 has the actual entry (message IS allocated because .info() writes to it)
|
|
512
|
-
expect(overflowBuffer
|
|
518
|
+
expect(resolveMessage(overflowBuffer, 0)).toBe('msg-6');
|
|
513
519
|
});
|
|
514
520
|
|
|
515
521
|
it('should prefill scoped attributes across multiple overflow buffers', () => {
|
|
@@ -517,7 +523,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
517
523
|
const usableCapacity = capacity - RESERVED_ROWS; // 6
|
|
518
524
|
|
|
519
525
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
520
|
-
const logger =
|
|
526
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
521
527
|
|
|
522
528
|
buffer._scopeValues = Object.freeze({
|
|
523
529
|
requestId: 'req-xyz',
|
|
@@ -548,7 +554,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
548
554
|
const usableCapacity = capacity - RESERVED_ROWS; // 6
|
|
549
555
|
|
|
550
556
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
551
|
-
const logger =
|
|
557
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
552
558
|
|
|
553
559
|
// Set scope for ONLY userId and requestId, NOT operation or duration or success
|
|
554
560
|
buffer._scopeValues = Object.freeze({
|
|
@@ -579,7 +585,7 @@ describe('Buffer Overflow Property Tests', () => {
|
|
|
579
585
|
const usableCapacity = capacity - RESERVED_ROWS;
|
|
580
586
|
|
|
581
587
|
const buffer = createSpanBuffer(testSchema, createTestTraceRoot('test-trace'), DEFAULT_METADATA, capacity);
|
|
582
|
-
const logger =
|
|
588
|
+
const logger = createLoggerContext(buffer)._spanLogger;
|
|
583
589
|
|
|
584
590
|
// Set scope for userId but NEVER call .userId() directly
|
|
585
591
|
buffer._scopeValues = Object.freeze({
|