From 9dbb99015b69781aa2580f65af49387d7f119737 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Tue, 14 Apr 2026 16:23:14 +0200 Subject: [PATCH 1/9] fix(amqp): cleaned up headers refs https://jsw.ibm.com/browse/INSTA-85333 --- .../messaging/amqplib/consumerPromises.js | 4 ++++ .../tracing/instrumentation/messaging/amqp.js | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js index 7bbce2a48d..a776156847 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js @@ -7,6 +7,8 @@ 'use strict'; +const expect = require('chai').expect; + const agentPort = process.env.AGENT_PORT; const instana = require('@instana/collector')({ agentPort, @@ -50,6 +52,8 @@ amqp }) .then(() => channel.consume(queueForExchangeName, msg => { + expect(msg.properties.headers).to.not.exist; + if (msg !== null) { log(msg.content.toString()); const span = instana.currentSpan(); diff --git a/packages/core/src/tracing/instrumentation/messaging/amqp.js b/packages/core/src/tracing/instrumentation/messaging/amqp.js index d0fcad6b46..5e5a7a8f35 100644 --- a/packages/core/src/tracing/instrumentation/messaging/amqp.js +++ b/packages/core/src/tracing/instrumentation/messaging/amqp.js @@ -182,6 +182,8 @@ function instrumentedDispatchMessage(ctx, originalDispatchMessage, originalArgs) ? originalArgs[1].properties.headers : {}; + removeInstanaHeadersFromMessage(originalArgs[1]); + return cls.ns.runAndReturn(() => { if (tracingUtil.readAttribCaseInsensitive(headers, constants.traceLevelHeaderName) === '0') { cls.setTracingLevel('0'); @@ -478,6 +480,23 @@ function instrumentedCallbackModelPublish(ctx, originalFunction, originalArgs) { return originalFunction.apply(ctx, originalArgs); }); } +function removeInstanaHeadersFromMessage(originalArgs) { + if ( + originalArgs && + originalArgs.properties && + originalArgs.properties.headers && + typeof originalArgs.properties.headers === 'object' + ) { + delete originalArgs.properties.headers[constants.traceIdHeaderName]; + delete originalArgs.properties.headers[constants.spanIdHeaderName]; + delete originalArgs.properties.headers[constants.traceLevelHeaderName]; + + // CASE: only our headers were in the message. Remove the headers object. + if (Object.keys(originalArgs.properties.headers).length === 0) { + delete originalArgs.properties.headers; + } + } +} exports.activate = function activate() { isActive = true; From 8b022d670ee2192546aad02dd7faa7c5cf13a7bc Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Tue, 14 Apr 2026 16:26:07 +0200 Subject: [PATCH 2/9] chore: order --- packages/core/src/tracing/instrumentation/messaging/amqp.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/tracing/instrumentation/messaging/amqp.js b/packages/core/src/tracing/instrumentation/messaging/amqp.js index 5e5a7a8f35..9c0f1edd31 100644 --- a/packages/core/src/tracing/instrumentation/messaging/amqp.js +++ b/packages/core/src/tracing/instrumentation/messaging/amqp.js @@ -182,8 +182,6 @@ function instrumentedDispatchMessage(ctx, originalDispatchMessage, originalArgs) ? originalArgs[1].properties.headers : {}; - removeInstanaHeadersFromMessage(originalArgs[1]); - return cls.ns.runAndReturn(() => { if (tracingUtil.readAttribCaseInsensitive(headers, constants.traceLevelHeaderName) === '0') { cls.setTracingLevel('0'); @@ -215,6 +213,8 @@ ctx.connection.stream.remoteAddress}:${ctx.connection.stream.remotePort}`; span.data.rabbitmq.key = fields.routingKey; } + removeInstanaHeadersFromMessage(originalArgs[1]); + try { return originalDispatchMessage.apply(ctx, originalArgs); } finally { From b978d740353a6357ce1aa8725384537346382d77 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Tue, 14 Apr 2026 16:28:32 +0200 Subject: [PATCH 3/9] chore: simplify --- .../core/src/tracing/instrumentation/messaging/amqp.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/core/src/tracing/instrumentation/messaging/amqp.js b/packages/core/src/tracing/instrumentation/messaging/amqp.js index 9c0f1edd31..97ff30f8e2 100644 --- a/packages/core/src/tracing/instrumentation/messaging/amqp.js +++ b/packages/core/src/tracing/instrumentation/messaging/amqp.js @@ -481,12 +481,7 @@ function instrumentedCallbackModelPublish(ctx, originalFunction, originalArgs) { }); } function removeInstanaHeadersFromMessage(originalArgs) { - if ( - originalArgs && - originalArgs.properties && - originalArgs.properties.headers && - typeof originalArgs.properties.headers === 'object' - ) { + if (originalArgs?.properties?.headers && typeof originalArgs.properties.headers === 'object') { delete originalArgs.properties.headers[constants.traceIdHeaderName]; delete originalArgs.properties.headers[constants.spanIdHeaderName]; delete originalArgs.properties.headers[constants.traceLevelHeaderName]; From 21e948a1fc96e15b642bebc308b635ba9f16e8d9 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 15 Apr 2026 09:03:29 +0200 Subject: [PATCH 4/9] chore: optimized --- .../integration/currencies/messaging/amqplib/test_base.js | 7 ++++--- .../core/src/tracing/instrumentation/messaging/amqp.js | 3 +++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js b/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js index 795cb5ef19..72496b833a 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js @@ -205,14 +205,14 @@ module.exports = function (name, version, isLatest) { it('must propagate suppression downstream for sendToQueue', () => publisherControls .sendToQueue('Ohai', { 'X-INSTANA-L': 0 }) - .then(() => delay(500)) + .then(() => delay(1000)) .then(() => agentControls.getSpans()) .then(spans => expect(spans).to.be.empty)); it('must propagate suppression downstream for publish', () => publisherControls .publish('Ohai!', { 'X-INSTANA-L': 0 }) - .then(() => delay(500)) + .then(() => delay(1000)) .then(() => agentControls.getSpans()) .then(spans => expect(spans).to.be.empty)); }); @@ -266,7 +266,8 @@ module.exports = function (name, version, isLatest) { span => expect(span.n).to.equal('node.http.client'), span => expect(span.t).to.equal(parentSpan.t), span => expect(span.p).to.equal(parentSpan.s), - span => expect(span.k).to.equal(constants.EXIT) + span => expect(span.k).to.equal(constants.EXIT), + span => expect(span.data.http.url).to.equal(`http://127.0.0.1:${agentControls.agentPort}/ping`) ]); } } diff --git a/packages/core/src/tracing/instrumentation/messaging/amqp.js b/packages/core/src/tracing/instrumentation/messaging/amqp.js index 97ff30f8e2..49346a377e 100644 --- a/packages/core/src/tracing/instrumentation/messaging/amqp.js +++ b/packages/core/src/tracing/instrumentation/messaging/amqp.js @@ -185,6 +185,7 @@ function instrumentedDispatchMessage(ctx, originalDispatchMessage, originalArgs) return cls.ns.runAndReturn(() => { if (tracingUtil.readAttribCaseInsensitive(headers, constants.traceLevelHeaderName) === '0') { cls.setTracingLevel('0'); + removeInstanaHeadersFromMessage(originalArgs[1]); return originalDispatchMessage.apply(ctx, originalArgs); } @@ -262,6 +263,7 @@ function instrumentedChannelModelGet(ctx, originalGet, originalArgs) { if (tracingUtil.readAttribCaseInsensitive(headers, constants.traceLevelHeaderName) === '0') { cls.setTracingLevel('0'); + removeInstanaHeadersFromMessage(result); span.cancel(); return result; } @@ -349,6 +351,7 @@ function instrumentedCallbackModelGet(ctx, originalGet, originalArgs) { if (tracingUtil.readAttribCaseInsensitive(headers, constants.traceLevelHeaderName) === '0') { cls.setTracingLevel('0'); + removeInstanaHeadersFromMessage(result); if (originalCallback) { return originalCallback(err, result); } From acc577a5b4bb5a549a85a09804aed269eb891a8d Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 15 Apr 2026 09:22:24 +0200 Subject: [PATCH 5/9] chore: fixes --- packages/core/src/tracing/instrumentation/messaging/amqp.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/core/src/tracing/instrumentation/messaging/amqp.js b/packages/core/src/tracing/instrumentation/messaging/amqp.js index 49346a377e..f5eea321a0 100644 --- a/packages/core/src/tracing/instrumentation/messaging/amqp.js +++ b/packages/core/src/tracing/instrumentation/messaging/amqp.js @@ -488,11 +488,6 @@ function removeInstanaHeadersFromMessage(originalArgs) { delete originalArgs.properties.headers[constants.traceIdHeaderName]; delete originalArgs.properties.headers[constants.spanIdHeaderName]; delete originalArgs.properties.headers[constants.traceLevelHeaderName]; - - // CASE: only our headers were in the message. Remove the headers object. - if (Object.keys(originalArgs.properties.headers).length === 0) { - delete originalArgs.properties.headers; - } } } From 838ec1e020efc8bc536b3600086c7f7ecdfa3766 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 15 Apr 2026 12:24:23 +0200 Subject: [PATCH 6/9] chore: cleanup --- example-apps/nestjs-app/package-lock.json | 1034 +---------------- .../messaging/amqplib/consumerControls.js | 2 +- .../messaging/amqplib/consumerPromises.js | 14 +- .../currencies/messaging/amqplib/modes.json | 1 + .../messaging/amqplib/publisherControls.js | 2 +- .../currencies/messaging/amqplib/test_base.js | 221 ++-- 6 files changed, 155 insertions(+), 1119 deletions(-) create mode 100644 packages/collector/test/integration/currencies/messaging/amqplib/modes.json diff --git a/example-apps/nestjs-app/package-lock.json b/example-apps/nestjs-app/package-lock.json index 6b1e5d7df4..ade5c24d2d 100644 --- a/example-apps/nestjs-app/package-lock.json +++ b/example-apps/nestjs-app/package-lock.json @@ -189,27 +189,6 @@ } } }, - "node_modules/@nestjs/platform-express": { - "version": "11.1.9", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "cors": "2.8.5", - "express": "5.1.0", - "multer": "2.0.2", - "path-to-regexp": "8.3.0", - "tslib": "2.8.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/nest" - }, - "peerDependencies": { - "@nestjs/common": "^11.0.0", - "@nestjs/core": "^11.0.0" - } - }, "node_modules/@nuxt/opencollective": { "version": "0.4.1", "license": "MIT", @@ -629,19 +608,6 @@ "@types/node": "*" } }, - "node_modules/accepts": { - "version": "2.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -663,12 +629,6 @@ "acorn": "^8" } }, - "node_modules/append-field": { - "version": "1.0.0", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -684,85 +644,6 @@ "node": ">=8.0.0" } }, - "node_modules/body-parser": { - "version": "2.2.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.0", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/busboy": { - "version": "1.6.0", - "optional": true, - "peer": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/chownr": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", @@ -788,21 +669,6 @@ "shimmer": "^1.1.0" } }, - "node_modules/concat-stream": { - "version": "2.0.0", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, "node_modules/consola": { "version": "3.4.2", "license": "MIT", @@ -810,59 +676,6 @@ "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/content-disposition": { - "version": "1.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie": { - "version": "0.7.2", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=6.6.0" - } - }, - "node_modules/cors": { - "version": "2.8.5", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/debug": { "version": "4.4.3", "license": "MIT", @@ -878,15 +691,6 @@ } } }, - "node_modules/depd": { - "version": "2.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -896,80 +700,6 @@ "node": ">=8" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/etag": { - "version": "1.8.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/event-loop-lag": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/event-loop-lag/-/event-loop-lag-1.4.0.tgz", @@ -1002,48 +732,6 @@ "node": ">=4.0.0" } }, - "node_modules/express": { - "version": "5.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.0", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, "node_modules/fast-safe-stringify": { "version": "2.1.1", "license": "MIT" @@ -1068,50 +756,6 @@ "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/finalhandler": { - "version": "2.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fresh": { - "version": "2.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "license": "MIT", - "optional": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/gcstats.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/gcstats.js/-/gcstats.js-1.0.0.tgz", @@ -1123,132 +767,23 @@ "nan": "^2.0.5" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-errors": { - "version": "2.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" + "node_modules/ieee754": { + "version": "1.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" }, "node_modules/import-in-the-middle": { "version": "2.0.0", @@ -1262,21 +797,6 @@ "module-details-from-path": "^1.0.3" } }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC", - "optional": true, - "peer": true - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-bluebird": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-bluebird/-/is-bluebird-1.0.2.tgz", @@ -1286,12 +806,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-promise": { - "version": "4.0.0", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/iterare": { "version": "1.2.1", "license": "ISC", @@ -1334,36 +848,6 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/media-typer": { - "version": "1.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/merge-descriptors": { - "version": "2.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -1373,40 +857,6 @@ "node": ">= 0.6" } }, - "node_modules/mime-db": { - "version": "1.54.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "3.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "license": "MIT", - "optional": true, - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minipass": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", @@ -1428,18 +878,6 @@ "node": ">= 18" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/module-details-from-path": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", @@ -1450,67 +888,6 @@ "version": "2.1.3", "license": "MIT" }, - "node_modules/multer": { - "version": "2.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "append-field": "^1.0.0", - "busboy": "^1.6.0", - "concat-stream": "^2.0.0", - "mkdirp": "^0.5.6", - "object-assign": "^4.1.1", - "type-is": "^1.6.18", - "xtend": "^4.0.2" - }, - "engines": { - "node": ">= 10.16.0" - } - }, - "node_modules/multer/node_modules/media-typer": { - "version": "0.3.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/mime-db": { - "version": "1.52.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/mime-types": { - "version": "2.1.35", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/multer/node_modules/type-is": { - "version": "1.6.18", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/nan": { "version": "2.23.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.23.1.tgz", @@ -1518,15 +895,6 @@ "license": "MIT", "optional": true }, - "node_modules/negotiator": { - "version": "1.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", @@ -1539,27 +907,6 @@ "node-gyp-build-test": "build-test.js" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/on-exit-leak-free": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", @@ -1569,27 +916,6 @@ "node": ">=14.0.0" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "wrappy": "1" - } - }, "node_modules/opentracing": { "version": "0.14.7", "resolved": "https://registry.npmjs.org/opentracing/-/opentracing-0.14.7.tgz", @@ -1599,15 +925,6 @@ "node": ">=0.10" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/path-to-regexp": { "version": "8.3.0", "license": "MIT", @@ -1669,64 +986,12 @@ ], "license": "MIT" }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/quick-format-unescaped": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", "license": "MIT" }, - "node_modules/range-parser": { - "version": "1.2.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "3.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/read-yaml-file": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-2.1.0.tgz", @@ -1740,20 +1005,6 @@ "node": ">=10.13" } }, - "node_modules/readable-stream": { - "version": "3.6.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/real-require": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", @@ -1781,22 +1032,6 @@ "node": ">=9.3.0 || >=8.10.0 <9.0.0" } }, - "node_modules/router": { - "version": "2.2.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "debug": "^4.4.0", - "depd": "^2.0.0", - "is-promise": "^4.0.0", - "parseurl": "^1.3.3", - "path-to-regexp": "^8.0.0" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/rxjs": { "version": "7.8.2", "license": "Apache-2.0", @@ -1805,26 +1040,6 @@ "tslib": "^2.1.0" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/safe-stable-stringify": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", @@ -1834,12 +1049,6 @@ "node": ">=10" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -1852,28 +1061,6 @@ "node": ">=10" } }, - "node_modules/send": { - "version": "1.2.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "debug": "^4.3.5", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "mime-types": "^3.0.1", - "ms": "^2.1.3", - "on-finished": "^2.4.1", - "range-parser": "^1.2.1", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/serialize-error": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-8.1.0.tgz", @@ -1889,105 +1076,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serve-static": { - "version": "2.2.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "parseurl": "^1.3.3", - "send": "^1.2.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/shimmer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==", "license": "BSD-2-Clause" }, - "node_modules/side-channel": { - "version": "1.1.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/sonic-boom": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", @@ -2006,32 +1100,6 @@ "node": ">= 10.x" } }, - "node_modules/statuses": { - "version": "2.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/streamsearch": { - "version": "1.1.0", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -2080,15 +1148,6 @@ "real-require": "^0.2.0" } }, - "node_modules/toidentifier": { - "version": "1.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/token-types": { "version": "6.1.1", "license": "MIT", @@ -2121,26 +1180,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is": { - "version": "2.0.1", - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/uid": { "version": "2.0.2", "license": "MIT", @@ -2167,45 +1206,6 @@ "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "license": "MIT" }, - "node_modules/unpipe": { - "version": "1.0.0", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT", - "optional": true, - "peer": true - }, - "node_modules/vary": { - "version": "1.1.2", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC", - "optional": true, - "peer": true - }, - "node_modules/xtend": { - "version": "4.0.2", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.4" - } - }, "node_modules/yallist": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js b/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js index 0463fad672..b0c81934a6 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js @@ -19,7 +19,7 @@ exports.registerTestHooks = opts => { const env = Object.create(process.env); env.AGENT_PORT = agentPort; - env.TRACING_ENABLED = opts.enableTracing !== false; + env.TRACING_ENABLED = 'enableTracing' in opts ? opts.enableTracing : false; env.INSTANA_RETRY_AGENT_CONNECTION_IN_MS = 100; app = spawn('node', [path.join(__dirname, `consumer${opts.apiType}.js`)], { diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js index a776156847..7fdbcd5dee 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js @@ -52,7 +52,12 @@ amqp }) .then(() => channel.consume(queueForExchangeName, msg => { - expect(msg.properties.headers).to.not.exist; + expect(msg.properties.headers['X-INSTANA-L']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-S']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-T']).to.not.exist; + expect(msg.properties.headers['x-instana-l']).to.not.exist; + expect(msg.properties.headers['x-instana-s']).to.not.exist; + expect(msg.properties.headers['x-instana-t']).to.not.exist; if (msg !== null) { log(msg.content.toString()); @@ -80,6 +85,13 @@ amqp ) .then(() => channel.consume(queueName, msg => { + expect(msg.properties.headers['X-INSTANA-L']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-S']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-T']).to.not.exist; + expect(msg.properties.headers['x-instana-l']).to.not.exist; + expect(msg.properties.headers['x-instana-s']).to.not.exist; + expect(msg.properties.headers['x-instana-t']).to.not.exist; + if (msg !== null) { log(msg.content.toString()); const span = instana.currentSpan(); diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/modes.json b/packages/collector/test/integration/currencies/messaging/amqplib/modes.json new file mode 100644 index 0000000000..3bc5eadfa7 --- /dev/null +++ b/packages/collector/test/integration/currencies/messaging/amqplib/modes.json @@ -0,0 +1 @@ +["Promises", "Callbacks"] diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js b/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js index 72a676dce2..e1b1f8b84d 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js @@ -25,7 +25,7 @@ exports.registerTestHooks = opts => { env.AGENT_PORT = agentControls.getPort(); env.APP_PORT = portfinder(); appPort = env.APP_PORT; - env.TRACING_ENABLED = opts.enableTracing !== false; + env.TRACING_ENABLED = 'enableTracing' in opts ? opts.enableTracing : false; env.INSTANA_RETRY_AGENT_CONNECTION_IN_MS = 100; app = spawn('node', [path.join(__dirname, `publisher${opts.apiType}.js`)], { diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js b/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js index 72496b833a..8431fd4e44 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/test_base.js @@ -22,7 +22,7 @@ const agentControls = globalAgent.instance; let publisherControls; let consumerControls; -module.exports = function (name, version, isLatest) { +module.exports = function (name, version, isLatest, mode) { this.timeout(config.getTestTimeout()); globalAgent.setUpCleanUpHooks(); @@ -36,51 +36,9 @@ module.exports = function (name, version, isLatest) { publisherControls = require('./publisherControls'); consumerControls = require('./consumerControls'); - ['Promises', 'Callbacks'].forEach(apiType => { - describe(apiType, function () { - registerTests.call(this, apiType); - }); - }); - - if (isLatest) { - describe('allowRootExitSpan', function () { - let controls; - - before(async () => { - controls = new ProcessControls({ - dirname: __dirname, - appName: 'allowRootExitSpanApp', - useGlobalAgent: true, - env: { - ...commonEnv, - INSTANA_ALLOW_ROOT_EXIT_SPAN: 1 - } - }); - - await controls.start(null, null, true); - }); - - beforeEach(async () => { - await agentControls.clearReceivedTraceData(); - }); - - it('must trace', async function () { - await retry(async () => { - const spans = await agentControls.getSpans(); - expect(spans.length).to.be.eql(1); - - expectExactlyOneMatching(spans, [ - span => expect(span.n).to.equal('rabbitmq'), - span => expect(span.k).to.equal(2) - ]); - }); - }); - }); - } - - function registerTests(apiType) { - publisherControls.registerTestHooks({ apiType }); - consumerControls.registerTestHooks({ apiType }); + describe(mode, function () { + publisherControls.registerTestHooks({ apiType: mode }); + consumerControls.registerTestHooks({ apiType: mode }); beforeEach(async () => { await agentControls.clearReceivedTraceData(); @@ -216,59 +174,124 @@ module.exports = function (name, version, isLatest) { .then(() => agentControls.getSpans()) .then(spans => expect(spans).to.be.empty)); }); + }); + + describe('tracing disabled', () => { + publisherControls.registerTestHooks({ apiType: 'Promises', enableTracing: false }); + consumerControls.registerTestHooks({ apiType: 'Promises', enableTracing: false }); + + beforeEach(async () => { + await agentControls.clearReceivedTraceData(); + }); - function verifyHttpEntry(spans) { - return expectExactlyOneMatching(spans, [ - span => expect(span.n).to.equal('node.http.server'), - span => expect(span.f.e).to.equal(String(publisherControls.getPid())), - span => expect(span.f.h).to.equal('agent-stub-uuid'), - span => expect(span.async).to.not.exist, - span => expect(span.error).to.not.exist, - span => expect(span.ec).to.equal(0) - ]); - } - - function verifyRabbitMqExit(spans, parentSpan) { - return expectExactlyOneMatching(spans, [ - span => expect(span.t).to.equal(parentSpan.t), - span => expect(span.p).to.equal(parentSpan.s), - span => expect(span.k).to.equal(constants.EXIT), - span => expect(span.n).to.equal('rabbitmq'), - span => expect(span.f.e).to.equal(String(publisherControls.getPid())), - span => expect(span.f.h).to.equal('agent-stub-uuid'), - span => expect(span.async).to.not.exist, - span => expect(span.error).to.not.exist, - span => expect(span.ec).to.equal(0), - span => expect(span.data.rabbitmq.sort).to.equal('publish'), - span => expect(span.data.rabbitmq.address).to.equal('amqp://127.0.0.1:5672') - ]); - } - - function verifyRabbitMqEntry(spans, parentSpan) { - return expectExactlyOneMatching(spans, [ - span => expect(span.t).to.equal(parentSpan.t), - span => expect(span.p).to.equal(parentSpan.s), - span => expect(span.n).to.equal('rabbitmq'), - span => expect(span.k).to.equal(constants.ENTRY), - span => expect(span.d).to.be.greaterThan(99), - span => expect(span.f.e).to.equal(String(consumerControls.getPid())), - span => expect(span.f.h).to.equal('agent-stub-uuid'), - span => expect(span.async).to.not.exist, - span => expect(span.error).to.not.exist, - span => expect(span.ec).to.equal(0), - span => expect(span.data.rabbitmq.sort).to.equal('consume'), - span => expect(span.data.rabbitmq.address).to.equal('amqp://127.0.0.1:5672') - ]); - } - - function verifyHttpExit(spans, parentSpan) { - return expectExactlyOneMatching(spans, [ - span => expect(span.n).to.equal('node.http.client'), - span => expect(span.t).to.equal(parentSpan.t), - span => expect(span.p).to.equal(parentSpan.s), - span => expect(span.k).to.equal(constants.EXIT), - span => expect(span.data.http.url).to.equal(`http://127.0.0.1:${agentControls.agentPort}/ping`) - ]); - } + beforeEach(() => + Promise.all([ + agentControls.waitUntilAppIsCompletelyInitialized(consumerControls.getPid()), + agentControls.waitUntilAppIsCompletelyInitialized(publisherControls.getPid()) + ]) + ); + + it('must not trace when tracing is disabled', () => + publisherControls + .sendToQueue('Ohai!') + .then(() => delay(1000)) + .then(() => agentControls.getSpans()) + .then(spans => { + spans.forEach(s => { + console.log(s); + }); + + expect(spans).to.be.empty; + })); + }); + + if (isLatest) { + describe('allowRootExitSpan', function () { + let controls; + + before(async () => { + controls = new ProcessControls({ + dirname: __dirname, + appName: 'allowRootExitSpanApp', + useGlobalAgent: true, + env: { + ...commonEnv, + INSTANA_ALLOW_ROOT_EXIT_SPAN: 1 + } + }); + + await controls.start(null, null, true); + }); + + beforeEach(async () => { + await agentControls.clearReceivedTraceData(); + }); + + it('must trace', async function () { + await retry(async () => { + const spans = await agentControls.getSpans(); + expect(spans.length).to.be.eql(1); + + expectExactlyOneMatching(spans, [ + span => expect(span.n).to.equal('rabbitmq'), + span => expect(span.k).to.equal(2) + ]); + }); + }); + }); } }; + +function verifyHttpEntry(spans) { + return expectExactlyOneMatching(spans, [ + span => expect(span.n).to.equal('node.http.server'), + span => expect(span.f.e).to.equal(String(publisherControls.getPid())), + span => expect(span.f.h).to.equal('agent-stub-uuid'), + span => expect(span.async).to.not.exist, + span => expect(span.error).to.not.exist, + span => expect(span.ec).to.equal(0) + ]); +} + +function verifyRabbitMqExit(spans, parentSpan) { + return expectExactlyOneMatching(spans, [ + span => expect(span.t).to.equal(parentSpan.t), + span => expect(span.p).to.equal(parentSpan.s), + span => expect(span.k).to.equal(constants.EXIT), + span => expect(span.n).to.equal('rabbitmq'), + span => expect(span.f.e).to.equal(String(publisherControls.getPid())), + span => expect(span.f.h).to.equal('agent-stub-uuid'), + span => expect(span.async).to.not.exist, + span => expect(span.error).to.not.exist, + span => expect(span.ec).to.equal(0), + span => expect(span.data.rabbitmq.sort).to.equal('publish'), + span => expect(span.data.rabbitmq.address).to.equal('amqp://127.0.0.1:5672') + ]); +} + +function verifyRabbitMqEntry(spans, parentSpan) { + return expectExactlyOneMatching(spans, [ + span => expect(span.t).to.equal(parentSpan.t), + span => expect(span.p).to.equal(parentSpan.s), + span => expect(span.n).to.equal('rabbitmq'), + span => expect(span.k).to.equal(constants.ENTRY), + span => expect(span.d).to.be.greaterThan(99), + span => expect(span.f.e).to.equal(String(consumerControls.getPid())), + span => expect(span.f.h).to.equal('agent-stub-uuid'), + span => expect(span.async).to.not.exist, + span => expect(span.error).to.not.exist, + span => expect(span.ec).to.equal(0), + span => expect(span.data.rabbitmq.sort).to.equal('consume'), + span => expect(span.data.rabbitmq.address).to.equal('amqp://127.0.0.1:5672') + ]); +} + +function verifyHttpExit(spans, parentSpan) { + return expectExactlyOneMatching(spans, [ + span => expect(span.n).to.equal('node.http.client'), + span => expect(span.t).to.equal(parentSpan.t), + span => expect(span.p).to.equal(parentSpan.s), + span => expect(span.k).to.equal(constants.EXIT), + span => expect(span.data.http.url).to.equal(`http://127.0.0.1:${agentControls.agentPort}/ping`) + ]); +} From 64e6f7f74010b1435cf09835979df85e1ea7006f Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 15 Apr 2026 12:26:29 +0200 Subject: [PATCH 7/9] chore: fixes --- .../currencies/messaging/amqplib/consumerControls.js | 2 +- .../currencies/messaging/amqplib/publisherControls.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js b/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js index b0c81934a6..9bfe642ebb 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/consumerControls.js @@ -19,7 +19,7 @@ exports.registerTestHooks = opts => { const env = Object.create(process.env); env.AGENT_PORT = agentPort; - env.TRACING_ENABLED = 'enableTracing' in opts ? opts.enableTracing : false; + env.TRACING_ENABLED = 'enableTracing' in opts ? opts.enableTracing : true; env.INSTANA_RETRY_AGENT_CONNECTION_IN_MS = 100; app = spawn('node', [path.join(__dirname, `consumer${opts.apiType}.js`)], { diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js b/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js index e1b1f8b84d..3816c4f26d 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/publisherControls.js @@ -25,7 +25,7 @@ exports.registerTestHooks = opts => { env.AGENT_PORT = agentControls.getPort(); env.APP_PORT = portfinder(); appPort = env.APP_PORT; - env.TRACING_ENABLED = 'enableTracing' in opts ? opts.enableTracing : false; + env.TRACING_ENABLED = 'enableTracing' in opts ? opts.enableTracing : true; env.INSTANA_RETRY_AGENT_CONNECTION_IN_MS = 100; app = spawn('node', [path.join(__dirname, `publisher${opts.apiType}.js`)], { From 3d7e55696c9373921d931aa731f69c32b6f7c939 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 15 Apr 2026 13:20:50 +0200 Subject: [PATCH 8/9] chore: debug --- .../integration/currencies/messaging/amqplib/consumerPromises.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js index 7fdbcd5dee..23cfba6df5 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js @@ -85,6 +85,7 @@ amqp ) .then(() => channel.consume(queueName, msg => { + console.log(msg); expect(msg.properties.headers['X-INSTANA-L']).to.not.exist; expect(msg.properties.headers['X-INSTANA-S']).to.not.exist; expect(msg.properties.headers['X-INSTANA-T']).to.not.exist; From dcc8f5f018485304a59f856f25df0510ede79705 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Wed, 15 Apr 2026 14:05:01 +0200 Subject: [PATCH 9/9] chore: fixes --- docker-compose-base.yaml | 2 +- .../messaging/amqplib/consumerPromises.js | 29 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/docker-compose-base.yaml b/docker-compose-base.yaml index 6bd9859b16..89133e9e59 100644 --- a/docker-compose-base.yaml +++ b/docker-compose-base.yaml @@ -163,7 +163,7 @@ services: MSSQL_SA_PASSWORD: stanCanHazMsSQL1 rabbitmq: - image: public.ecr.aws/docker/library/rabbitmq:3.13.7-alpine + image: public.ecr.aws/docker/library/rabbitmq:3.13.0 pull_policy: if_not_present ports: - 5671:5671 diff --git a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js index 23cfba6df5..d424c3fbef 100644 --- a/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js +++ b/packages/collector/test/integration/currencies/messaging/amqplib/consumerPromises.js @@ -52,12 +52,14 @@ amqp }) .then(() => channel.consume(queueForExchangeName, msg => { - expect(msg.properties.headers['X-INSTANA-L']).to.not.exist; - expect(msg.properties.headers['X-INSTANA-S']).to.not.exist; - expect(msg.properties.headers['X-INSTANA-T']).to.not.exist; - expect(msg.properties.headers['x-instana-l']).to.not.exist; - expect(msg.properties.headers['x-instana-s']).to.not.exist; - expect(msg.properties.headers['x-instana-t']).to.not.exist; + if (msg.properties.headers) { + expect(msg.properties.headers['X-INSTANA-L']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-S']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-T']).to.not.exist; + expect(msg.properties.headers['x-instana-l']).to.not.exist; + expect(msg.properties.headers['x-instana-s']).to.not.exist; + expect(msg.properties.headers['x-instana-t']).to.not.exist; + } if (msg !== null) { log(msg.content.toString()); @@ -85,13 +87,14 @@ amqp ) .then(() => channel.consume(queueName, msg => { - console.log(msg); - expect(msg.properties.headers['X-INSTANA-L']).to.not.exist; - expect(msg.properties.headers['X-INSTANA-S']).to.not.exist; - expect(msg.properties.headers['X-INSTANA-T']).to.not.exist; - expect(msg.properties.headers['x-instana-l']).to.not.exist; - expect(msg.properties.headers['x-instana-s']).to.not.exist; - expect(msg.properties.headers['x-instana-t']).to.not.exist; + if (msg.properties.headers) { + expect(msg.properties.headers['X-INSTANA-L']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-S']).to.not.exist; + expect(msg.properties.headers['X-INSTANA-T']).to.not.exist; + expect(msg.properties.headers['x-instana-l']).to.not.exist; + expect(msg.properties.headers['x-instana-s']).to.not.exist; + expect(msg.properties.headers['x-instana-t']).to.not.exist; + } if (msg !== null) { log(msg.content.toString());