@trigger.dev/core 4.5.14 → 4.5.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/dist/commonjs/v3/apiClient/index.d.ts +8 -2
- package/dist/commonjs/v3/apiClient/index.js +19 -6
- package/dist/commonjs/v3/apiClient/index.js.map +1 -1
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
- package/dist/commonjs/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
- package/dist/commonjs/v3/schemas/api.js +1 -1
- package/dist/commonjs/v3/schemas/api.js.map +1 -1
- package/dist/commonjs/v3/session-streams-api.d.ts +1 -0
- package/dist/commonjs/v3/session-streams-api.js +1 -0
- package/dist/commonjs/v3/session-streams-api.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/channels.d.ts +25 -0
- package/dist/commonjs/v3/sessionStreams/channels.js +3 -0
- package/dist/commonjs/v3/sessionStreams/channels.js.map +1 -0
- package/dist/commonjs/v3/sessionStreams/index.d.ts +16 -16
- package/dist/commonjs/v3/sessionStreams/index.js +32 -32
- package/dist/commonjs/v3/sessionStreams/index.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/manager.d.ts +16 -16
- package/dist/commonjs/v3/sessionStreams/manager.js +48 -47
- package/dist/commonjs/v3/sessionStreams/manager.js.map +1 -1
- package/dist/commonjs/v3/sessionStreams/types.d.ts +16 -16
- package/dist/commonjs/version.js +1 -1
- package/dist/esm/v3/apiClient/index.d.ts +8 -2
- package/dist/esm/v3/apiClient/index.js +19 -6
- package/dist/esm/v3/apiClient/index.js.map +1 -1
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.d.ts +2 -2
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js +6 -6
- package/dist/esm/v3/realtimeStreams/sessionStreamOneshot.js.map +1 -1
- package/dist/esm/v3/schemas/api.js +1 -1
- package/dist/esm/v3/schemas/api.js.map +1 -1
- package/dist/esm/v3/session-streams-api.d.ts +1 -0
- package/dist/esm/v3/session-streams-api.js +1 -0
- package/dist/esm/v3/session-streams-api.js.map +1 -1
- package/dist/esm/v3/sessionStreams/channels.d.ts +25 -0
- package/dist/esm/v3/sessionStreams/channels.js +2 -0
- package/dist/esm/v3/sessionStreams/channels.js.map +1 -0
- package/dist/esm/v3/sessionStreams/index.d.ts +16 -16
- package/dist/esm/v3/sessionStreams/index.js +32 -32
- package/dist/esm/v3/sessionStreams/index.js.map +1 -1
- package/dist/esm/v3/sessionStreams/manager.d.ts +16 -16
- package/dist/esm/v3/sessionStreams/manager.js +48 -47
- package/dist/esm/v3/sessionStreams/manager.js.map +1 -1
- package/dist/esm/v3/sessionStreams/types.d.ts +16 -16
- package/dist/esm/version.js +1 -1
- package/package.json +4 -1
- package/dist/commonjs/v3/apiClient/bulkActions.test.d.ts +0 -1
- package/dist/commonjs/v3/apiClient/bulkActions.test.js +0 -151
- package/dist/commonjs/v3/apiClient/bulkActions.test.js.map +0 -1
- package/dist/commonjs/v3/apiClient/refreshAccessToken.test.d.ts +0 -1
- package/dist/commonjs/v3/apiClient/refreshAccessToken.test.js +0 -55
- package/dist/commonjs/v3/apiClient/refreshAccessToken.test.js.map +0 -1
- package/dist/commonjs/v3/apiClient/runStream.test.d.ts +0 -1
- package/dist/commonjs/v3/apiClient/runStream.test.js +0 -825
- package/dist/commonjs/v3/apiClient/runStream.test.js.map +0 -1
- package/dist/commonjs/v3/apiClient/streamBatchItems.test.d.ts +0 -1
- package/dist/commonjs/v3/apiClient/streamBatchItems.test.js +0 -408
- package/dist/commonjs/v3/apiClient/streamBatchItems.test.js.map +0 -1
- package/dist/commonjs/v3/apiKeys.test.d.ts +0 -1
- package/dist/commonjs/v3/apiKeys.test.js +0 -19
- package/dist/commonjs/v3/apiKeys.test.js.map +0 -1
- package/dist/commonjs/v3/apps/exec.test.d.ts +0 -1
- package/dist/commonjs/v3/apps/exec.test.js +0 -23
- package/dist/commonjs/v3/apps/exec.test.js.map +0 -1
- package/dist/commonjs/v3/build/flags.test.d.ts +0 -1
- package/dist/commonjs/v3/build/flags.test.js +0 -50
- package/dist/commonjs/v3/build/flags.test.js.map +0 -1
- package/dist/commonjs/v3/build/runtime.test.d.ts +0 -1
- package/dist/commonjs/v3/build/runtime.test.js +0 -44
- package/dist/commonjs/v3/build/runtime.test.js.map +0 -1
- package/dist/commonjs/v3/errors.test.d.ts +0 -1
- package/dist/commonjs/v3/errors.test.js +0 -36
- package/dist/commonjs/v3/errors.test.js.map +0 -1
- package/dist/commonjs/v3/externalDeploymentId.test.d.ts +0 -1
- package/dist/commonjs/v3/externalDeploymentId.test.js +0 -173
- package/dist/commonjs/v3/externalDeploymentId.test.js.map +0 -1
- package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
- package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -44
- package/dist/commonjs/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
- package/dist/commonjs/v3/idempotencyKeys.test.d.ts +0 -1
- package/dist/commonjs/v3/idempotencyKeys.test.js +0 -192
- package/dist/commonjs/v3/idempotencyKeys.test.js.map +0 -1
- package/dist/commonjs/v3/isomorphic/friendlyId.test.d.ts +0 -1
- package/dist/commonjs/v3/isomorphic/friendlyId.test.js +0 -497
- package/dist/commonjs/v3/isomorphic/friendlyId.test.js.map +0 -1
- package/dist/commonjs/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
- package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js +0 -141
- package/dist/commonjs/v3/isomorphic/runOpsResidency.test.js.map +0 -1
- package/dist/commonjs/v3/isomorphic/waitpointMint.test.d.ts +0 -1
- package/dist/commonjs/v3/isomorphic/waitpointMint.test.js +0 -97
- package/dist/commonjs/v3/isomorphic/waitpointMint.test.js.map +0 -1
- package/dist/commonjs/v3/machines/max-old-space.test.d.ts +0 -1
- package/dist/commonjs/v3/machines/max-old-space.test.js +0 -44
- package/dist/commonjs/v3/machines/max-old-space.test.js.map +0 -1
- package/dist/commonjs/v3/otel/tracingSDK.test.d.ts +0 -1
- package/dist/commonjs/v3/otel/tracingSDK.test.js +0 -174
- package/dist/commonjs/v3/otel/tracingSDK.test.js.map +0 -1
- package/dist/commonjs/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
- package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js +0 -18
- package/dist/commonjs/v3/otel/tracingSDKShutdown.test.js.map +0 -1
- package/dist/commonjs/v3/realtimeStreams/manager.test.d.ts +0 -1
- package/dist/commonjs/v3/realtimeStreams/manager.test.js +0 -89
- package/dist/commonjs/v3/realtimeStreams/manager.test.js.map +0 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js +0 -68
- package/dist/commonjs/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -674
- package/dist/commonjs/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -77
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -293
- package/dist/commonjs/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -235
- package/dist/commonjs/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/api-type.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/api-type.test.js +0 -358
- package/dist/commonjs/v3/schemas/api-type.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js +0 -79
- package/dist/commonjs/v3/schemas/batchItemNDJSON.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/idempotencyKey.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/idempotencyKey.test.js +0 -157
- package/dist/commonjs/v3/schemas/idempotencyKey.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/scheduleWindow.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/scheduleWindow.test.js +0 -52
- package/dist/commonjs/v3/schemas/scheduleWindow.test.js.map +0 -1
- package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
- package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js +0 -104
- package/dist/commonjs/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
- package/dist/commonjs/v3/serverOnly/shutdownManager.test.d.ts +0 -1
- package/dist/commonjs/v3/serverOnly/shutdownManager.test.js +0 -139
- package/dist/commonjs/v3/serverOnly/shutdownManager.test.js.map +0 -1
- package/dist/commonjs/v3/sessionStreams/manager.test.d.ts +0 -1
- package/dist/commonjs/v3/sessionStreams/manager.test.js +0 -375
- package/dist/commonjs/v3/sessionStreams/manager.test.js.map +0 -1
- package/dist/commonjs/v3/sessionStreams/router.test.d.ts +0 -1
- package/dist/commonjs/v3/sessionStreams/router.test.js +0 -463
- package/dist/commonjs/v3/sessionStreams/router.test.js.map +0 -1
- package/dist/commonjs/v3/taskContext/index.test.d.ts +0 -1
- package/dist/commonjs/v3/taskContext/index.test.js +0 -73
- package/dist/commonjs/v3/taskContext/index.test.js.map +0 -1
- package/dist/commonjs/v3/taskContext/otelProcessors.test.d.ts +0 -1
- package/dist/commonjs/v3/taskContext/otelProcessors.test.js +0 -109
- package/dist/commonjs/v3/taskContext/otelProcessors.test.js.map +0 -1
- package/dist/commonjs/v3/telnetLogServer.test.d.ts +0 -1
- package/dist/commonjs/v3/telnetLogServer.test.js +0 -144
- package/dist/commonjs/v3/telnetLogServer.test.js.map +0 -1
- package/dist/commonjs/v3/utils/reconnectBackoff.test.d.ts +0 -1
- package/dist/commonjs/v3/utils/reconnectBackoff.test.js +0 -76
- package/dist/commonjs/v3/utils/reconnectBackoff.test.js.map +0 -1
- package/dist/commonjs/v3/workloadDeploymentToken.test.d.ts +0 -1
- package/dist/commonjs/v3/workloadDeploymentToken.test.js +0 -110
- package/dist/commonjs/v3/workloadDeploymentToken.test.js.map +0 -1
- package/dist/esm/v3/apiClient/bulkActions.test.d.ts +0 -1
- package/dist/esm/v3/apiClient/bulkActions.test.js +0 -149
- package/dist/esm/v3/apiClient/bulkActions.test.js.map +0 -1
- package/dist/esm/v3/apiClient/refreshAccessToken.test.d.ts +0 -1
- package/dist/esm/v3/apiClient/refreshAccessToken.test.js +0 -53
- package/dist/esm/v3/apiClient/refreshAccessToken.test.js.map +0 -1
- package/dist/esm/v3/apiClient/runStream.test.d.ts +0 -1
- package/dist/esm/v3/apiClient/runStream.test.js +0 -823
- package/dist/esm/v3/apiClient/runStream.test.js.map +0 -1
- package/dist/esm/v3/apiClient/streamBatchItems.test.d.ts +0 -1
- package/dist/esm/v3/apiClient/streamBatchItems.test.js +0 -406
- package/dist/esm/v3/apiClient/streamBatchItems.test.js.map +0 -1
- package/dist/esm/v3/apiKeys.test.d.ts +0 -1
- package/dist/esm/v3/apiKeys.test.js +0 -17
- package/dist/esm/v3/apiKeys.test.js.map +0 -1
- package/dist/esm/v3/apps/exec.test.d.ts +0 -1
- package/dist/esm/v3/apps/exec.test.js +0 -21
- package/dist/esm/v3/apps/exec.test.js.map +0 -1
- package/dist/esm/v3/build/flags.test.d.ts +0 -1
- package/dist/esm/v3/build/flags.test.js +0 -48
- package/dist/esm/v3/build/flags.test.js.map +0 -1
- package/dist/esm/v3/build/runtime.test.d.ts +0 -1
- package/dist/esm/v3/build/runtime.test.js +0 -42
- package/dist/esm/v3/build/runtime.test.js.map +0 -1
- package/dist/esm/v3/errors.test.d.ts +0 -1
- package/dist/esm/v3/errors.test.js +0 -34
- package/dist/esm/v3/errors.test.js.map +0 -1
- package/dist/esm/v3/externalDeploymentId.test.d.ts +0 -1
- package/dist/esm/v3/externalDeploymentId.test.js +0 -171
- package/dist/esm/v3/externalDeploymentId.test.js.map +0 -1
- package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.d.ts +0 -1
- package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js +0 -42
- package/dist/esm/v3/idempotency-key-catalog/inMemoryIdempotencyKeyCatalog.test.js.map +0 -1
- package/dist/esm/v3/idempotencyKeys.test.d.ts +0 -1
- package/dist/esm/v3/idempotencyKeys.test.js +0 -190
- package/dist/esm/v3/idempotencyKeys.test.js.map +0 -1
- package/dist/esm/v3/isomorphic/friendlyId.test.d.ts +0 -1
- package/dist/esm/v3/isomorphic/friendlyId.test.js +0 -495
- package/dist/esm/v3/isomorphic/friendlyId.test.js.map +0 -1
- package/dist/esm/v3/isomorphic/runOpsResidency.test.d.ts +0 -1
- package/dist/esm/v3/isomorphic/runOpsResidency.test.js +0 -139
- package/dist/esm/v3/isomorphic/runOpsResidency.test.js.map +0 -1
- package/dist/esm/v3/isomorphic/waitpointMint.test.d.ts +0 -1
- package/dist/esm/v3/isomorphic/waitpointMint.test.js +0 -95
- package/dist/esm/v3/isomorphic/waitpointMint.test.js.map +0 -1
- package/dist/esm/v3/machines/max-old-space.test.d.ts +0 -1
- package/dist/esm/v3/machines/max-old-space.test.js +0 -42
- package/dist/esm/v3/machines/max-old-space.test.js.map +0 -1
- package/dist/esm/v3/otel/tracingSDK.test.d.ts +0 -1
- package/dist/esm/v3/otel/tracingSDK.test.js +0 -172
- package/dist/esm/v3/otel/tracingSDK.test.js.map +0 -1
- package/dist/esm/v3/otel/tracingSDKShutdown.test.d.ts +0 -1
- package/dist/esm/v3/otel/tracingSDKShutdown.test.js +0 -16
- package/dist/esm/v3/otel/tracingSDKShutdown.test.js.map +0 -1
- package/dist/esm/v3/realtimeStreams/manager.test.d.ts +0 -1
- package/dist/esm/v3/realtimeStreams/manager.test.js +0 -87
- package/dist/esm/v3/realtimeStreams/manager.test.js.map +0 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.d.ts +0 -1
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js +0 -66
- package/dist/esm/v3/realtimeStreams/streamsWriterV2.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js +0 -672
- package/dist/esm/v3/runEngineWorker/supervisor/consumerPool.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js +0 -75
- package/dist/esm/v3/runEngineWorker/supervisor/queueConsumer.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js +0 -291
- package/dist/esm/v3/runEngineWorker/supervisor/queueMetricsProcessor.test.js.map +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.d.ts +0 -1
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js +0 -233
- package/dist/esm/v3/runEngineWorker/supervisor/scalingStrategies.test.js.map +0 -1
- package/dist/esm/v3/schemas/api-type.test.d.ts +0 -1
- package/dist/esm/v3/schemas/api-type.test.js +0 -356
- package/dist/esm/v3/schemas/api-type.test.js.map +0 -1
- package/dist/esm/v3/schemas/batchItemNDJSON.test.d.ts +0 -1
- package/dist/esm/v3/schemas/batchItemNDJSON.test.js +0 -77
- package/dist/esm/v3/schemas/batchItemNDJSON.test.js.map +0 -1
- package/dist/esm/v3/schemas/idempotencyKey.test.d.ts +0 -1
- package/dist/esm/v3/schemas/idempotencyKey.test.js +0 -155
- package/dist/esm/v3/schemas/idempotencyKey.test.js.map +0 -1
- package/dist/esm/v3/schemas/scheduleWindow.test.d.ts +0 -1
- package/dist/esm/v3/schemas/scheduleWindow.test.js +0 -50
- package/dist/esm/v3/schemas/scheduleWindow.test.js.map +0 -1
- package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.d.ts +0 -1
- package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js +0 -102
- package/dist/esm/v3/schemas/triggerExternalDeploymentId.test.js.map +0 -1
- package/dist/esm/v3/serverOnly/shutdownManager.test.d.ts +0 -1
- package/dist/esm/v3/serverOnly/shutdownManager.test.js +0 -137
- package/dist/esm/v3/serverOnly/shutdownManager.test.js.map +0 -1
- package/dist/esm/v3/sessionStreams/manager.test.d.ts +0 -1
- package/dist/esm/v3/sessionStreams/manager.test.js +0 -373
- package/dist/esm/v3/sessionStreams/manager.test.js.map +0 -1
- package/dist/esm/v3/sessionStreams/router.test.d.ts +0 -1
- package/dist/esm/v3/sessionStreams/router.test.js +0 -461
- package/dist/esm/v3/sessionStreams/router.test.js.map +0 -1
- package/dist/esm/v3/taskContext/index.test.d.ts +0 -1
- package/dist/esm/v3/taskContext/index.test.js +0 -71
- package/dist/esm/v3/taskContext/index.test.js.map +0 -1
- package/dist/esm/v3/taskContext/otelProcessors.test.d.ts +0 -1
- package/dist/esm/v3/taskContext/otelProcessors.test.js +0 -107
- package/dist/esm/v3/taskContext/otelProcessors.test.js.map +0 -1
- package/dist/esm/v3/telnetLogServer.test.d.ts +0 -1
- package/dist/esm/v3/telnetLogServer.test.js +0 -139
- package/dist/esm/v3/telnetLogServer.test.js.map +0 -1
- package/dist/esm/v3/utils/reconnectBackoff.test.d.ts +0 -1
- package/dist/esm/v3/utils/reconnectBackoff.test.js +0 -74
- package/dist/esm/v3/utils/reconnectBackoff.test.js.map +0 -1
- package/dist/esm/v3/workloadDeploymentToken.test.d.ts +0 -1
- package/dist/esm/v3/workloadDeploymentToken.test.js +0 -108
- package/dist/esm/v3/workloadDeploymentToken.test.js.map +0 -1
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { RunId, WaitpointId, BatchId, SnapshotId, generateRunOpsId, generateRunOpsIdV2, } from "./friendlyId.js";
|
|
3
|
-
import { ownerEngine, classifyResidency, classifyKind, isClassifiable, resolveShard, } from "./runOpsResidency.js";
|
|
4
|
-
const SAMPLES = 50_000; // property-scale; CI-fast. (Bump locally toward "millions" for deeper coverage.)
|
|
5
|
-
/** Every legal gen-2 shard char: the full DNS-safe lowercase range. */
|
|
6
|
-
const SHARD_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789".split("");
|
|
7
|
-
describe("ownerEngine — residency classifier (version char at fixed position, not length)", () => {
|
|
8
|
-
it("cuid ids (default mint) classify LEGACY, friendly + internal", () => {
|
|
9
|
-
for (const util of [RunId, WaitpointId]) {
|
|
10
|
-
const { id, friendlyId } = util.generate();
|
|
11
|
-
expect(ownerEngine(id)).toBe("LEGACY");
|
|
12
|
-
expect(ownerEngine(friendlyId)).toBe("LEGACY"); // strips run_/waitpoint_ prefix
|
|
13
|
-
expect(classifyResidency(id)).toBe("LEGACY"); // alias agrees
|
|
14
|
-
expect(classifyKind(id)).toBe("cuid");
|
|
15
|
-
expect(isClassifiable(id)).toBe(true);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
it("run-ops v1 ids (generateRunOpsId) classify NEW, friendly + internal, across id-shape co-located entities", () => {
|
|
19
|
-
for (const util of [RunId, WaitpointId, BatchId]) {
|
|
20
|
-
const id = generateRunOpsId("us-east-1");
|
|
21
|
-
const friendlyId = util.toFriendlyId(id);
|
|
22
|
-
expect(ownerEngine(id)).toBe("NEW");
|
|
23
|
-
expect(ownerEngine(friendlyId)).toBe("NEW");
|
|
24
|
-
expect(classifyResidency(id)).toBe("NEW");
|
|
25
|
-
expect(classifyKind(id)).toBe("runOpsId");
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
it("discriminates on the version char, not length: 26+'1' → NEW, 26+'2' → NEW (gen-2)", () => {
|
|
29
|
-
const v1 = "a".repeat(24) + "e1";
|
|
30
|
-
expect(ownerEngine(v1)).toBe("NEW");
|
|
31
|
-
expect(ownerEngine("a".repeat(24) + "e2")).toBe("NEW"); // gen-2: shard "e"
|
|
32
|
-
expect(ownerEngine("a".repeat(24) + "e9")).toBe("LEGACY"); // unallocated version char
|
|
33
|
-
expect(ownerEngine("a".repeat(26))).toBe("LEGACY"); // 26 chars but no version marker
|
|
34
|
-
});
|
|
35
|
-
it("malformed v1 shapes fall back to LEGACY (never throw)", () => {
|
|
36
|
-
for (const bad of [
|
|
37
|
-
"",
|
|
38
|
-
"x".repeat(24) + "01", // 'x' outside base32hex
|
|
39
|
-
"A".repeat(25) + "1", // uppercase
|
|
40
|
-
"a".repeat(24) + "-1", // hyphen region char
|
|
41
|
-
"a".repeat(27), // pre-cutover 27-char shape → LEGACY under the version rule
|
|
42
|
-
"run_" + "b".repeat(27), // 27-char base62 pre-cutover friendly id → LEGACY
|
|
43
|
-
"x".repeat(40),
|
|
44
|
-
]) {
|
|
45
|
-
expect(ownerEngine(bad)).toBe("LEGACY");
|
|
46
|
-
expect(isClassifiable(bad)).toBe(true); // classification is total now
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
it("disjointness: no cuid sample is ever NEW, no v1 sample is ever LEGACY", () => {
|
|
50
|
-
for (let i = 0; i < SAMPLES; i++) {
|
|
51
|
-
expect(ownerEngine(RunId.generate().id)).toBe("LEGACY");
|
|
52
|
-
expect(ownerEngine(generateRunOpsId())).toBe("NEW");
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
it("SnapshotId (always cuid) classifies LEGACY — proves snapshot needs no residency key", () => {
|
|
56
|
-
expect(ownerEngine(SnapshotId.generate().id)).toBe("LEGACY");
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
describe("resolveShard — the gen-2 refinement inside the dedicated family", () => {
|
|
60
|
-
it("returns the shard char for every legal gen-2 shard key, friendly + internal", () => {
|
|
61
|
-
for (const c of SHARD_CHARS) {
|
|
62
|
-
const id = generateRunOpsIdV2(c);
|
|
63
|
-
expect(resolveShard(id)).toBe(c);
|
|
64
|
-
expect(resolveShard(RunId.toFriendlyId(id))).toBe(c);
|
|
65
|
-
expect(resolveShard(WaitpointId.toFriendlyId(id))).toBe(c);
|
|
66
|
-
expect(resolveShard(BatchId.toFriendlyId(id))).toBe(c);
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
it("returns 'new' for a gen-1 v1 body, friendly + internal", () => {
|
|
70
|
-
for (const region of [undefined, "us-east-1", "us-west-2", "eu-central-1"]) {
|
|
71
|
-
const id = generateRunOpsId(region);
|
|
72
|
-
expect(resolveShard(id)).toBe("new");
|
|
73
|
-
expect(resolveShard(RunId.toFriendlyId(id))).toBe("new");
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
it("returns 'legacy' for a cuid, a nanoid, a pre-cutover base62 id and malformed input", () => {
|
|
77
|
-
expect(resolveShard(RunId.generate().id)).toBe("legacy"); // cuid, 25
|
|
78
|
-
expect(resolveShard(RunId.generate().friendlyId)).toBe("legacy");
|
|
79
|
-
expect(resolveShard("123456789abcdefghijkm")).toBe("legacy"); // nanoid, 21
|
|
80
|
-
expect(resolveShard("b".repeat(27))).toBe("legacy"); // pre-cutover base62, 27
|
|
81
|
-
for (const bad of [
|
|
82
|
-
"",
|
|
83
|
-
"x".repeat(24) + "01", // 'x' outside base32hex
|
|
84
|
-
"x".repeat(24) + "02", // 'x' outside base32hex, gen-2 version
|
|
85
|
-
"A".repeat(25) + "1", // uppercase
|
|
86
|
-
"A".repeat(25) + "2", // uppercase, gen-2 version
|
|
87
|
-
"a".repeat(24) + "-1", // hyphen positional char
|
|
88
|
-
"a".repeat(24) + "-2", // hyphen positional char, gen-2 version
|
|
89
|
-
"a".repeat(26), // 26 chars, no version marker
|
|
90
|
-
"a".repeat(24) + "e9", // unallocated version char
|
|
91
|
-
"x".repeat(40),
|
|
92
|
-
]) {
|
|
93
|
-
expect(resolveShard(bad)).toBe("legacy");
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
it("never throws, for any input string", () => {
|
|
97
|
-
for (const input of ["", "x", "-".repeat(26), " ".repeat(26), "\u{1F642}".repeat(26)]) {
|
|
98
|
-
expect(() => resolveShard(input)).not.toThrow();
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
it("the reserved keys are multi-char, so no single-char shard key can collide", () => {
|
|
102
|
-
for (const reserved of ["legacy", "new"]) {
|
|
103
|
-
expect(reserved.length).toBeGreaterThan(1);
|
|
104
|
-
expect(SHARD_CHARS).not.toContain(reserved);
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
describe("gen-2 ids classify NEW — the dedicated family widens in meaning only", () => {
|
|
109
|
-
it("a gen-2 id is NEW / runOpsId across id-shape co-located entities", () => {
|
|
110
|
-
for (const util of [RunId, WaitpointId, BatchId]) {
|
|
111
|
-
const id = generateRunOpsIdV2("a");
|
|
112
|
-
const friendlyId = util.toFriendlyId(id);
|
|
113
|
-
expect(ownerEngine(id)).toBe("NEW");
|
|
114
|
-
expect(ownerEngine(friendlyId)).toBe("NEW");
|
|
115
|
-
expect(classifyResidency(id)).toBe("NEW");
|
|
116
|
-
expect(classifyKind(id)).toBe("runOpsId");
|
|
117
|
-
expect(isClassifiable(id)).toBe(true);
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
it("26+'2' is now a gen-2 shard route, not LEGACY (the one deliberate flip)", () => {
|
|
121
|
-
const genTwo = "a".repeat(24) + "e2";
|
|
122
|
-
expect(ownerEngine(genTwo)).toBe("NEW");
|
|
123
|
-
expect(resolveShard(genTwo)).toBe("e");
|
|
124
|
-
});
|
|
125
|
-
it("three-way disjointness: cuid, gen-1 v1 and gen-2 never cross-classify", () => {
|
|
126
|
-
for (let i = 0; i < SAMPLES; i++) {
|
|
127
|
-
const cuid = RunId.generate().id;
|
|
128
|
-
const v1 = generateRunOpsId();
|
|
129
|
-
const v2 = generateRunOpsIdV2(SHARD_CHARS[i % SHARD_CHARS.length]);
|
|
130
|
-
expect(ownerEngine(cuid)).toBe("LEGACY");
|
|
131
|
-
expect(resolveShard(cuid)).toBe("legacy");
|
|
132
|
-
expect(ownerEngine(v1)).toBe("NEW");
|
|
133
|
-
expect(resolveShard(v1)).toBe("new");
|
|
134
|
-
expect(ownerEngine(v2)).toBe("NEW");
|
|
135
|
-
expect(resolveShard(v2)).toBe(SHARD_CHARS[i % SHARD_CHARS.length]);
|
|
136
|
-
}
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
//# sourceMappingURL=runOpsResidency.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runOpsResidency.test.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/runOpsResidency.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
import { mintWaitpointIdFor, mintWaitpointIdForShard } from "./waitpointMint.js";
|
|
3
|
-
import { generateRunOpsId, generateRunOpsIdV2, isValidShardChar, parseRunOpsIdBody, parseRunOpsIdV2Body, } from "./friendlyId.js";
|
|
4
|
-
import { resolveShard } from "./runOpsResidency.js";
|
|
5
|
-
const GEN2_RUN = `run_${"a".repeat(24)}a2`; // shard "a", version "2"
|
|
6
|
-
const GEN1_RUN = `run_${"a".repeat(24)}01`; // region "0", version "1"
|
|
7
|
-
const CUID_RUN = `run_${"b".repeat(25)}`;
|
|
8
|
-
describe("mintWaitpointIdForShard", () => {
|
|
9
|
-
it("a gen-2 shard key mints a gen-2 body with that char at index 24", () => {
|
|
10
|
-
const r = mintWaitpointIdForShard("a");
|
|
11
|
-
expect(r.id.length).toBe(26);
|
|
12
|
-
expect(r.id[24]).toBe("a");
|
|
13
|
-
expect(r.id[25]).toBe("2");
|
|
14
|
-
expect(r.friendlyId).toBe(`waitpoint_${r.id}`);
|
|
15
|
-
expect(parseRunOpsIdV2Body(r.id)?.shard).toBe("a");
|
|
16
|
-
});
|
|
17
|
-
it("the reserved key 'new' mints a cuid, unchanged from today", () => {
|
|
18
|
-
const r = mintWaitpointIdForShard("new");
|
|
19
|
-
expect(r.id.length).toBe(25);
|
|
20
|
-
expect(resolveShard(r.id)).toBe("legacy");
|
|
21
|
-
});
|
|
22
|
-
it("the reserved key 'legacy' mints a cuid", () => {
|
|
23
|
-
expect(mintWaitpointIdForShard("legacy").id.length).toBe(25);
|
|
24
|
-
});
|
|
25
|
-
it("two calls for one shard never collide", () => {
|
|
26
|
-
expect(mintWaitpointIdForShard("a").id).not.toBe(mintWaitpointIdForShard("a").id);
|
|
27
|
-
});
|
|
28
|
-
it("every gen-2 id it mints routes back to its own shard", () => {
|
|
29
|
-
for (const key of ["a", "b", "0", "z", "9"]) {
|
|
30
|
-
expect(isValidShardChar(key)).toBe(true);
|
|
31
|
-
expect(resolveShard(mintWaitpointIdForShard(key).id)).toBe(key);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
describe("mintWaitpointIdFor", () => {
|
|
36
|
-
it("a gen-2 anchor stamps the anchor's shard char", () => {
|
|
37
|
-
const r = mintWaitpointIdFor(GEN2_RUN);
|
|
38
|
-
expect(r.id[24]).toBe("a");
|
|
39
|
-
expect(r.id[25]).toBe("2");
|
|
40
|
-
});
|
|
41
|
-
it("a gen-2 anchor yields a FRESH core, never the anchor's own body", () => {
|
|
42
|
-
const r = mintWaitpointIdFor(GEN2_RUN);
|
|
43
|
-
expect(r.id).not.toBe(GEN2_RUN.slice(4));
|
|
44
|
-
expect(r.id.slice(0, 24)).not.toBe("a".repeat(24));
|
|
45
|
-
});
|
|
46
|
-
it("accepts the bare internal form as well as the prefixed form", () => {
|
|
47
|
-
expect(mintWaitpointIdFor(GEN2_RUN.slice(4)).id[24]).toBe("a");
|
|
48
|
-
});
|
|
49
|
-
it("a gen-1 v1 anchor mints a cuid", () => {
|
|
50
|
-
expect(mintWaitpointIdFor(GEN1_RUN).id.length).toBe(25);
|
|
51
|
-
});
|
|
52
|
-
it("a cuid anchor mints a cuid", () => {
|
|
53
|
-
expect(mintWaitpointIdFor(CUID_RUN).id.length).toBe(25);
|
|
54
|
-
});
|
|
55
|
-
it("no anchor mints a cuid", () => {
|
|
56
|
-
expect(mintWaitpointIdFor(undefined).id.length).toBe(25);
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
describe("resolveShard shape checks match the decoding parsers", () => {
|
|
60
|
-
// Pins the shape/decode equivalence: a drift misroutes rather than erroring.
|
|
61
|
-
const classifyByDecode = (body) => {
|
|
62
|
-
const genTwo = parseRunOpsIdV2Body(body);
|
|
63
|
-
if (genTwo)
|
|
64
|
-
return genTwo.shard;
|
|
65
|
-
return parseRunOpsIdBody(body) !== undefined ? "new" : "legacy";
|
|
66
|
-
};
|
|
67
|
-
it("agrees on freshly minted gen-1 and gen-2 bodies", () => {
|
|
68
|
-
for (let i = 0; i < 500; i++) {
|
|
69
|
-
const one = generateRunOpsId();
|
|
70
|
-
const two = generateRunOpsIdV2("abcdefghijklmnopqrstuvwxyz0123456789"[i % 36]);
|
|
71
|
-
expect(resolveShard(one)).toBe(classifyByDecode(one));
|
|
72
|
-
expect(resolveShard(two)).toBe(classifyByDecode(two));
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
it("agrees on 26-char strings carrying out-of-alphabet characters", () => {
|
|
76
|
-
const alpha = "0123456789abcdefghijklmnopqrstuvwxyz-_.ZW!";
|
|
77
|
-
for (let i = 0; i < 2000; i++) {
|
|
78
|
-
let s = "";
|
|
79
|
-
for (let j = 0; j < 26; j++)
|
|
80
|
-
s += alpha[(i * 7 + j * 13) % alpha.length];
|
|
81
|
-
for (const body of [s, s.slice(0, 25) + "1", s.slice(0, 25) + "2"]) {
|
|
82
|
-
expect({ body, shape: resolveShard(body) }).toEqual({
|
|
83
|
-
body,
|
|
84
|
-
shape: classifyByDecode(body),
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
});
|
|
89
|
-
it("agrees on the shapes the plan pins as legacy", () => {
|
|
90
|
-
for (const body of ["", "a", "a".repeat(25), "a".repeat(27), `${"a".repeat(24)}e2`]) {
|
|
91
|
-
expect(resolveShard(body)).toBe(classifyByDecode(body));
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
//# sourceMappingURL=waitpointMint.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"waitpointMint.test.js","sourceRoot":"","sources":["../../../../src/v3/isomorphic/waitpointMint.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { nodeOptionsWithMaxOldSpaceSize } from "./index.js";
|
|
3
|
-
describe("nodeOptionsWithMaxOldSpaceSize", () => {
|
|
4
|
-
const testMachine = {
|
|
5
|
-
name: "small-2x",
|
|
6
|
-
memory: 1, // 1GB = 1024 MiB
|
|
7
|
-
cpu: 1,
|
|
8
|
-
centsPerMs: 0,
|
|
9
|
-
};
|
|
10
|
-
// With default 0.2 overhead, max-old-space-size should be 819 (1024 * 0.8)
|
|
11
|
-
const expectedFlag = "--max-old-space-size=819";
|
|
12
|
-
it("handles undefined NODE_OPTIONS", () => {
|
|
13
|
-
const result = nodeOptionsWithMaxOldSpaceSize(undefined, testMachine);
|
|
14
|
-
expect(result).toBe(expectedFlag);
|
|
15
|
-
});
|
|
16
|
-
it("handles empty string NODE_OPTIONS", () => {
|
|
17
|
-
const result = nodeOptionsWithMaxOldSpaceSize("", testMachine);
|
|
18
|
-
expect(result).toBe(expectedFlag);
|
|
19
|
-
});
|
|
20
|
-
it("preserves existing flags while adding max-old-space-size", () => {
|
|
21
|
-
const result = nodeOptionsWithMaxOldSpaceSize("--inspect --trace-warnings", testMachine);
|
|
22
|
-
expect(result).toBe(`--inspect --trace-warnings ${expectedFlag}`);
|
|
23
|
-
});
|
|
24
|
-
it("replaces existing max-old-space-size flag", () => {
|
|
25
|
-
const result = nodeOptionsWithMaxOldSpaceSize("--max-old-space-size=4096 --inspect", testMachine);
|
|
26
|
-
expect(result).toBe(`--inspect ${expectedFlag}`);
|
|
27
|
-
});
|
|
28
|
-
it("handles multiple existing max-old-space-size flags", () => {
|
|
29
|
-
const result = nodeOptionsWithMaxOldSpaceSize("--max-old-space-size=4096 --inspect --max-old-space-size=8192", testMachine);
|
|
30
|
-
expect(result).toBe(`--inspect ${expectedFlag}`);
|
|
31
|
-
});
|
|
32
|
-
it("handles extra spaces between flags", () => {
|
|
33
|
-
const result = nodeOptionsWithMaxOldSpaceSize("--inspect --trace-warnings", testMachine);
|
|
34
|
-
expect(result).toBe(`--inspect --trace-warnings ${expectedFlag}`);
|
|
35
|
-
});
|
|
36
|
-
it("uses custom overhead value", () => {
|
|
37
|
-
const result = nodeOptionsWithMaxOldSpaceSize("--inspect", testMachine, 0.5);
|
|
38
|
-
// With 0.5 overhead, max-old-space-size should be 512 (1024 * 0.5)
|
|
39
|
-
expect(result).toBe("--inspect --max-old-space-size=512");
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
//# sourceMappingURL=max-old-space.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"max-old-space.test.js","sourceRoot":"","sources":["../../../../src/v3/machines/max-old-space.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAC;AAG5D,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,MAAM,WAAW,GAAkB;QACjC,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,CAAC,EAAE,iBAAiB;QAC5B,GAAG,EAAE,CAAC;QACN,UAAU,EAAE,CAAC;KACd,CAAC;IAEF,2EAA2E;IAC3E,MAAM,YAAY,GAAG,0BAA0B,CAAC;IAEhD,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,8BAA8B,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,8BAA8B,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,MAAM,GAAG,8BAA8B,CAAC,4BAA4B,EAAE,WAAW,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,MAAM,GAAG,8BAA8B,CAC3C,qCAAqC,EACrC,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,MAAM,GAAG,8BAA8B,CAC3C,+DAA+D,EAC/D,WAAW,CACZ,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,MAAM,GAAG,8BAA8B,CAAC,+BAA+B,EAAE,WAAW,CAAC,CAAC;QAC5F,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,8BAA8B,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7E,mEAAmE;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import { OtelCollectorContainer, } from "@internal/testcontainers";
|
|
2
|
-
import { metrics } from "@opentelemetry/api";
|
|
3
|
-
import { ExportResultCode } from "@opentelemetry/core";
|
|
4
|
-
import { MetricReader, } from "@opentelemetry/sdk-metrics";
|
|
5
|
-
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
|
6
|
-
import { TracingSDK } from "./tracingSDK.js";
|
|
7
|
-
class NoopMetricExporter {
|
|
8
|
-
forceFlushCount = 0;
|
|
9
|
-
export(_metrics, resultCallback) {
|
|
10
|
-
resultCallback({ code: ExportResultCode.SUCCESS });
|
|
11
|
-
}
|
|
12
|
-
async forceFlush() {
|
|
13
|
-
this.forceFlushCount++;
|
|
14
|
-
}
|
|
15
|
-
async shutdown() { }
|
|
16
|
-
}
|
|
17
|
-
describe("TracingSDK with an external metric exporter", () => {
|
|
18
|
-
let collector;
|
|
19
|
-
let tracingSDK;
|
|
20
|
-
beforeAll(async () => {
|
|
21
|
-
collector = await new OtelCollectorContainer().start();
|
|
22
|
-
process.env.TRIGGER_OTEL_METRICS_COLLECTION_INTERVAL_MILLIS = "600000";
|
|
23
|
-
tracingSDK = new TracingSDK({
|
|
24
|
-
url: collector.getOtlpHttpUrl(),
|
|
25
|
-
forceFlushTimeoutMillis: 30_000,
|
|
26
|
-
diagLogLevel: "none",
|
|
27
|
-
metricExporters: [new NoopMetricExporter()],
|
|
28
|
-
hostMetrics: true,
|
|
29
|
-
hostMetricGroups: ["process.cpu", "process.memory"],
|
|
30
|
-
nodejsRuntimeMetrics: true,
|
|
31
|
-
});
|
|
32
|
-
}, 180_000);
|
|
33
|
-
afterAll(async () => {
|
|
34
|
-
await tracingSDK?.shutdown();
|
|
35
|
-
await collector?.stop();
|
|
36
|
-
delete process.env.TRIGGER_OTEL_METRICS_COLLECTION_INTERVAL_MILLIS;
|
|
37
|
-
});
|
|
38
|
-
it("flushes without the collector rejecting a batch containing a NaN reading", async () => {
|
|
39
|
-
const gauge = metrics.getMeter("test").createObservableGauge("test.utilization");
|
|
40
|
-
gauge.addCallback((result) => result.observe(NaN));
|
|
41
|
-
await expect(tracingSDK.flush()).resolves.toBeUndefined();
|
|
42
|
-
});
|
|
43
|
-
it("collects from each metric reader one at a time", async () => {
|
|
44
|
-
let inFlight = 0;
|
|
45
|
-
let maxInFlight = 0;
|
|
46
|
-
const gauge = metrics.getMeter("test").createObservableGauge("test.concurrency");
|
|
47
|
-
gauge.addCallback(async (result) => {
|
|
48
|
-
inFlight++;
|
|
49
|
-
maxInFlight = Math.max(maxInFlight, inFlight);
|
|
50
|
-
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
51
|
-
result.observe(1);
|
|
52
|
-
inFlight--;
|
|
53
|
-
});
|
|
54
|
-
await tracingSDK.flush();
|
|
55
|
-
expect(maxInFlight).toBe(1);
|
|
56
|
-
});
|
|
57
|
-
});
|
|
58
|
-
class FailingMetricReader extends MetricReader {
|
|
59
|
-
async onForceFlush() {
|
|
60
|
-
throw new Error("reader flush failed");
|
|
61
|
-
}
|
|
62
|
-
async onShutdown() { }
|
|
63
|
-
}
|
|
64
|
-
class FailingShutdownMetricReader extends MetricReader {
|
|
65
|
-
shutdownAttempts = 0;
|
|
66
|
-
async onForceFlush() { }
|
|
67
|
-
async onShutdown() {
|
|
68
|
-
this.shutdownAttempts++;
|
|
69
|
-
throw new Error(`reader shutdown failed (attempt ${this.shutdownAttempts})`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
class RecordingMetricReader extends MetricReader {
|
|
73
|
-
forceFlushCount = 0;
|
|
74
|
-
shutdownCount = 0;
|
|
75
|
-
async onForceFlush() {
|
|
76
|
-
this.forceFlushCount++;
|
|
77
|
-
}
|
|
78
|
-
async onShutdown() {
|
|
79
|
-
this.shutdownCount++;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
function captureConsoleErrors() {
|
|
83
|
-
const lines = [];
|
|
84
|
-
const original = console.error;
|
|
85
|
-
console.error = (...args) => {
|
|
86
|
-
lines.push(args.map(String).join(" "));
|
|
87
|
-
};
|
|
88
|
-
return { lines, restore: () => (console.error = original) };
|
|
89
|
-
}
|
|
90
|
-
describe("TracingSDK when one metric reader fails to flush", () => {
|
|
91
|
-
let recordingReader;
|
|
92
|
-
let tracingSDK;
|
|
93
|
-
beforeAll(() => {
|
|
94
|
-
recordingReader = new RecordingMetricReader();
|
|
95
|
-
tracingSDK = new TracingSDK({
|
|
96
|
-
url: "http://localhost:1",
|
|
97
|
-
forceFlushTimeoutMillis: 5_000,
|
|
98
|
-
diagLogLevel: "none",
|
|
99
|
-
metricReaders: [new FailingMetricReader(), recordingReader],
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
it("still flushes the readers after it", async () => {
|
|
103
|
-
await tracingSDK.flush().catch(() => { });
|
|
104
|
-
expect(recordingReader.forceFlushCount).toBeGreaterThan(0);
|
|
105
|
-
});
|
|
106
|
-
it("still reports the failure to the caller", async () => {
|
|
107
|
-
await expect(tracingSDK.flush()).rejects.toThrow("reader flush failed");
|
|
108
|
-
});
|
|
109
|
-
it("logs the failure as it happens", async () => {
|
|
110
|
-
const console = captureConsoleErrors();
|
|
111
|
-
await tracingSDK.flush().catch(() => { });
|
|
112
|
-
console.restore();
|
|
113
|
-
expect(console.lines.join("\n")).toContain("reader flush failed");
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
class OverlapRecordingMetricReader extends MetricReader {
|
|
117
|
-
static inFlight = 0;
|
|
118
|
-
static maxInFlight = 0;
|
|
119
|
-
async onForceFlush() { }
|
|
120
|
-
async onShutdown() {
|
|
121
|
-
OverlapRecordingMetricReader.inFlight++;
|
|
122
|
-
OverlapRecordingMetricReader.maxInFlight = Math.max(OverlapRecordingMetricReader.maxInFlight, OverlapRecordingMetricReader.inFlight);
|
|
123
|
-
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
124
|
-
OverlapRecordingMetricReader.inFlight--;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
describe("TracingSDK shutdown", () => {
|
|
128
|
-
it("shuts down each metric reader one at a time", async () => {
|
|
129
|
-
OverlapRecordingMetricReader.inFlight = 0;
|
|
130
|
-
OverlapRecordingMetricReader.maxInFlight = 0;
|
|
131
|
-
const tracingSDK = new TracingSDK({
|
|
132
|
-
url: "http://localhost:1",
|
|
133
|
-
forceFlushTimeoutMillis: 5_000,
|
|
134
|
-
diagLogLevel: "none",
|
|
135
|
-
metricReaders: [new OverlapRecordingMetricReader(), new OverlapRecordingMetricReader()],
|
|
136
|
-
});
|
|
137
|
-
await tracingSDK.shutdown().catch(() => { });
|
|
138
|
-
expect(OverlapRecordingMetricReader.maxInFlight).toBe(1);
|
|
139
|
-
});
|
|
140
|
-
it("still shuts down the readers after one that fails", async () => {
|
|
141
|
-
const recordingReader = new RecordingMetricReader();
|
|
142
|
-
const tracingSDK = new TracingSDK({
|
|
143
|
-
url: "http://localhost:1",
|
|
144
|
-
forceFlushTimeoutMillis: 5_000,
|
|
145
|
-
diagLogLevel: "none",
|
|
146
|
-
metricReaders: [new FailingShutdownMetricReader(), recordingReader],
|
|
147
|
-
});
|
|
148
|
-
await tracingSDK.shutdown().catch(() => { });
|
|
149
|
-
expect(recordingReader.shutdownCount).toBeGreaterThan(0);
|
|
150
|
-
});
|
|
151
|
-
it("does not retry a metric reader that failed to shut down", async () => {
|
|
152
|
-
const failingReader = new FailingShutdownMetricReader();
|
|
153
|
-
const tracingSDK = new TracingSDK({
|
|
154
|
-
url: "http://localhost:1",
|
|
155
|
-
forceFlushTimeoutMillis: 5_000,
|
|
156
|
-
diagLogLevel: "none",
|
|
157
|
-
metricReaders: [failingReader],
|
|
158
|
-
});
|
|
159
|
-
await tracingSDK.shutdown().catch(() => { });
|
|
160
|
-
expect(failingReader.shutdownAttempts).toBe(1);
|
|
161
|
-
});
|
|
162
|
-
it("reports the original shutdown failure, not a later one", async () => {
|
|
163
|
-
const tracingSDK = new TracingSDK({
|
|
164
|
-
url: "http://localhost:1",
|
|
165
|
-
forceFlushTimeoutMillis: 5_000,
|
|
166
|
-
diagLogLevel: "none",
|
|
167
|
-
metricReaders: [new FailingShutdownMetricReader()],
|
|
168
|
-
});
|
|
169
|
-
await expect(tracingSDK.shutdown()).rejects.toThrow("attempt 1");
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
//# sourceMappingURL=tracingSDK.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracingSDK.test.js","sourceRoot":"","sources":["../../../../src/v3/otel/tracingSDK.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { metrics } from "@opentelemetry/api";
|
|
2
|
-
import { describe, expect, it } from "vitest";
|
|
3
|
-
import { TracingSDK } from "./tracingSDK.js";
|
|
4
|
-
describe("TracingSDK shutdown", () => {
|
|
5
|
-
it("leaves the meter provider shut down", async () => {
|
|
6
|
-
const tracingSDK = new TracingSDK({
|
|
7
|
-
url: "http://localhost:1",
|
|
8
|
-
forceFlushTimeoutMillis: 5_000,
|
|
9
|
-
diagLogLevel: "none",
|
|
10
|
-
});
|
|
11
|
-
const meterBeforeShutdown = metrics.getMeter("test");
|
|
12
|
-
await tracingSDK.shutdown().catch(() => { });
|
|
13
|
-
expect(metrics.getMeter("test")).not.toBe(meterBeforeShutdown);
|
|
14
|
-
});
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=tracingSDKShutdown.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tracingSDKShutdown.test.js","sourceRoot":"","sources":["../../../../src/v3/otel/tracingSDKShutdown.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC;YAChC,GAAG,EAAE,oBAAoB;YACzB,uBAAuB,EAAE,KAAK;YAC9B,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE5C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it, vi } from "vitest";
|
|
2
|
-
import { StandardRealtimeStreamsManager } from "./manager.js";
|
|
3
|
-
function getCached(manager, runId, key) {
|
|
4
|
-
return manager.getCachedCreateStream(runId, key);
|
|
5
|
-
}
|
|
6
|
-
function makeApiClient(impl) {
|
|
7
|
-
const spy = vi.fn(impl);
|
|
8
|
-
const client = { createStream: spy };
|
|
9
|
-
return { client, spy };
|
|
10
|
-
}
|
|
11
|
-
describe("StandardRealtimeStreamsManager createStream cache", () => {
|
|
12
|
-
it("dedupes repeated calls for the same (runId, key)", async () => {
|
|
13
|
-
const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
|
|
14
|
-
const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
|
|
15
|
-
const p1 = getCached(manager, "run-1", "chat");
|
|
16
|
-
const p2 = getCached(manager, "run-1", "chat");
|
|
17
|
-
expect(p1).toBe(p2);
|
|
18
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
19
|
-
await Promise.all([p1, p2]);
|
|
20
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
21
|
-
});
|
|
22
|
-
it("issues a separate PUT for each distinct stream key on the same run", async () => {
|
|
23
|
-
const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
|
|
24
|
-
const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
|
|
25
|
-
await Promise.all([
|
|
26
|
-
getCached(manager, "run-1", "chat"),
|
|
27
|
-
getCached(manager, "run-1", "tool-output"),
|
|
28
|
-
]);
|
|
29
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
30
|
-
expect(spy).toHaveBeenNthCalledWith(1, "run-1", "self", "chat", undefined);
|
|
31
|
-
expect(spy).toHaveBeenNthCalledWith(2, "run-1", "self", "tool-output", undefined);
|
|
32
|
-
});
|
|
33
|
-
it("issues a separate PUT for each distinct run, even with the same key", async () => {
|
|
34
|
-
const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
|
|
35
|
-
const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
|
|
36
|
-
await Promise.all([getCached(manager, "run-1", "chat"), getCached(manager, "run-2", "chat")]);
|
|
37
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
38
|
-
});
|
|
39
|
-
it("evicts on failure so the next call retries instead of returning a poisoned entry", async () => {
|
|
40
|
-
const spy = vi
|
|
41
|
-
.fn()
|
|
42
|
-
.mockRejectedValueOnce(new Error("boom"))
|
|
43
|
-
.mockResolvedValueOnce({ version: "v1", headers: {} });
|
|
44
|
-
const client = { createStream: spy };
|
|
45
|
-
const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
|
|
46
|
-
await expect(getCached(manager, "run-1", "chat")).rejects.toThrow("boom");
|
|
47
|
-
const retried = await getCached(manager, "run-1", "chat");
|
|
48
|
-
expect(retried).toEqual({ version: "v1", headers: {} });
|
|
49
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
50
|
-
});
|
|
51
|
-
it("reset() clears cached entries so the next call re-PUTs", async () => {
|
|
52
|
-
const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
|
|
53
|
-
const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
|
|
54
|
-
await getCached(manager, "run-1", "chat");
|
|
55
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
56
|
-
manager.reset();
|
|
57
|
-
await getCached(manager, "run-1", "chat");
|
|
58
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
59
|
-
});
|
|
60
|
-
it("evictCreateStreamIfStale clears the matching entry so the next call re-PUTs", async () => {
|
|
61
|
-
const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
|
|
62
|
-
const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
|
|
63
|
-
// Prime the cache and capture which promise was stored.
|
|
64
|
-
const cachedPromise = getCached(manager, "run-1", "chat");
|
|
65
|
-
await cachedPromise;
|
|
66
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
67
|
-
// Simulate the reactive invalidation path that `pipe()` runs when a
|
|
68
|
-
// writer's `wait()` rejects.
|
|
69
|
-
manager.evictCreateStreamIfStale("run-1", "chat", cachedPromise);
|
|
70
|
-
await getCached(manager, "run-1", "chat");
|
|
71
|
-
expect(spy).toHaveBeenCalledTimes(2);
|
|
72
|
-
});
|
|
73
|
-
it("evictCreateStreamIfStale is a no-op when the cache holds a different promise", async () => {
|
|
74
|
-
const { client, spy } = makeApiClient(async () => ({ version: "v1", headers: {} }));
|
|
75
|
-
const manager = new StandardRealtimeStreamsManager(client, "http://localhost");
|
|
76
|
-
const original = getCached(manager, "run-1", "chat");
|
|
77
|
-
await original;
|
|
78
|
-
// A different promise (e.g. from a concurrent caller that already
|
|
79
|
-
// refreshed) shouldn't trigger eviction.
|
|
80
|
-
const stalePromise = Promise.resolve({ version: "v1", headers: {} });
|
|
81
|
-
manager.evictCreateStreamIfStale("run-1", "chat", stalePromise);
|
|
82
|
-
// Cache should still hold the original entry; next call is a hit.
|
|
83
|
-
await getCached(manager, "run-1", "chat");
|
|
84
|
-
expect(spy).toHaveBeenCalledTimes(1);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
87
|
-
//# sourceMappingURL=manager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../../src/v3/realtimeStreams/manager.test.ts"],"names":[],"mappings":"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"}
|