From 900b7d8bfc52d9ebcd17657f4222e8a7fd17b55b Mon Sep 17 00:00:00 2001 From: Mustafa Haddara Date: Thu, 28 Mar 2024 09:20:51 -0400 Subject: [PATCH] feat(opentelemetry-instrumentation-xhr): optionally ignore network events (#4571) --- experimental/CHANGELOG.md | 1 + .../README.md | 9 +++++++++ .../src/xhr.ts | 10 ++++++++-- .../test/xhr.test.ts | 14 ++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/experimental/CHANGELOG.md b/experimental/CHANGELOG.md index 62588e6877..69c63e768d 100644 --- a/experimental/CHANGELOG.md +++ b/experimental/CHANGELOG.md @@ -24,6 +24,7 @@ All notable changes to experimental packages in this project will be documented ### :rocket: (Enhancement) +* feat(opentelemetry-instrumentation-xhr): optionally ignore network events [#4571](https://github.com/open-telemetry/opentelemetry-js/pull/4571/) @mustafahaddara * refactor(instr-http): use exported strings for semconv. [#4573](https://github.com/open-telemetry/opentelemetry-js/pull/4573/) @JamieDanielson * feat(sdk-node): add `HostDetector` as default resource detector diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/README.md b/experimental/packages/opentelemetry-instrumentation-xml-http-request/README.md index 8c96869460..8c706ffa61 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/README.md +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/README.md @@ -64,6 +64,15 @@ req.send(); ``` +### XHR Instrumentation options + +XHR instrumentation plugin has few options available to choose from. You can set the following: + +| Options | Type | Description | +|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------|-----------------------------------------------------------------------------------------| +| [`applyCustomAttributesOnSpan`](https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/opentelemetry-instrumentation-xml-http-request/src/xhr.ts#L76) | `XHRCustomAttributeFunction` | Function for adding custom attributes | +| [`ignoreNetworkEvents`](https://github.com/open-telemetry/opentelemetry-js/blob/main/experimental/packages/opentelemetry-instrumentation-xml-http-request/src/xhr.ts#L78) | `boolean` | Disable network events being added as span events (network events are added by default) | + ## Example Screenshots ![Screenshot of the running example](images/main.jpg) diff --git a/experimental/packages/opentelemetry-instrumentation-xml-http-request/src/xhr.ts b/experimental/packages/opentelemetry-instrumentation-xml-http-request/src/xhr.ts index 42eb9abb0b..c430d4ba3e 100644 --- a/experimental/packages/opentelemetry-instrumentation-xml-http-request/src/xhr.ts +++ b/experimental/packages/opentelemetry-instrumentation-xml-http-request/src/xhr.ts @@ -74,6 +74,8 @@ export interface XMLHttpRequestInstrumentationConfig ignoreUrls?: Array; /** Function for adding custom attributes on the span */ applyCustomAttributesOnSpan?: XHRCustomAttributeFunction; + /** Ignore adding network events as span events */ + ignoreNetworkEvents?: boolean; } /** @@ -140,7 +142,9 @@ export class XMLHttpRequestInstrumentation extends InstrumentationBase { ); }); }); + + describe('when network events are ignored', () => { + beforeEach(done => { + clearData(); + prepareData(done, url, { + ignoreNetworkEvents: true, + }); + }); + it('should NOT add network events', () => { + const span: tracing.ReadableSpan = exportSpy.args[1][0][0]; + const events = span.events; + assert.strictEqual(events.length, 3, 'number of events is wrong'); + }); + }); }); describe('when request is NOT successful', () => {