From 97c02731003e2df98a025b6bbe093266bb413cf1 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Tue, 27 Apr 2021 14:55:02 -0400 Subject: [PATCH 1/3] feat: add function to wrap SpanContext in NonRecordingSpan #49 --- src/api/trace.ts | 13 +++++++++---- src/index.ts | 1 + src/trace/spancontext-utils.ts | 11 +++++++++++ test/trace/spancontext-utils.test.ts | 13 +++++++++++++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/api/trace.ts b/src/api/trace.ts index f2f083af..c5195969 100644 --- a/src/api/trace.ts +++ b/src/api/trace.ts @@ -14,15 +14,18 @@ * limitations under the License. */ -import { ProxyTracerProvider } from '../trace/ProxyTracerProvider'; -import { Tracer } from '../trace/tracer'; -import { TracerProvider } from '../trace/tracer_provider'; -import { isSpanContextValid } from '../trace/spancontext-utils'; import { getGlobal, registerGlobal, unregisterGlobal, } from '../internal/global-utils'; +import { ProxyTracerProvider } from '../trace/ProxyTracerProvider'; +import { + isSpanContextValid, + wrapSpanContext, +} from '../trace/spancontext-utils'; +import { Tracer } from '../trace/tracer'; +import { TracerProvider } from '../trace/tracer_provider'; const API_NAME = 'trace'; @@ -76,5 +79,7 @@ export class TraceAPI { this._proxyTracerProvider = new ProxyTracerProvider(); } + public wrapSpanContext = wrapSpanContext; + public isSpanContextValid = isSpanContextValid; } diff --git a/src/index.ts b/src/index.ts index b36eaccd..6cfd455a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -48,6 +48,7 @@ export { isSpanContextValid, isValidTraceId, isValidSpanId, + wrapSpanContext, } from './trace/spancontext-utils'; export * from './context/context'; diff --git a/src/trace/spancontext-utils.ts b/src/trace/spancontext-utils.ts index ebcc3ce2..97743d79 100644 --- a/src/trace/spancontext-utils.ts +++ b/src/trace/spancontext-utils.ts @@ -13,6 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +import { NonRecordingSpan } from './NonRecordingSpan'; +import { Span } from './span'; import { SpanContext } from './span_context'; import { TraceFlags } from './trace_flags'; @@ -43,3 +45,12 @@ export function isSpanContextValid(spanContext: SpanContext): boolean { isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId) ); } + +/** + * + * @param spanContext span context to be wrapped + * @returns a new {@link NonRecordingSpan} with the provided context + */ +export function wrapSpanContext(spanContext: SpanContext): Span { + return new NonRecordingSpan(spanContext); +} diff --git a/test/trace/spancontext-utils.test.ts b/test/trace/spancontext-utils.test.ts index e194f1d3..81dd3b1f 100644 --- a/test/trace/spancontext-utils.test.ts +++ b/test/trace/spancontext-utils.test.ts @@ -54,4 +54,17 @@ describe('spancontext-utils', () => { }; assert.ok(!context.isSpanContextValid(spanContext)); }); + + it('should wrap a SpanContext in a non-recording span', () => { + const spanContext = { + traceId: 'd4cda95b652f4a1592b449d5929fda1b', + spanId: '6e0c63257de34c92', + traceFlags: TraceFlags.NONE, + }; + + const span = context.wrapSpanContext(spanContext); + + assert.deepStrictEqual(span.spanContext(), spanContext); + assert.strictEqual(span.isRecording(), false); + }); }); From 10a0a4c84ad3934bf0e8eeaeff2233fb9ebb311f Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Tue, 27 Apr 2021 15:10:09 -0400 Subject: [PATCH 2/3] chore: document wrapSpanContext --- src/trace/spancontext-utils.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/trace/spancontext-utils.ts b/src/trace/spancontext-utils.ts index 97743d79..266471fd 100644 --- a/src/trace/spancontext-utils.ts +++ b/src/trace/spancontext-utils.ts @@ -47,9 +47,10 @@ export function isSpanContextValid(spanContext: SpanContext): boolean { } /** + * Wrap the given {@link SpanContext} in a new non-recording {@link Span} * * @param spanContext span context to be wrapped - * @returns a new {@link NonRecordingSpan} with the provided context + * @returns a new non-recording {@link Span} with the provided context */ export function wrapSpanContext(spanContext: SpanContext): Span { return new NonRecordingSpan(spanContext); From d8bb4b00ee84b6a0017191e8613f1d9fa32afca5 Mon Sep 17 00:00:00 2001 From: Daniel Dyla Date: Tue, 27 Apr 2021 15:55:39 -0400 Subject: [PATCH 3/3] chore: remove top-level export per SIG discussion --- src/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 6cfd455a..b36eaccd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -48,7 +48,6 @@ export { isSpanContextValid, isValidTraceId, isValidSpanId, - wrapSpanContext, } from './trace/spancontext-utils'; export * from './context/context';