From 43283abea57a57b50a1b72a5d6d686726eeb18a5 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 21 May 2021 14:44:09 -0400 Subject: [PATCH 01/26] feat: add startActiveSpan method to Tracer Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/src/Tracer.ts | 82 ++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index ff05bade16..0ccb5abc04 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -163,6 +163,88 @@ export class Tracer implements api.Tracer { return span; } + /** + * Starts a new {@link Span} and calls the given function passing it the + * created span as first argument. + * Additionally the new span gets set in context and this context is activated + * for the duration of the function call. + * + * @param name The name of the span + * @param [options] SpanOptions used for span creation + * @param [context] Context to use to extract parent + * @param fn function called in the context of the span and receives the newly created span as an argument + * @returns return value of fn + * @example + * const something = tracer.startActiveSpan('op', span => { + * try { + * do some work + * span.setStatus({code: SpanStatusCode.OK}); + * return something; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } finally { + * span.end(); + * } + * }); + * @example + * const span = tracer.startActiveSpan('op', span => { + * try { + * do some work + * return span; + * } catch (err) { + * span.setStatus({ + * code: SpanStatusCode.ERROR, + * message: err.message, + * }); + * throw err; + * } + * }); + * do some more work + * span.end(); + */ + startActiveSpan ReturnType>( + name: string, + arg2: F | api.SpanOptions, + arg3?: F | api.Context, + arg4?: F + ): ReturnType | undefined { + let fn: F | undefined, + options: api.SpanOptions | undefined, + activeContext: api.Context | undefined; + if (arguments.length === 2 && typeof arg2 === 'function') { + fn = arg2; + } else if ( + arguments.length === 3 && + typeof arg2 === 'object' && + typeof arg3 === 'function' + ) { + options = arg2; + fn = arg3; + } else if ( + arguments.length === 4 && + typeof arg2 === 'object' && + typeof arg3 === 'object' && + typeof arg4 === 'function' + ) { + options = arg2; + activeContext = arg3; + fn = arg4; + } + + const parentContext = activeContext ?? api.context.active(); + const span = this.startSpan(name, options, parentContext); + const contextWithSpanSet = api.setSpan(parentContext, span); + + if (fn) { + return api.context.with(contextWithSpanSet, fn, undefined, span); + } + return; + } + /** Returns the active {@link SpanLimits}. */ getSpanLimits(): SpanLimits { return this._spanLimits; From f5c5a884287e6955a02c488e87a258f5735eff20 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 21 May 2021 15:05:13 -0400 Subject: [PATCH 02/26] fix: add function overload signatures and remove unneeded typeof checks Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/src/Tracer.ts | 49 +++++++------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index 0ccb5abc04..d0420df95c 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -206,43 +206,26 @@ export class Tracer implements api.Tracer { * do some more work * span.end(); */ - startActiveSpan ReturnType>( + startActiveSpan ReturnType>( name: string, - arg2: F | api.SpanOptions, - arg3?: F | api.Context, - arg4?: F - ): ReturnType | undefined { - let fn: F | undefined, - options: api.SpanOptions | undefined, - activeContext: api.Context | undefined; - if (arguments.length === 2 && typeof arg2 === 'function') { - fn = arg2; - } else if ( - arguments.length === 3 && - typeof arg2 === 'object' && - typeof arg3 === 'function' - ) { - options = arg2; - fn = arg3; - } else if ( - arguments.length === 4 && - typeof arg2 === 'object' && - typeof arg3 === 'object' && - typeof arg4 === 'function' - ) { - options = arg2; - activeContext = arg3; - fn = arg4; - } - - const parentContext = activeContext ?? api.context.active(); + fn: F + ): ReturnType; + startActiveSpan ReturnType>( + name: string, + options: api.SpanOptions, + fn: F + ): ReturnType; + startActiveSpan ReturnType>( + name: string, + options: api.SpanOptions, + context: api.Context, + fn: F + ): ReturnType { + const parentContext = context ?? api.context.active(); const span = this.startSpan(name, options, parentContext); const contextWithSpanSet = api.setSpan(parentContext, span); - if (fn) { - return api.context.with(contextWithSpanSet, fn, undefined, span); - } - return; + return api.context.with(contextWithSpanSet, fn, undefined, span); } /** Returns the active {@link SpanLimits}. */ From fe3681e5dde96d36d32dc87e2b1f7ecd56bf260a Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 21 May 2021 15:33:52 -0400 Subject: [PATCH 03/26] chore: function overloads Signed-off-by: naseemkullah Co-authored-by: Daniel Dyla --- packages/opentelemetry-tracing/src/Tracer.ts | 25 +++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index d0420df95c..85380098a3 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -220,7 +220,30 @@ export class Tracer implements api.Tracer { options: api.SpanOptions, context: api.Context, fn: F - ): ReturnType { + ): ReturnType; + startActiveSpan ReturnType>( + name: string, + arg2?: F | api.SpanOptions, + arg3?: F | api.Context, + arg4?: F + ): ReturnType | undefined { + let options: api.SpanOptions | undefined; + let context: api.Context | undefined; + let fn: F; + + if (arguments.length < 2) { + return; + } else if (arguments.length === 2) { + fn = arg2 as F; + } else if (arguments.length === 3) { + options = arg2 as api.SpanOptions | undefined; + fn = arg3 as F; + } else { + options = arg2 as api.SpanOptions | undefined; + context = arg3 as api.Context | undefined; + fn = arg4 as F; + } + const parentContext = context ?? api.context.active(); const span = this.startSpan(name, options, parentContext); const contextWithSpanSet = api.setSpan(parentContext, span); From 3e69e73227395be7ee57607d84189d14bcee812d Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 21 May 2021 20:40:42 -0400 Subject: [PATCH 04/26] chore: change var names Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/src/Tracer.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index 85380098a3..73b07560a9 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -212,13 +212,13 @@ export class Tracer implements api.Tracer { ): ReturnType; startActiveSpan ReturnType>( name: string, - options: api.SpanOptions, + opts: api.SpanOptions, fn: F ): ReturnType; startActiveSpan ReturnType>( name: string, - options: api.SpanOptions, - context: api.Context, + opts: api.SpanOptions, + ctx: api.Context, fn: F ): ReturnType; startActiveSpan ReturnType>( @@ -227,8 +227,8 @@ export class Tracer implements api.Tracer { arg3?: F | api.Context, arg4?: F ): ReturnType | undefined { - let options: api.SpanOptions | undefined; - let context: api.Context | undefined; + let opts: api.SpanOptions | undefined; + let ctx: api.Context | undefined; let fn: F; if (arguments.length < 2) { @@ -236,16 +236,16 @@ export class Tracer implements api.Tracer { } else if (arguments.length === 2) { fn = arg2 as F; } else if (arguments.length === 3) { - options = arg2 as api.SpanOptions | undefined; + opts = arg2 as api.SpanOptions | undefined; fn = arg3 as F; } else { - options = arg2 as api.SpanOptions | undefined; - context = arg3 as api.Context | undefined; + opts = arg2 as api.SpanOptions | undefined; + ctx = arg3 as api.Context | undefined; fn = arg4 as F; } - const parentContext = context ?? api.context.active(); - const span = this.startSpan(name, options, parentContext); + const parentContext = ctx ?? api.context.active(); + const span = this.startSpan(name, opts, parentContext); const contextWithSpanSet = api.setSpan(parentContext, span); return api.context.with(contextWithSpanSet, fn, undefined, span); From 0a6307f5a3312e98ba6f48d94a761291389e03f9 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 21 May 2021 21:22:30 -0400 Subject: [PATCH 05/26] test: startActiveSpan in Tracer Signed-off-by: naseemkullah --- .../opentelemetry-tracing/test/Tracer.test.ts | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 08b2b66c79..cb842e0bfd 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -15,19 +15,21 @@ */ import { - INVALID_TRACEID, + context, + getSpan, INVALID_TRACEID, ROOT_CONTEXT, Sampler, SamplingDecision, - TraceFlags, - SpanContext, trace, + setSpanContext, + SpanContext, + TraceFlags } from '@opentelemetry/api'; import { AlwaysOffSampler, AlwaysOnSampler, InstrumentationLibrary, - suppressTracing, + suppressTracing } from '@opentelemetry/core'; import * as assert from 'assert'; import { BasicTracerProvider, Span, Tracer } from '../src'; @@ -220,4 +222,27 @@ describe('Tracer', () => { assert.strictEqual(context.traceFlags, TraceFlags.NONE); span.end(); }); + + it('should start an active span', () => { + const tracer = new Tracer( + { name: 'default', version: '0.0.1' }, + { sampler: new TestSampler() }, + tracerProvider + ); + tracer.startActiveSpan('my-span', span => { + assert.strictEqual(getSpan(context.active()), span); + span.end(); + }); + + tracer.startActiveSpan('my-span', {}, span => { + assert.strictEqual(getSpan(context.active()), span); + span.end(); + }); + + tracer.startActiveSpan('my-span', {}, ROOT_CONTEXT, span => { + assert.strictEqual(getSpan(context.active()), span); + span.end(); + }); + + }); }); From 6f9b8df3f8d3145c74391731ab2f810009ada13a Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 21 May 2021 21:31:39 -0400 Subject: [PATCH 06/26] fix: startactiveSpan test Signed-off-by: naseemkullah --- .../opentelemetry-tracing/test/Tracer.test.ts | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index cb842e0bfd..0721627727 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -229,20 +229,30 @@ describe('Tracer', () => { { sampler: new TestSampler() }, tracerProvider ); - tracer.startActiveSpan('my-span', span => { - assert.strictEqual(getSpan(context.active()), span); - span.end(); - }); - tracer.startActiveSpan('my-span', {}, span => { - assert.strictEqual(getSpan(context.active()), span); - span.end(); - }); + assert.strictEqual( tracer.startActiveSpan('my-span', span => { + try { + return 1 + } finally { + span.end(); + } + }), 1); - tracer.startActiveSpan('my-span', {}, ROOT_CONTEXT, span => { - assert.strictEqual(getSpan(context.active()), span); - span.end(); - }); + assert.strictEqual( tracer.startActiveSpan('my-span', {}, span => { + try { + return 1 + } finally { + span.end(); + } + }), 1); + + assert.strictEqual( tracer.startActiveSpan('my-span', {}, context.active(), span => { + try { + return 1 + } finally { + span.end(); + } + }), 1); }); }); From 9f1521e38eda9d636475c5023bab8d795d2db74f Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 21 May 2021 21:32:26 -0400 Subject: [PATCH 07/26] feat: add reset script Signed-off-by: naseemkullah --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 93c78d1c34..6c37d0b1c1 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "lint:examples": "eslint ./examples/**/*.js", "lint:examples:fix": "eslint ./examples/**/*.js --fix", "lint:markdown": "./node_modules/.bin/markdownlint $(git ls-files '*.md') -i ./CHANGELOG.md", - "lint:markdown:fix": "./node_modules/.bin/markdownlint $(git ls-files '*.md') -i ./CHANGELOG.md --fix" + "lint:markdown:fix": "./node_modules/.bin/markdownlint $(git ls-files '*.md') -i ./CHANGELOG.md --fix", + "reset": "lerna clean -y && rm -rf node_modules && git clean -fdx && npm i && npm run compile && npm run lint:fix" }, "repository": "open-telemetry/opentelemetry-js", "keywords": [ From b1816b960882793a4b2dcb52ed800f75f5dcf1df Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Sat, 22 May 2021 08:59:16 -0400 Subject: [PATCH 08/26] chore: organize imports Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 0721627727..4330a7109b 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -16,7 +16,7 @@ import { context, - getSpan, INVALID_TRACEID, + INVALID_TRACEID, ROOT_CONTEXT, Sampler, SamplingDecision, From 333932e056c74bf9cff5adfcab37287996361744 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 13:15:27 -0400 Subject: [PATCH 09/26] test: split combined test into 4 tests Signed-off-by: naseemkullah --- .../opentelemetry-tracing/test/Tracer.test.ts | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 4330a7109b..819a2aa224 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -223,36 +223,51 @@ describe('Tracer', () => { span.end(); }); - it('should start an active span', () => { + it('should start an active span with name and function as args', () => { const tracer = new Tracer( { name: 'default', version: '0.0.1' }, { sampler: new TestSampler() }, tracerProvider ); - assert.strictEqual( tracer.startActiveSpan('my-span', span => { + assert.strictEqual(tracer.startActiveSpan('my-span', span => { try { return 1 } finally { span.end(); } }), 1); + }); + + it('should start an active span with name, options and functin as args', () => { + const tracer = new Tracer( + { name: 'default', version: '0.0.1' }, + { sampler: new TestSampler() }, + tracerProvider + ); - assert.strictEqual( tracer.startActiveSpan('my-span', {}, span => { + assert.strictEqual(tracer.startActiveSpan('my-span', {}, span => { try { return 1 } finally { span.end(); } }), 1); + }); - assert.strictEqual( tracer.startActiveSpan('my-span', {}, context.active(), span => { + it('should start an active span with name, options, context and function as args', () => { + const tracer = new Tracer( + { name: 'default', version: '0.0.1' }, + { sampler: new TestSampler() }, + tracerProvider + ); + + assert.strictEqual(tracer.startActiveSpan('my-span', {}, context.active(), span => { try { return 1 } finally { span.end(); } }), 1); - }); }); From ee7a30574e972cdcc429850edbb413a067a02295 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 13:41:53 -0400 Subject: [PATCH 10/26] test: startActiveSpan ensure that ctx sent is used also add commented out span equality assertions to be uncommented before merging Signed-off-by: naseemkullah --- .../opentelemetry-tracing/test/Tracer.test.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 819a2aa224..582fd213aa 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -16,6 +16,8 @@ import { context, + createContextKey, + getSpan, INVALID_TRACEID, ROOT_CONTEXT, Sampler, @@ -223,7 +225,7 @@ describe('Tracer', () => { span.end(); }); - it('should start an active span with name and function as args', () => { + it('should start an active span with name and function args', () => { const tracer = new Tracer( { name: 'default', version: '0.0.1' }, { sampler: new TestSampler() }, @@ -232,6 +234,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', span => { try { + // assert.strictEqual(getSpan(context.active()), span) return 1 } finally { span.end(); @@ -239,7 +242,7 @@ describe('Tracer', () => { }), 1); }); - it('should start an active span with name, options and functin as args', () => { + it('should start an active span with name, options and function args', () => { const tracer = new Tracer( { name: 'default', version: '0.0.1' }, { sampler: new TestSampler() }, @@ -248,6 +251,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', {}, span => { try { + // assert.strictEqual(getSpan(context.active()), span) return 1 } finally { span.end(); @@ -255,15 +259,21 @@ describe('Tracer', () => { }), 1); }); - it('should start an active span with name, options, context and function as args', () => { + it('should start an active span with name, options, context and function args', () => { const tracer = new Tracer( { name: 'default', version: '0.0.1' }, { sampler: new TestSampler() }, tracerProvider ); - assert.strictEqual(tracer.startActiveSpan('my-span', {}, context.active(), span => { + const ctxKey = createContextKey('foo'); + + const ctx = context.active().setValue(ctxKey, 'bar') + + assert.strictEqual(tracer.startActiveSpan('my-span', {}, ctx, span => { try { + // assert.strictEqual(getSpan(context.active()), span) + assert.strictEqual(ctx.getValue(ctxKey), 'bar') return 1 } finally { span.end(); From 3ab1fe48f8663ac68d7f7068f094b55ac9fc2c00 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 13:45:54 -0400 Subject: [PATCH 11/26] chore: organize imports Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 582fd213aa..a0a373d342 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -17,7 +17,6 @@ import { context, createContextKey, - getSpan, INVALID_TRACEID, ROOT_CONTEXT, Sampler, From 02b5dfd35b3fc4eb85b29c3f953c51812a69672f Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 13:52:31 -0400 Subject: [PATCH 12/26] chore: clarify todo Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index a0a373d342..b7d56548d8 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -233,7 +233,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', span => { try { - // assert.strictEqual(getSpan(context.active()), span) + // todo: assert.strictEqual(getSpan(context.active()), span) return 1 } finally { span.end(); @@ -250,7 +250,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', {}, span => { try { - // assert.strictEqual(getSpan(context.active()), span) + // todo: assert.strictEqual(getSpan(context.active()), span) return 1 } finally { span.end(); @@ -271,7 +271,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', {}, ctx, span => { try { - // assert.strictEqual(getSpan(context.active()), span) + // todo: assert.strictEqual(getSpan(context.active()), span) assert.strictEqual(ctx.getValue(ctxKey), 'bar') return 1 } finally { From a1e5bdb9f1bf1bc5e2a36fd493455bad28965778 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 14:58:36 -0400 Subject: [PATCH 13/26] test: startActiveSpan in NodeTracer Signed-off-by: naseemkullah --- .../test/NodeTracerProvider.test.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/opentelemetry-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-node/test/NodeTracerProvider.test.ts index 4635fbf559..8be69fae96 100644 --- a/packages/opentelemetry-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-node/test/NodeTracerProvider.test.ts @@ -91,6 +91,30 @@ describe('NodeTracerProvider', () => { assert.ok(span); }); + it('should start an active span with name and function only', () => { + provider = new NodeTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + + it('should start an active span with name, options and function', () => { + provider = new NodeTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + + it('should start an active span with name, options, context and function', () => { + provider = new NodeTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, context.active(), span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + it('should return a default span with no sampling (AlwaysOffSampler)', () => { provider = new NodeTracerProvider({ sampler: new AlwaysOffSampler(), From 0a00ddf209eb8b273c39f7deb65b5062e999664a Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 15:01:00 -0400 Subject: [PATCH 14/26] chore: put active span tests in own describe block Signed-off-by: naseemkullah --- .../test/NodeTracerProvider.test.ts | 51 ++++++++++--------- 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/packages/opentelemetry-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-node/test/NodeTracerProvider.test.ts index 8be69fae96..d5c53b8e53 100644 --- a/packages/opentelemetry-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-node/test/NodeTracerProvider.test.ts @@ -91,30 +91,6 @@ describe('NodeTracerProvider', () => { assert.ok(span); }); - it('should start an active span with name and function only', () => { - provider = new NodeTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - - it('should start an active span with name, options and function', () => { - provider = new NodeTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - - it('should start an active span with name, options, context and function', () => { - provider = new NodeTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, context.active(), span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - it('should return a default span with no sampling (AlwaysOffSampler)', () => { provider = new NodeTracerProvider({ sampler: new AlwaysOffSampler(), @@ -175,6 +151,33 @@ describe('NodeTracerProvider', () => { }); }); + + describe('.startActiveSpan()', () => { + it('should start an active span with name and function only', () => { + provider = new NodeTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + + it('should start an active span with name, options and function', () => { + provider = new NodeTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + + it('should start an active span with name, options, context and function', () => { + provider = new NodeTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, context.active(), span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + }); + describe('.withSpan()', () => { it('should run context with AsyncHooksContextManager context manager', done => { provider = new NodeTracerProvider({}); From e6eb4f77364cb4384e8168ea88654b2811a86a50 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 15:03:18 -0400 Subject: [PATCH 15/26] test: startActiveSpan in WebTracer Signed-off-by: naseemkullah --- .../test/WebTracerProvider.test.ts | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/packages/opentelemetry-web/test/WebTracerProvider.test.ts b/packages/opentelemetry-web/test/WebTracerProvider.test.ts index 18462a14a6..fef9948874 100644 --- a/packages/opentelemetry-web/test/WebTracerProvider.test.ts +++ b/packages/opentelemetry-web/test/WebTracerProvider.test.ts @@ -137,5 +137,30 @@ describe('WebTracerProvider', () => { ); }); }); + describe('.startActiveSpan()', () => { + it('should start an active span with name and function only', () => { + const provider = new WebTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + + it('should start an active span with name, options and function', () => { + const provider = new WebTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + + it('should start an active span with name, options, context and function', () => { + const provider = new WebTracerProvider(); + provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, context.active(), span => { + assert.strictEqual(getSpan(context.active()), span) + span.end(); + }); + }); + }); }); }); From 41ff0b18a4e00d6488fee597bb9beae722cf14e0 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Mon, 24 May 2021 17:19:30 -0400 Subject: [PATCH 16/26] chore: remove Tracer specific tests from Node and Web Tracers Signed-off-by: naseemkullah --- .../test/NodeTracerProvider.test.ts | 27 ------------------- .../test/WebTracerProvider.test.ts | 25 ----------------- 2 files changed, 52 deletions(-) diff --git a/packages/opentelemetry-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-node/test/NodeTracerProvider.test.ts index d5c53b8e53..4635fbf559 100644 --- a/packages/opentelemetry-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-node/test/NodeTracerProvider.test.ts @@ -151,33 +151,6 @@ describe('NodeTracerProvider', () => { }); }); - - describe('.startActiveSpan()', () => { - it('should start an active span with name and function only', () => { - provider = new NodeTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - - it('should start an active span with name, options and function', () => { - provider = new NodeTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - - it('should start an active span with name, options, context and function', () => { - provider = new NodeTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, context.active(), span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - }); - describe('.withSpan()', () => { it('should run context with AsyncHooksContextManager context manager', done => { provider = new NodeTracerProvider({}); diff --git a/packages/opentelemetry-web/test/WebTracerProvider.test.ts b/packages/opentelemetry-web/test/WebTracerProvider.test.ts index fef9948874..18462a14a6 100644 --- a/packages/opentelemetry-web/test/WebTracerProvider.test.ts +++ b/packages/opentelemetry-web/test/WebTracerProvider.test.ts @@ -137,30 +137,5 @@ describe('WebTracerProvider', () => { ); }); }); - describe('.startActiveSpan()', () => { - it('should start an active span with name and function only', () => { - const provider = new WebTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - - it('should start an active span with name, options and function', () => { - const provider = new WebTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - - it('should start an active span with name, options, context and function', () => { - const provider = new WebTracerProvider(); - provider.getTracer('default').startActiveSpan('my-span', {attributes: {foo: 'bar'}}, context.active(), span => { - assert.strictEqual(getSpan(context.active()), span) - span.end(); - }); - }); - }); }); }); From 374c5ea28234629f428222c9718ab839a0398acb Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Tue, 25 May 2021 20:19:27 -0400 Subject: [PATCH 17/26] fix: conflicts Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/src/Tracer.ts | 40 ------------------- .../opentelemetry-tracing/test/Tracer.test.ts | 3 +- 2 files changed, 1 insertion(+), 42 deletions(-) diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index 73b07560a9..06eb72abbb 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -54,46 +54,6 @@ export class Tracer implements api.Tracer { this.instrumentationLibrary = instrumentationLibrary; } - startActiveSpan ReturnType>( - name: string, - arg2: F | api.SpanOptions, - arg3?: F | api.Context, - arg4?: F - ): ReturnType | undefined { - let fn: F | undefined, - options: api.SpanOptions | undefined, - activeContext: api.Context | undefined; - - if (arguments.length === 2 && typeof arg2 === 'function') { - fn = arg2; - } else if ( - arguments.length === 3 && - typeof arg2 === 'object' && - typeof arg3 === 'function' - ) { - options = arg2; - fn = arg3; - } else if ( - arguments.length === 4 && - typeof arg2 === 'object' && - typeof arg3 === 'object' && - typeof arg4 === 'function' - ) { - options = arg2; - activeContext = arg3; - fn = arg4; - } - - const parentContext = activeContext ?? api.context.active(); - const span = this.startSpan(name, options, parentContext); - const contextWithSpanSet = api.trace.setSpan(parentContext, span); - - if (fn) { - return api.context.with(contextWithSpanSet, fn, undefined, span); - } - return; - } - /** * Starts a new Span or returns the default NoopSpan based on the sampling * decision. diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index b7d56548d8..05f18a1e12 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -21,9 +21,8 @@ import { ROOT_CONTEXT, Sampler, SamplingDecision, - trace, - setSpanContext, SpanContext, + trace, TraceFlags } from '@opentelemetry/api'; import { From 63ec70110cad081db1d6f82a735a2b89e299d8a5 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Tue, 25 May 2021 20:20:24 -0400 Subject: [PATCH 18/26] chore: remove git clean form reset script Signed-off-by: naseemkullah --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6c37d0b1c1..16fc90ff80 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "lint:examples:fix": "eslint ./examples/**/*.js --fix", "lint:markdown": "./node_modules/.bin/markdownlint $(git ls-files '*.md') -i ./CHANGELOG.md", "lint:markdown:fix": "./node_modules/.bin/markdownlint $(git ls-files '*.md') -i ./CHANGELOG.md --fix", - "reset": "lerna clean -y && rm -rf node_modules && git clean -fdx && npm i && npm run compile && npm run lint:fix" + "reset": "lerna clean -y && rm -rf node_modules && npm i && npm run compile && npm run lint:fix" }, "repository": "open-telemetry/opentelemetry-js", "keywords": [ From 0afe1eeb560d0e5d4893c102a51f69dcaa9ac616 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Tue, 25 May 2021 20:30:44 -0400 Subject: [PATCH 19/26] fix: conflicts Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/src/Tracer.ts | 4 ++-- packages/opentelemetry-tracing/test/Tracer.test.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index 06eb72abbb..58d9f71417 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -89,7 +89,7 @@ export class Tracer implements api.Tracer { // make sampling decision const samplingResult = this._sampler.shouldSample( options.root - ? api.trace.setSpanContext(context, api.INVALID_SPAN_CONTEXT) + ? api.setSpanContext(context, api.INVALID_SPAN_CONTEXT) : context, traceId, name, @@ -233,5 +233,5 @@ function getParent( context: api.Context ): api.SpanContext | undefined { if (options.root) return undefined; - return api.trace.getSpanContext(context); + return api.getSpanContext(context); } diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 05f18a1e12..5968bf59a5 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - +import * as api from '@opentelemetry/api'; import { context, createContextKey, @@ -156,7 +156,7 @@ describe('Tracer', () => { const span = tracer.startSpan( 'aSpan', undefined, - trace.setSpanContext(ROOT_CONTEXT, parent) + api.setSpanContext(ROOT_CONTEXT, parent) ); assert.strictEqual((span as Span).parentSpanId, parent.spanId); assert.strictEqual(span.spanContext().traceId, parent.traceId); @@ -176,7 +176,7 @@ describe('Tracer', () => { const span = tracer.startSpan( 'aSpan', undefined, - trace.setSpanContext(ROOT_CONTEXT, parent) + api.setSpanContext(ROOT_CONTEXT, parent) ); assert.strictEqual((span as Span).parentSpanId, undefined); }); @@ -218,7 +218,7 @@ describe('Tracer', () => { tracerProvider ); const span = tracer.startSpan('my-span'); - const context = span.spanContext(); + const context = spanContext(); assert.strictEqual(context.traceFlags, TraceFlags.NONE); span.end(); }); From 5532776bde09e910bff74c3573c58fc453047322 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Tue, 25 May 2021 20:37:48 -0400 Subject: [PATCH 20/26] fix: use span.spanContext() Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 5968bf59a5..d76faf84e9 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -22,7 +22,6 @@ import { Sampler, SamplingDecision, SpanContext, - trace, TraceFlags } from '@opentelemetry/api'; import { @@ -218,7 +217,7 @@ describe('Tracer', () => { tracerProvider ); const span = tracer.startSpan('my-span'); - const context = spanContext(); + const context = span.spanContext(); assert.strictEqual(context.traceFlags, TraceFlags.NONE); span.end(); }); From 42196308ae986672cab4071e15640a594d3123a7 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Tue, 25 May 2021 20:49:13 -0400 Subject: [PATCH 21/26] fix: adhere to breaking changes in new api Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/src/Tracer.ts | 6 +++--- packages/opentelemetry-tracing/test/Tracer.test.ts | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/opentelemetry-tracing/src/Tracer.ts b/packages/opentelemetry-tracing/src/Tracer.ts index 58d9f71417..446e944189 100644 --- a/packages/opentelemetry-tracing/src/Tracer.ts +++ b/packages/opentelemetry-tracing/src/Tracer.ts @@ -89,7 +89,7 @@ export class Tracer implements api.Tracer { // make sampling decision const samplingResult = this._sampler.shouldSample( options.root - ? api.setSpanContext(context, api.INVALID_SPAN_CONTEXT) + ? api.trace.setSpanContext(context, api.INVALID_SPAN_CONTEXT) : context, traceId, name, @@ -206,7 +206,7 @@ export class Tracer implements api.Tracer { const parentContext = ctx ?? api.context.active(); const span = this.startSpan(name, opts, parentContext); - const contextWithSpanSet = api.setSpan(parentContext, span); + const contextWithSpanSet = api.trace.setSpan(parentContext, span); return api.context.with(contextWithSpanSet, fn, undefined, span); } @@ -233,5 +233,5 @@ function getParent( context: api.Context ): api.SpanContext | undefined { if (options.root) return undefined; - return api.getSpanContext(context); + return api.trace.getSpanContext(context); } diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index d76faf84e9..157f6781a6 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -155,7 +155,7 @@ describe('Tracer', () => { const span = tracer.startSpan( 'aSpan', undefined, - api.setSpanContext(ROOT_CONTEXT, parent) + api.trace.setSpanContext(ROOT_CONTEXT, parent) ); assert.strictEqual((span as Span).parentSpanId, parent.spanId); assert.strictEqual(span.spanContext().traceId, parent.traceId); @@ -175,7 +175,7 @@ describe('Tracer', () => { const span = tracer.startSpan( 'aSpan', undefined, - api.setSpanContext(ROOT_CONTEXT, parent) + api.trace.setSpanContext(ROOT_CONTEXT, parent) ); assert.strictEqual((span as Span).parentSpanId, undefined); }); From 0335473f738545957fa31ef129b6fb18d15498a7 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Thu, 27 May 2021 21:14:03 -0400 Subject: [PATCH 22/26] chore: only import api once Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 157f6781a6..e32566f38e 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import * as api from '@opentelemetry/api'; import { context, createContextKey, @@ -22,6 +21,7 @@ import { Sampler, SamplingDecision, SpanContext, + trace, TraceFlags } from '@opentelemetry/api'; import { @@ -155,7 +155,7 @@ describe('Tracer', () => { const span = tracer.startSpan( 'aSpan', undefined, - api.trace.setSpanContext(ROOT_CONTEXT, parent) + trace.setSpanContext(ROOT_CONTEXT, parent) ); assert.strictEqual((span as Span).parentSpanId, parent.spanId); assert.strictEqual(span.spanContext().traceId, parent.traceId); @@ -175,7 +175,7 @@ describe('Tracer', () => { const span = tracer.startSpan( 'aSpan', undefined, - api.trace.setSpanContext(ROOT_CONTEXT, parent) + trace.setSpanContext(ROOT_CONTEXT, parent) ); assert.strictEqual((span as Span).parentSpanId, undefined); }); From 1944b4e33910001e8d28a6d18b105f75d1e69959 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Thu, 27 May 2021 21:19:43 -0400 Subject: [PATCH 23/26] test: assert active spans are indeed active with help of TestStackContextManager Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index e32566f38e..dff989211e 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -24,6 +24,7 @@ import { trace, TraceFlags } from '@opentelemetry/api'; +import { getSpan } from '@opentelemetry/api/build/src/trace/context-utils'; import { AlwaysOffSampler, AlwaysOnSampler, @@ -32,6 +33,7 @@ import { } from '@opentelemetry/core'; import * as assert from 'assert'; import { BasicTracerProvider, Span, Tracer } from '../src'; +import { TestStackContextManager } from './export/TestStackContextManager'; describe('Tracer', () => { const tracerProvider = new BasicTracerProvider(); @@ -50,7 +52,13 @@ describe('Tracer', () => { } } + beforeEach(() => { + const contextManager = new TestStackContextManager().enable(); + context.setGlobalContextManager(contextManager); + }); + afterEach(() => { + context.disable(); delete envSource.OTEL_TRACES_SAMPLER; delete envSource.OTEL_TRACES_SAMPLER_ARG; }); @@ -231,7 +239,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', span => { try { - // todo: assert.strictEqual(getSpan(context.active()), span) + assert.strictEqual(getSpan(context.active()), span) return 1 } finally { span.end(); @@ -248,7 +256,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', {}, span => { try { - // todo: assert.strictEqual(getSpan(context.active()), span) + assert.strictEqual(getSpan(context.active()), span) return 1 } finally { span.end(); @@ -269,7 +277,7 @@ describe('Tracer', () => { assert.strictEqual(tracer.startActiveSpan('my-span', {}, ctx, span => { try { - // todo: assert.strictEqual(getSpan(context.active()), span) + assert.strictEqual(getSpan(context.active()), span) assert.strictEqual(ctx.getValue(ctxKey), 'bar') return 1 } finally { From ec332579bbf294b3ea6a990589834cb90d89045c Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Thu, 27 May 2021 21:48:17 -0400 Subject: [PATCH 24/26] test: spy startSpan to ensure it is called with opts passed into startActiveSpan Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index dff989211e..94957882ea 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -34,6 +34,7 @@ import { import * as assert from 'assert'; import { BasicTracerProvider, Span, Tracer } from '../src'; import { TestStackContextManager } from './export/TestStackContextManager'; +import * as sinon from 'sinon'; describe('Tracer', () => { const tracerProvider = new BasicTracerProvider(); @@ -248,14 +249,18 @@ describe('Tracer', () => { }); it('should start an active span with name, options and function args', () => { + const tracer = new Tracer( { name: 'default', version: '0.0.1' }, { sampler: new TestSampler() }, tracerProvider ); - assert.strictEqual(tracer.startActiveSpan('my-span', {}, span => { + // const spy = sinon.spy(tracer, "startSpan"); + + assert.strictEqual(tracer.startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { try { + // assert(spy.calledWith('my-span', {attributes: {foo: 'bar'}})) assert.strictEqual(getSpan(context.active()), span) return 1 } finally { @@ -275,8 +280,11 @@ describe('Tracer', () => { const ctx = context.active().setValue(ctxKey, 'bar') - assert.strictEqual(tracer.startActiveSpan('my-span', {}, ctx, span => { + const spy = sinon.spy(tracer, "startSpan"); + + assert.strictEqual(tracer.startActiveSpan('my-span', {attributes: {foo: 'bar'}}, ctx, span => { try { + assert(spy.calledWith('my-span', {attributes: {foo: 'bar'}}, ctx)) assert.strictEqual(getSpan(context.active()), span) assert.strictEqual(ctx.getValue(ctxKey), 'bar') return 1 From c395c814c2eb630edbd3f19192258cd336ce66d9 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Thu, 27 May 2021 21:51:12 -0400 Subject: [PATCH 25/26] fix: uncomment sinon spy Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index 94957882ea..a4828dd6a3 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -256,11 +256,11 @@ describe('Tracer', () => { tracerProvider ); - // const spy = sinon.spy(tracer, "startSpan"); + const spy = sinon.spy(tracer, "startSpan"); assert.strictEqual(tracer.startActiveSpan('my-span', {attributes: {foo: 'bar'}}, span => { try { - // assert(spy.calledWith('my-span', {attributes: {foo: 'bar'}})) + assert(spy.calledWith('my-span', {attributes: {foo: 'bar'}})) assert.strictEqual(getSpan(context.active()), span) return 1 } finally { From 4eb9d6c913f3a3d1360ac14f5db2af39e31cda07 Mon Sep 17 00:00:00 2001 From: naseemkullah Date: Fri, 28 May 2021 09:16:27 -0400 Subject: [PATCH 26/26] test: assert startSpan spy called with name when only name and fn passed to startActiveSpan Signed-off-by: naseemkullah --- packages/opentelemetry-tracing/test/Tracer.test.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/opentelemetry-tracing/test/Tracer.test.ts b/packages/opentelemetry-tracing/test/Tracer.test.ts index a4828dd6a3..aa42daf0e8 100644 --- a/packages/opentelemetry-tracing/test/Tracer.test.ts +++ b/packages/opentelemetry-tracing/test/Tracer.test.ts @@ -238,8 +238,11 @@ describe('Tracer', () => { tracerProvider ); + const spy = sinon.spy(tracer, "startSpan"); + assert.strictEqual(tracer.startActiveSpan('my-span', span => { try { + assert(spy.calledWith('my-span')) assert.strictEqual(getSpan(context.active()), span) return 1 } finally {