From ac2b27d6fcd8ea1c182e43a4ef7e9b102312c568 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Tue, 25 Nov 2025 09:41:03 +0100 Subject: [PATCH 1/4] test: added test for INSTANA_TRACE_IMMEDIATELY refs https://jsw.ibm.com/browse/INSTA-43861 --- packages/collector/test/apps/agentStub.js | 10 +++ .../collector/test/apps/agentStubControls.js | 4 + .../tracing/misc/activate_immediately/app.js | 40 ++++++++++ .../tracing/misc/activate_immediately/test.js | 78 +++++++++++++++++++ 4 files changed, 132 insertions(+) create mode 100644 packages/collector/test/tracing/misc/activate_immediately/app.js create mode 100644 packages/collector/test/tracing/misc/activate_immediately/test.js diff --git a/packages/collector/test/apps/agentStub.js b/packages/collector/test/apps/agentStub.js index 05799b9f06..8923789ac3 100644 --- a/packages/collector/test/apps/agentStub.js +++ b/packages/collector/test/apps/agentStub.js @@ -29,6 +29,7 @@ if (process.env.INSTANA_DEBUG === 'true') { // NOTE: we can leave the hardcoded port here as this file is not used in the test env! const port = process.env.AGENT_PORT || 42699; const uniqueAgentUuids = process.env.AGENT_UNIQUE_UUIDS === 'true'; +const slowHostResponse = process.env.SLOW_HOST_RESPONSE === 'true'; const extraHeaders = process.env.EXTRA_HEADERS ? process.env.EXTRA_HEADERS.split(',') : []; const secretsMatcher = process.env.SECRETS_MATCHER ? process.env.SECRETS_MATCHER : 'contains-ignore-case'; const secretsList = process.env.SECRETS_LIST ? process.env.SECRETS_LIST.split(',') : ['pass', 'secret', 'token']; @@ -67,6 +68,14 @@ app.use( // Use this endpoint for the "checkHost" (agentHostLookup) functionality. app.get('/', (req, res) => { + if (slowHostResponse) { + setTimeout(() => { + res.json({ version: '1.1.999' }); + }, 1000 * 3); + + return; + } + res.json({ version: '1.1.999' }); }); @@ -133,6 +142,7 @@ app.put('/com.instana.plugin.nodejs.discovery', (req, res) => { response.tracing.disable = disable; } } + res.send(response); }); diff --git a/packages/collector/test/apps/agentStubControls.js b/packages/collector/test/apps/agentStubControls.js index 6088dbd2b6..8f5d16ae97 100644 --- a/packages/collector/test/apps/agentStubControls.js +++ b/packages/collector/test/apps/agentStubControls.js @@ -42,6 +42,10 @@ class AgentStubControls { env.SLOW_METRICS_REPLY = opts.slowMetricsReply.toString(); } + if (opts.slowHostResponse) { + env.SLOW_HOST_RESPONSE = opts.slowHostResponse.toString(); + } + if (opts.enableSpanBatching) { env.ENABLE_SPANBATCHING = 'true'; } diff --git a/packages/collector/test/tracing/misc/activate_immediately/app.js b/packages/collector/test/tracing/misc/activate_immediately/app.js new file mode 100644 index 0000000000..be8895a378 --- /dev/null +++ b/packages/collector/test/tracing/misc/activate_immediately/app.js @@ -0,0 +1,40 @@ +/* + * (c) Copyright IBM Corp. 2021 + * (c) Copyright Instana Inc. and contributors 2019 + */ + +'use strict'; + +// NOTE: c8 bug https://github.com/bcoe/c8/issues/166 +process.on('SIGTERM', () => { + process.disconnect(); + process.exit(0); +}); + +require('../../../..')(); + +const logPrefix = `Activate Immediately App (${process.pid}):\t`; +const port = require('../../../test_util/app-port')(); +const express = require('express'); +const app = express(); +const agentPort = process.env.INSTANA_AGENT_PORT; + +app.get('/', (req, res) => { + res.send(); +}); + +app.get('/trigger', async (req, res) => { + await fetch(`http://localhost:${agentPort}/ping`); + res.send(); +}); + +app.listen(port, () => { + log(`Listening on port: ${port}`); +}); + +function log() { + /* eslint-disable no-console */ + const args = Array.prototype.slice.call(arguments); + args[0] = logPrefix + args[0]; + console.log.apply(console, args); +} diff --git a/packages/collector/test/tracing/misc/activate_immediately/test.js b/packages/collector/test/tracing/misc/activate_immediately/test.js new file mode 100644 index 0000000000..dc67e5d1f8 --- /dev/null +++ b/packages/collector/test/tracing/misc/activate_immediately/test.js @@ -0,0 +1,78 @@ +/* + * (c) Copyright IBM Corp. 2025 + */ + +'use strict'; + +const expect = require('chai').expect; +const constants = require('@instana/core').tracing.constants; +const supportedVersion = require('@instana/core').tracing.supportedVersion; +const config = require('../../../../../core/test/config'); +const testUtils = require('../../../../../core/test/test_util'); +const ProcessControls = require('../../../test_util/ProcessControls'); +const { AgentStubControls } = require('../../../apps/agentStubControls'); +const mochaSuiteFn = supportedVersion(process.versions.node) ? describe : describe.skip; + +mochaSuiteFn.only('tracing/activateImmediately', function () { + this.timeout(config.getTestTimeout()); + + let customAgent; + let appControls; + + before(async () => { + customAgent = new AgentStubControls(); + + await customAgent.startAgent({ + slowHostResponse: true + }); + + appControls = new ProcessControls({ + dirname: __dirname, + useGlobalAgent: true, + agentControls: customAgent, + collectorUninitialized: true, + env: { + INSTANA_TRACE_IMMEDIATELY: 'true', + INSTANA_AGENT_REQUEST_TIMEOUT: '6000' + } + }); + + await appControls.start(); + await testUtils.delay(100); + + await appControls.sendRequest({ + method: 'GET', + path: '/trigger' + }); + }); + + beforeEach(async () => { + await customAgent.clearReceivedTraceData(); + }); + + after(async () => { + await appControls.stop(); + }); + + afterEach(async () => { + await appControls.clearIpcMessages(); + }); + + it('must trace', async () => { + return testUtils.retry(() => + customAgent.getSpans().then(spans => { + expect(spans.length).to.equal(2); + + testUtils.expectExactlyOneMatching(spans, [ + span => expect(span.n).to.equal('node.http.server'), + span => expect(span.k).to.equal(constants.ENTRY) + ]); + + testUtils.expectExactlyOneMatching(spans, [ + span => expect(span.n).to.equal('node.http.client'), + span => expect(span.k).to.equal(constants.EXIT) + ]); + }) + ); + }); +}); From 239047931fc3eeee1affdf0336dba7a88da6b100 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Fri, 14 Nov 2025 12:41:46 +0100 Subject: [PATCH 2/4] chore: rem only --- .../collector/test/tracing/misc/activate_immediately/test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/collector/test/tracing/misc/activate_immediately/test.js b/packages/collector/test/tracing/misc/activate_immediately/test.js index dc67e5d1f8..f966480d8f 100644 --- a/packages/collector/test/tracing/misc/activate_immediately/test.js +++ b/packages/collector/test/tracing/misc/activate_immediately/test.js @@ -13,7 +13,7 @@ const ProcessControls = require('../../../test_util/ProcessControls'); const { AgentStubControls } = require('../../../apps/agentStubControls'); const mochaSuiteFn = supportedVersion(process.versions.node) ? describe : describe.skip; -mochaSuiteFn.only('tracing/activateImmediately', function () { +mochaSuiteFn('tracing/activateImmediately', function () { this.timeout(config.getTestTimeout()); let customAgent; From f8f14b4355c8be3bd2728552c1a53b5773065838 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Fri, 14 Nov 2025 12:42:20 +0100 Subject: [PATCH 3/4] chore: fixed cr --- .../collector/test/tracing/misc/activate_immediately/app.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/collector/test/tracing/misc/activate_immediately/app.js b/packages/collector/test/tracing/misc/activate_immediately/app.js index be8895a378..6d6e06c009 100644 --- a/packages/collector/test/tracing/misc/activate_immediately/app.js +++ b/packages/collector/test/tracing/misc/activate_immediately/app.js @@ -1,6 +1,5 @@ /* - * (c) Copyright IBM Corp. 2021 - * (c) Copyright Instana Inc. and contributors 2019 + * (c) Copyright IBM Corp. 2025 */ 'use strict'; From 93c1b9f868d1e8e4b2b3c9619604bab5a83b07b7 Mon Sep 17 00:00:00 2001 From: kirrg001 Date: Tue, 25 Nov 2025 14:48:14 +0100 Subject: [PATCH 4/4] test: fixed tests --- .../collector/test/tracing/misc/activate_immediately/test.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/collector/test/tracing/misc/activate_immediately/test.js b/packages/collector/test/tracing/misc/activate_immediately/test.js index f966480d8f..767a1defca 100644 --- a/packages/collector/test/tracing/misc/activate_immediately/test.js +++ b/packages/collector/test/tracing/misc/activate_immediately/test.js @@ -52,6 +52,7 @@ mochaSuiteFn('tracing/activateImmediately', function () { after(async () => { await appControls.stop(); + await customAgent.stopAgent(); }); afterEach(async () => {