Skip to content

Commit 6645d82

Browse files
committed
add more tests
1 parent de1aed0 commit 6645d82

File tree

1 file changed

+81
-3
lines changed

1 file changed

+81
-3
lines changed

nodejs/packages/layer/test/wrapper.spec.ts

Lines changed: 81 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
1+
import { wrap, unwrap } from '../src/wrapper';
2+
3+
import {
4+
defaultTextMapGetter,
5+
ROOT_CONTEXT,
6+
TextMapPropagator,
7+
trace,
8+
TraceFlags,
9+
} from '@opentelemetry/api';
110
import type { AwsSdkInstrumentationConfig } from '@opentelemetry/instrumentation-aws-sdk';
11+
import { TRACE_PARENT_HEADER } from '@opentelemetry/core';
12+
import { AWSXRAY_TRACE_ID_HEADER } from '@opentelemetry/propagator-aws-xray';
213
import { SDKRegistrationConfig } from '@opentelemetry/sdk-trace-base';
3-
import { TextMapPropagator } from '@opentelemetry/api';
4-
5-
import { wrap, unwrap } from '../src/wrapper';
614

715
import { stub } from 'sinon';
816
import assert from 'assert';
@@ -69,6 +77,29 @@ describe('wrapper', () => {
6977
assert.deepEqual(actualPropagatorFields, expectedPropagatorFields);
7078
};
7179

80+
const setAndGetConfiguredPropagator = (
81+
propagatorNames: string[],
82+
): TextMapPropagator => {
83+
if (propagatorNames && propagatorNames.length) {
84+
process.env.OTEL_PROPAGATORS = propagatorNames.join(',');
85+
}
86+
87+
const configureSdkRegistrationStub = stub().returnsArg(0);
88+
global.configureSdkRegistration = configureSdkRegistrationStub;
89+
wrap();
90+
assert(configureSdkRegistrationStub.calledOnce);
91+
92+
const sdkRegistrationConfig: SDKRegistrationConfig =
93+
configureSdkRegistrationStub.getCall(0).firstArg;
94+
assert.notEqual(sdkRegistrationConfig, null);
95+
96+
const propagator: TextMapPropagator | null | undefined =
97+
sdkRegistrationConfig.propagator;
98+
assert.notEqual(propagator, null);
99+
100+
return propagator!;
101+
};
102+
72103
it('is configured by default', () => {
73104
// by default, 'W3CTraceContextPropagator' and 'W3CBaggagePropagator' propagators are added.
74105
// - 'traceparent' and 'tracestate' fields are used by the 'W3CTraceContextPropagator'
@@ -100,5 +131,52 @@ describe('wrapper', () => {
100131
// in case of unsupported propagator, warning log is printed and empty propagator array is returned
101132
testConfiguredPropagator(['jaeger'], []);
102133
});
134+
135+
it('is configured in correct order', () => {
136+
const W3C_TRACE_ID = '5b8aa5a2d2c872e8321cf37308d69df2';
137+
const W3C_SPAN_ID = '051581bf3cb55c13';
138+
const AWS_XRAY_TRACE_ID = '8a3c60f7-d188f8fa79d48a391a778fa6';
139+
const AWS_XRAY_SPAN_ID = '53995c3f42cd8ad8';
140+
const carrier = {
141+
[TRACE_PARENT_HEADER]: `00-${W3C_TRACE_ID}-${W3C_SPAN_ID}-01`,
142+
[AWSXRAY_TRACE_ID_HEADER]: `Root=1-${AWS_XRAY_TRACE_ID};Parent=${AWS_XRAY_SPAN_ID};Sampled=1`,
143+
};
144+
145+
const propagator1: TextMapPropagator = setAndGetConfiguredPropagator([
146+
'tracecontext',
147+
'xray',
148+
]);
149+
const extractedSpanContext1 = trace
150+
.getSpan(
151+
propagator1.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter),
152+
)
153+
?.spanContext();
154+
// Last one overwrites, so we will see the context extracted from the last propagator (xray)
155+
assert.deepStrictEqual(extractedSpanContext1, {
156+
traceId: AWS_XRAY_TRACE_ID.replace('-', ''),
157+
spanId: AWS_XRAY_SPAN_ID,
158+
isRemote: true,
159+
traceFlags: TraceFlags.SAMPLED,
160+
});
161+
162+
unwrap();
163+
164+
const propagator2: TextMapPropagator = setAndGetConfiguredPropagator([
165+
'xray',
166+
'tracecontext',
167+
]);
168+
const extractedSpanContext2 = trace
169+
.getSpan(
170+
propagator2.extract(ROOT_CONTEXT, carrier, defaultTextMapGetter),
171+
)
172+
?.spanContext();
173+
// Last one overwrites, so we will see the context extracted from the last propagator (tracecontext)
174+
assert.deepStrictEqual(extractedSpanContext2, {
175+
traceId: W3C_TRACE_ID,
176+
spanId: W3C_SPAN_ID,
177+
isRemote: true,
178+
traceFlags: TraceFlags.SAMPLED,
179+
});
180+
});
103181
});
104182
});

0 commit comments

Comments
 (0)