diff --git a/observability-test/observability.ts b/observability-test/observability.ts index 94c323ed7..97f1e1db1 100644 --- a/observability-test/observability.ts +++ b/observability-test/observability.ts @@ -25,6 +25,8 @@ const {SpanStatusCode, TracerProvider} = require('@opentelemetry/api'); // eslint-disable-next-line n/no-extraneous-require const {SimpleSpanProcessor} = require('@opentelemetry/sdk-trace-base'); const { + TRACER_NAME, + TRACER_VERSION, SPAN_NAMESPACE_PREFIX, getActiveOrNoopSpan, setSpanError, @@ -32,6 +34,8 @@ const { startTrace, } = require('../src/instrument'); const { + ATTR_OTEL_SCOPE_NAME, + ATTR_OTEL_SCOPE_VERSION, SEMATTRS_DB_NAME, SEMATTRS_DB_SQL_TABLE, SEMATTRS_DB_STATEMENT, @@ -129,6 +133,18 @@ describe('startTrace', () => { it('with semantic attributes', () => { const opts = {tableName: 'table', dbName: 'db'}; startTrace('aSpan', opts, span => { + assert.equal( + span.attributes[ATTR_OTEL_SCOPE_NAME], + TRACER_NAME, + 'Missing OTEL_SCOPE_NAME attribute' + ); + + assert.equal( + span.attributes[ATTR_OTEL_SCOPE_VERSION], + TRACER_VERSION, + 'Missing OTEL_SCOPE_VERSION attribute' + ); + assert.equal( span.attributes[SEMATTRS_DB_SYSTEM], 'spanner', diff --git a/src/instrument.ts b/src/instrument.ts index a242c4ed2..7420ab8a6 100644 --- a/src/instrument.ts +++ b/src/instrument.ts @@ -15,6 +15,8 @@ */ import { + ATTR_OTEL_SCOPE_NAME, + ATTR_OTEL_SCOPE_VERSION, SEMATTRS_DB_NAME, SEMATTRS_DB_STATEMENT, SEMATTRS_DB_SYSTEM, @@ -53,6 +55,8 @@ export type {observabilityOptions as ObservabilityOptions}; const TRACER_NAME = 'cloud.google.com/nodejs/spanner'; const TRACER_VERSION = '7.14.0'; // Manually hard coded, TODO: remove +export {TRACER_NAME, TRACER_VERSION}; // Only exported for testing. + /** * getTracer fetches the tracer from the provided tracerProvider. * @param {TracerProvider} [tracerProvider] optional custom tracer provider @@ -102,6 +106,8 @@ export function startTrace( {kind: SpanKind.CLIENT}, span => { span.setAttribute(SEMATTRS_DB_SYSTEM, 'spanner'); + span.setAttribute(ATTR_OTEL_SCOPE_NAME, TRACER_NAME); + span.setAttribute(ATTR_OTEL_SCOPE_VERSION, TRACER_VERSION); if (config.tableName) { span.setAttribute(SEMATTRS_DB_SQL_TABLE, config.tableName);