Skip to content

Commit

Permalink
fix: feedback from PR
Browse files Browse the repository at this point in the history
  • Loading branch information
jtmalinowski committed Apr 10, 2021
1 parent a3291b3 commit e03dfaf
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 20 deletions.
34 changes: 34 additions & 0 deletions packages/opentelemetry-node/test/NodeTracerProvider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
setSpan,
setSpanContext,
getSpan,
propagation,
} from '@opentelemetry/api';
import { AlwaysOnSampler, AlwaysOffSampler } from '@opentelemetry/core';
import { AsyncHooksContextManager } from '@opentelemetry/context-async-hooks';
Expand Down Expand Up @@ -211,4 +212,37 @@ describe('NodeTracerProvider', () => {
return patchedFn();
});
});

describe('.register()', () => {
let originalPropagators: string | number | undefined | string[];
beforeEach(() => {
originalPropagators = process.env.OTEL_PROPAGATORS;
});

afterEach(() => {
// otherwise we may assign 'undefined' (a string)
if (originalPropagators !== undefined) {
(process.env as any).OTEL_PROPAGATORS = originalPropagators;
} else {
delete (process.env as any).OTEL_PROPAGATORS;
}
});

it('should allow propagators as per the specification', () => {
(process.env as any).OTEL_PROPAGATORS = 'b3,b3multi,jaeger';

const provider = new NodeTracerProvider();
provider.register();

assert.deepStrictEqual(propagation.fields(), [
'b3',
'x-b3-traceid',
'x-b3-spanid',
'x-b3-flags',
'x-b3-sampled',
'x-b3-parentspanid',
'uber-trace-id',
]);
});
});
});
5 changes: 1 addition & 4 deletions packages/opentelemetry-tracing/src/BasicTracerProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,6 @@ export class BasicTracerProvider implements TracerProvider {
['baggage', () => new HttpBaggage()],
]);

static registerPropagator(name: string, factory: PROPAGATOR_FACTORY): void {
this._registeredPropagators.set(name, factory);
}

private readonly _config: TracerConfig;
private readonly _registeredSpanProcessors: SpanProcessor[] = [];
private readonly _tracers: Map<string, Tracer> = new Map();
Expand Down Expand Up @@ -125,6 +121,7 @@ export class BasicTracerProvider implements TracerProvider {
}

protected _buildPropagatorFromEnv(): TextMapPropagator | undefined {
// per spec, propagators from env must be deduplicated
const uniquePropagatorNames = [...new Set(getEnv().OTEL_PROPAGATORS)];

const propagators = uniquePropagatorNames.map(name => {
Expand Down
33 changes: 17 additions & 16 deletions packages/opentelemetry-tracing/test/BasicTracerProvider.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ import {
propagation,
diag,
} from '@opentelemetry/api';
import { CompositePropagator } from '@opentelemetry/core';
import {
AlwaysOnSampler,
AlwaysOffSampler,
TraceState,
} from '@opentelemetry/core';
import { RAW_ENVIRONMENT } from '@opentelemetry/core/src/utils/environment';
import { Resource } from '@opentelemetry/resources';
import * as assert from 'assert';
import * as sinon from 'sinon';
Expand Down Expand Up @@ -125,7 +125,7 @@ describe('BasicTracerProvider', () => {
describe('.register()', () => {
const envSource = (typeof window !== 'undefined'
? window
: process.env) as RAW_ENVIRONMENT;
: process.env) as any;

describe('propagator', () => {
class DummyPropagator implements TextMapPropagator {
Expand All @@ -152,15 +152,21 @@ describe('BasicTracerProvider', () => {
[TextMapPropagator],
TextMapPropagator
>;
let originalPropagators: RAW_ENVIRONMENT['OTEL_PROPAGATORS'];
let originalPropagators: string | number | undefined | string[];
beforeEach(() => {
setGlobalPropagatorStub = sinon.spy(propagation, 'setGlobalPropagator');
originalPropagators = envSource.OTEL_PROPAGATORS;
});

afterEach(() => {
setGlobalPropagatorStub.restore();
envSource.OTEL_PROPAGATORS = originalPropagators;

// otherwise we may assign 'undefined' (a string)
if (originalPropagators !== undefined) {
envSource.OTEL_PROPAGATORS = originalPropagators;
} else {
delete envSource.OTEL_PROPAGATORS;
}
});

it('should be set to a given value if it it provided', () => {
Expand All @@ -175,27 +181,22 @@ describe('BasicTracerProvider', () => {
);
});

it('should be set to a given value if it it provided in an environment variable', () => {
envSource.OTEL_PROPAGATORS = 'dummy';
BasicTracerProvider.registerPropagator(
'dummy',
() => new DummyPropagator()
);

it('should be composite if 2 or more propagators provided in an environment variable', () => {
const provider = new BasicTracerProvider();
provider.register();

assert.ok(
setGlobalPropagatorStub.calledOnceWithExactly(
sinon.match.instanceOf(DummyPropagator)
sinon.match.instanceOf(CompositePropagator)
)
);
assert.deepStrictEqual(setGlobalPropagatorStub.args[0][0].fields(), [
'traceparent',
'tracestate',
'baggage',
]);
});

it(
'should be composite if more than 2 propagators provided in an environment variable'
);

it('warns if there is no propagator registered with a given name', () => {
const warnStub = sinon.spy(diag, 'warn');

Expand Down

0 comments on commit e03dfaf

Please sign in to comment.