diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts b/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts index 1f80bfd953a..00f33bd750a 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts +++ b/experimental/packages/opentelemetry-instrumentation-fetch/src/fetch.ts @@ -24,7 +24,14 @@ import { import * as core from '@opentelemetry/core'; import * as web from '@opentelemetry/sdk-trace-web'; import { AttributeNames } from './enums/AttributeNames'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_STATUS_CODE, + SEMATTRS_HTTP_HOST, + SEMATTRS_HTTP_USER_AGENT, + SEMATTRS_HTTP_SCHEME, + SEMATTRS_HTTP_URL, + SEMATTRS_HTTP_METHOD, +} from '@opentelemetry/semantic-conventions'; import { FetchError, FetchResponse, SpanData } from './types'; import { VERSION } from './version'; import { _globalThis } from '@opentelemetry/core'; @@ -125,20 +132,17 @@ export class FetchInstrumentation extends InstrumentationBase< response: FetchResponse ): void { const parsedUrl = web.parseUrl(response.url); - span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, response.status); + span.setAttribute(SEMATTRS_HTTP_STATUS_CODE, response.status); if (response.statusText != null) { span.setAttribute(AttributeNames.HTTP_STATUS_TEXT, response.statusText); } - span.setAttribute(SemanticAttributes.HTTP_HOST, parsedUrl.host); + span.setAttribute(SEMATTRS_HTTP_HOST, parsedUrl.host); span.setAttribute( - SemanticAttributes.HTTP_SCHEME, + SEMATTRS_HTTP_SCHEME, parsedUrl.protocol.replace(':', '') ); if (typeof navigator !== 'undefined') { - span.setAttribute( - SemanticAttributes.HTTP_USER_AGENT, - navigator.userAgent - ); + span.setAttribute(SEMATTRS_HTTP_USER_AGENT, navigator.userAgent); } } @@ -213,8 +217,8 @@ export class FetchInstrumentation extends InstrumentationBase< kind: api.SpanKind.CLIENT, attributes: { [AttributeNames.COMPONENT]: this.moduleName, - [SemanticAttributes.HTTP_METHOD]: method, - [SemanticAttributes.HTTP_URL]: url, + [SEMATTRS_HTTP_METHOD]: method, + [SEMATTRS_HTTP_URL]: url, }, }); } diff --git a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts index 292f05ef91b..7e14cc35883 100644 --- a/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts +++ b/experimental/packages/opentelemetry-instrumentation-fetch/test/fetch.test.ts @@ -41,7 +41,15 @@ import { FetchCustomAttributeFunction, } from '../src'; import { AttributeNames } from '../src/enums/AttributeNames'; -import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; +import { + SEMATTRS_HTTP_HOST, + SEMATTRS_HTTP_METHOD, + SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH, + SEMATTRS_HTTP_SCHEME, + SEMATTRS_HTTP_STATUS_CODE, + SEMATTRS_HTTP_URL, + SEMATTRS_HTTP_USER_AGENT, +} from '@opentelemetry/semantic-conventions'; class DummySpanExporter implements tracing.SpanExporter { export(spans: any) {} @@ -374,17 +382,17 @@ describe('fetch', () => { assert.strictEqual( attributes[keys[1]], 'GET', - `attributes ${SemanticAttributes.HTTP_METHOD} is wrong` + `attributes ${SEMATTRS_HTTP_METHOD} is wrong` ); assert.strictEqual( attributes[keys[2]], url, - `attributes ${SemanticAttributes.HTTP_URL} is wrong` + `attributes ${SEMATTRS_HTTP_URL} is wrong` ); assert.strictEqual( attributes[keys[3]], 200, - `attributes ${SemanticAttributes.HTTP_STATUS_CODE} is wrong` + `attributes ${SEMATTRS_HTTP_STATUS_CODE} is wrong` ); assert.ok( attributes[keys[4]] === 'OK' || attributes[keys[4]] === '', @@ -392,19 +400,19 @@ describe('fetch', () => { ); assert.ok( (attributes[keys[5]] as string).indexOf('localhost') === 0, - `attributes ${SemanticAttributes.HTTP_HOST} is wrong` + `attributes ${SEMATTRS_HTTP_HOST} is wrong` ); assert.ok( attributes[keys[6]] === 'http' || attributes[keys[6]] === 'https', - `attributes ${SemanticAttributes.HTTP_SCHEME} is wrong` + `attributes ${SEMATTRS_HTTP_SCHEME} is wrong` ); assert.ok( attributes[keys[7]] !== '', - `attributes ${SemanticAttributes.HTTP_USER_AGENT} is not defined` + `attributes ${SEMATTRS_HTTP_USER_AGENT} is not defined` ); assert.ok( (attributes[keys[8]] as number) > 0, - `attributes ${SemanticAttributes.HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` + `attributes ${SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH} is <= 0` ); assert.strictEqual(keys.length, 9, 'number of attributes is wrong'); @@ -865,9 +873,9 @@ describe('fetch', () => { const attributes = span.attributes; assert.strictEqual( - attributes[SemanticAttributes.HTTP_URL], + attributes[SEMATTRS_HTTP_URL], location.origin + '/get', - `attributes ${SemanticAttributes.HTTP_URL} is wrong` + `attributes ${SEMATTRS_HTTP_URL} is wrong` ); }); }); @@ -934,7 +942,7 @@ describe('fetch', () => { assert.strictEqual( attributes[keys[3]], 200, - `Missing basic attribute ${SemanticAttributes.HTTP_STATUS_CODE}` + `Missing basic attribute ${SEMATTRS_HTTP_STATUS_CODE}` ); }); });