From 822d5ad7cc3b533950258194790f1ab7984d0d52 Mon Sep 17 00:00:00 2001 From: haddasbronfman Date: Wed, 1 Mar 2023 11:28:34 +0200 Subject: [PATCH 1/4] feat(idGenerator): override IdGenerator when using NodeSDK --- .../opentelemetry-sdk-node/src/sdk.ts | 3 ++ .../opentelemetry-sdk-node/src/types.ts | 2 ++ .../opentelemetry-sdk-node/test/sdk.test.ts | 32 +++++++++++++++++++ 3 files changed, 37 insertions(+) diff --git a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts index faae12dc7d5..8b0e539eeba 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/sdk.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/sdk.ts @@ -117,6 +117,9 @@ export class NodeSDK { if (configuration.spanLimits) { tracerProviderConfig.spanLimits = configuration.spanLimits; } + if (configuration.idGenerator) { + tracerProviderConfig.idGenerator = configuration.idGenerator; + } const spanProcessor = configuration.spanProcessor ?? diff --git a/experimental/packages/opentelemetry-sdk-node/src/types.ts b/experimental/packages/opentelemetry-sdk-node/src/types.ts index 49dfae8f7c9..86e25e2bda9 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/types.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/types.ts @@ -24,6 +24,7 @@ import { SpanExporter, SpanLimits, SpanProcessor, + IdGenerator } from '@opentelemetry/sdk-trace-base'; export interface NodeSDKConfiguration { @@ -41,4 +42,5 @@ export interface NodeSDKConfiguration { spanProcessor: SpanProcessor; traceExporter: SpanExporter; spanLimits: SpanLimits; + idGenerator: IdGenerator } diff --git a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts index fb439017105..85570f29e9b 100644 --- a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts +++ b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts @@ -23,6 +23,7 @@ import { DiagLogLevel, metrics, DiagConsoleLogger, + SpanKind, } from '@opentelemetry/api'; import { AsyncHooksContextManager, @@ -45,6 +46,7 @@ import { SimpleSpanProcessor, BatchSpanProcessor, NoopSpanProcessor, + IdGenerator, } from '@opentelemetry/sdk-trace-base'; import * as assert from 'assert'; import * as semver from 'semver'; @@ -691,6 +693,36 @@ describe('Node SDK', () => { }); }); }); + + describe('configure IdGenerator', async () => { + + class CustomIdGenerator implements IdGenerator { + generateTraceId(): string { + return 'constant-test-trace-id'; + } + generateSpanId(): string { + return 'constant-test-span-id'; + } + } + + it('should configure IdGenerator via config', async () => { + const idGenerator = new CustomIdGenerator(); + const spanProcessor = new SimpleSpanProcessor(new ConsoleSpanExporter()); + const sdk = new NodeSDK({ + idGenerator, + spanProcessor + }); + sdk.start(); + + const span = trace.getTracer('test').startSpan('testName', { + kind: SpanKind.INTERNAL, + }); + span.end(); + + assert.strictEqual(span.spanContext().spanId, 'constant-test-span-id') + assert.strictEqual(span.spanContext().traceId, 'constant-test-trace-id') + }); + }); }); describe('setup exporter from env', () => { From 988635915cacf7ddc8cbb018eb2d40532cf68bcc Mon Sep 17 00:00:00 2001 From: haddasbronfman Date: Wed, 1 Mar 2023 11:33:51 +0200 Subject: [PATCH 2/4] feat(idGenerator): lint --- experimental/packages/opentelemetry-sdk-node/src/types.ts | 4 ++-- .../packages/opentelemetry-sdk-node/test/sdk.test.ts | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/experimental/packages/opentelemetry-sdk-node/src/types.ts b/experimental/packages/opentelemetry-sdk-node/src/types.ts index 86e25e2bda9..38178e58c56 100644 --- a/experimental/packages/opentelemetry-sdk-node/src/types.ts +++ b/experimental/packages/opentelemetry-sdk-node/src/types.ts @@ -24,7 +24,7 @@ import { SpanExporter, SpanLimits, SpanProcessor, - IdGenerator + IdGenerator, } from '@opentelemetry/sdk-trace-base'; export interface NodeSDKConfiguration { @@ -42,5 +42,5 @@ export interface NodeSDKConfiguration { spanProcessor: SpanProcessor; traceExporter: SpanExporter; spanLimits: SpanLimits; - idGenerator: IdGenerator + idGenerator: IdGenerator; } diff --git a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts index 85570f29e9b..4e0d66ff0fb 100644 --- a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts +++ b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts @@ -695,7 +695,6 @@ describe('Node SDK', () => { }); describe('configure IdGenerator', async () => { - class CustomIdGenerator implements IdGenerator { generateTraceId(): string { return 'constant-test-trace-id'; @@ -710,7 +709,7 @@ describe('Node SDK', () => { const spanProcessor = new SimpleSpanProcessor(new ConsoleSpanExporter()); const sdk = new NodeSDK({ idGenerator, - spanProcessor + spanProcessor, }); sdk.start(); @@ -719,8 +718,8 @@ describe('Node SDK', () => { }); span.end(); - assert.strictEqual(span.spanContext().spanId, 'constant-test-span-id') - assert.strictEqual(span.spanContext().traceId, 'constant-test-trace-id') + assert.strictEqual(span.spanContext().spanId, 'constant-test-span-id'); + assert.strictEqual(span.spanContext().traceId, 'constant-test-trace-id'); }); }); }); From a69e53dfbd9bf7bf7315a69e7630d8dfd646b277 Mon Sep 17 00:00:00 2001 From: haddasbronfman Date: Thu, 2 Mar 2023 09:37:33 +0200 Subject: [PATCH 3/4] feat(idGenerator): add CHANGELOG --- experimental/CHANGELOG.md | 1 + experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index b85f4c1d5f5..5373a22789a 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to experimental packages in this project will be documented * feat: use HTTP_ROUTE in span name [#3603](https://github.com/open-telemetry/opentelemetry-js/pull/3603) @Flarna * feat: add HTTP_ROUTE attribute to http incoming metrics if present [#3581](https://github.com/open-telemetry/opentelemetry-js/pull/3581) @hermogenes * feat(sdk-node): install diag logger with OTEL_LOG_LEVEL [#3627](https://github.com/open-telemetry/opentelemetry-js/pull/3627) @legendecas +* feat(sdk-node): override IdGenerator when using NodeSDK [#3645](https://github.com/open-telemetry/opentelemetry-js/pull/3645) @haddasbronfman ### :bug: (Bug Fix) diff --git a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts index 4e0d66ff0fb..3fbade7eb96 100644 --- a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts +++ b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts @@ -713,9 +713,7 @@ describe('Node SDK', () => { }); sdk.start(); - const span = trace.getTracer('test').startSpan('testName', { - kind: SpanKind.INTERNAL, - }); + const span = trace.getTracer('test').startSpan('testName'); span.end(); assert.strictEqual(span.spanContext().spanId, 'constant-test-span-id'); From ef5c72ad0c7d92f5eb0e3a7115670624b3182dc3 Mon Sep 17 00:00:00 2001 From: haddasbronfman Date: Thu, 2 Mar 2023 09:45:47 +0200 Subject: [PATCH 4/4] feat(idGenerator): lint --- experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts index 3fbade7eb96..5fcdb7f94d5 100644 --- a/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts +++ b/experimental/packages/opentelemetry-sdk-node/test/sdk.test.ts @@ -23,7 +23,6 @@ import { DiagLogLevel, metrics, DiagConsoleLogger, - SpanKind, } from '@opentelemetry/api'; import { AsyncHooksContextManager,