Skip to content

Commit e58acdc

Browse files
committed
test
1 parent 1a79f82 commit e58acdc

File tree

2 files changed

+33
-6
lines changed

2 files changed

+33
-6
lines changed

packages/instrumentation-oracledb/src/OracleTelemetryTraceHandler.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
trace,
2626
diag,
2727
TraceFlags,
28+
SpanContext,
2829
} from '@opentelemetry/api';
2930
import {
3031
ATTR_DB_NAMESPACE,
@@ -64,10 +65,12 @@ function getTraceHandlerBaseClass(
6465
}
6566
}
6667

67-
68-
function _buildTraceparent(span: Span): string | undefined {
69-
const sc = span.spanContext();
70-
return `00-${sc.traceId}-${sc.spanId}-0${Number(sc.traceFlags || TraceFlags.NONE).toString(16)}`;
68+
export function buildTraceparent(
69+
spanContext: SpanContext
70+
): string | undefined {
71+
return `00-${spanContext.traceId}-${spanContext.spanId}-0${Number(
72+
spanContext.traceFlags || TraceFlags.NONE
73+
).toString(16)}`;
7174
}
7275

7376
export function getOracleTelemetryTraceHandlerClass(
@@ -367,8 +370,8 @@ export function getOracleTelemetryTraceHandlerClass(
367370
traceContext.operation === SpanNames.EXECUTE_MANY)
368371
) {
369372
const connection = traceContext.additionalConfig?.self;
370-
const traceparent = _buildTraceparent(
371-
traceContext.userContext.span
373+
const traceparent = buildTraceparent(
374+
traceContext.userContext.span.spanContext()
372375
);
373376
if (connection && 'action' in connection && traceparent) {
374377
try {

packages/instrumentation-oracledb/test/oracle.test.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import {
3636
import * as assert from 'assert';
3737
import { OracleInstrumentation } from '../src';
3838
import { SpanNames } from '../src/constants';
39+
import { buildTraceparent} from '../src/OracleTelemetryTraceHandler';
3940

4041
import {
4142
ATTR_DB_NAMESPACE,
@@ -512,6 +513,7 @@ describe('oracledb', () => {
512513
instrumentation.setConfig({
513514
enhancedDatabaseReporting: false,
514515
dbStatementDump: false,
516+
traceContextPropagation: false,
515517
});
516518
});
517519

@@ -963,6 +965,28 @@ describe('oracledb', () => {
963965
});
964966
});
965967

968+
it('should propagate trace context via connection.action when enabled', async () => {
969+
instrumentation.setConfig({ traceContextPropagation: true });
970+
const result = await connection.execute(
971+
"select sys_context('USERENV', 'ACTION') as action from dual",
972+
[],
973+
{ outFormat: oracledb.OUT_FORMAT_OBJECT }
974+
);
975+
const row = result.rows?.[0] as Record<string, string> | undefined;
976+
const actionValue = row?.ACTION;
977+
const spans = memoryExporter.getFinishedSpans();
978+
const executeSpan = spans[spans.length - 1];
979+
assert.ok(executeSpan, 'expected span to verify trace propagation');
980+
assert.ok(
981+
executeSpan.name.startsWith(SpanNames.EXECUTE),
982+
`expected execute span, got ${executeSpan.name}`
983+
);
984+
const expectedTraceparent = buildTraceparent(
985+
executeSpan.spanContext()
986+
);
987+
assert.strictEqual(actionValue, expectedTraceparent);
988+
});
989+
966990
it('should intercept connection.execute(sql, values) bind-by-name', async () => {
967991
const span = tracer.startSpan('test span');
968992
await context.with(trace.setSpan(context.active(), span), async () => {

0 commit comments

Comments
 (0)