diff --git a/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app.js b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app.js index 7c5c390793..3786ac7ad7 100644 --- a/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app.js +++ b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app.js @@ -11,6 +11,7 @@ process.on('SIGTERM', () => { process.exit(0); }); +require('./mockVersion'); require('../../../..')(); const cls = require('../../../../../core/src/tracing/cls'); diff --git a/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app_v2.js b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app_v2.js index 393acf7b08..a58355bbff 100644 --- a/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app_v2.js +++ b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/app_v2.js @@ -10,13 +10,14 @@ process.on('SIGTERM', () => { process.exit(0); }); +require('./mockVersion'); require('../../../..')(); const cls = require('../../../../../core/src/tracing/cls'); const express = require('express'); const morgan = require('morgan'); -const graphqlSubscriptions = require('graphql-subscriptions-v2'); +const graphqlSubscriptions = require('graphql-subscriptions'); const port = require('../../../test_util/app-port')(); const pubsub = new graphqlSubscriptions.PubSub(); diff --git a/packages/collector/test/tracing/control_flow/pubsub_async_iterator/mockVersion.js b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/mockVersion.js new file mode 100644 index 0000000000..ea487e08a8 --- /dev/null +++ b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/mockVersion.js @@ -0,0 +1,30 @@ +/* + * (c) Copyright IBM Corp. 2024 + */ + +'use strict'; + +const mock = require('mock-require'); +const hook = require('../../../../../core/src/util/hook'); + +const GRAPHQL_SUBSCRIPTIONS_VERSION = process.env.GRAPHQL_SUBSCRIPTIONS_VERSION; +const GRAPHQL_SUBSCRIPTIONS_REQUIRE = + process.env.GRAPHQL_SUBSCRIPTIONS_VERSION === 'latest' + ? 'graphql-subscriptions' + : `graphql-subscriptions-${GRAPHQL_SUBSCRIPTIONS_VERSION}`; + +if (GRAPHQL_SUBSCRIPTIONS_REQUIRE !== 'graphql-subscriptions') { + mock('graphql-subscriptions', GRAPHQL_SUBSCRIPTIONS_REQUIRE); +} + +const originalOnFileLoad = hook.onFileLoad; +hook.onFileLoad = function onFileLoad() { + if (arguments[0].source === '\\/graphql-subscriptions\\/dist\\/pubsub-async-iterator\\.js') { + const str = arguments[0].source.replace('graphql-subscriptions', GRAPHQL_SUBSCRIPTIONS_REQUIRE); + const reg = new RegExp(str, ''); + arguments[0] = reg; + return originalOnFileLoad.apply(this, arguments); + } + + return originalOnFileLoad.apply(this, arguments); +}; diff --git a/packages/collector/test/tracing/control_flow/pubsub_async_iterator/test.js b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/test.js index 76d1ca2c1c..41b521ce61 100644 --- a/packages/collector/test/tracing/control_flow/pubsub_async_iterator/test.js +++ b/packages/collector/test/tracing/control_flow/pubsub_async_iterator/test.js @@ -13,7 +13,7 @@ const config = require('../../../../../core/test/config'); const ProcessControls = require('../../../test_util/ProcessControls'); const globalAgent = require('../../../globalAgent'); -const mochaSuiteFn = supportedVersion(process.versions.node) ? describe.only : describe.skip; +const mochaSuiteFn = supportedVersion(process.versions.node) ? describe : describe.skip; ['latest', 'v2'].forEach(version => { mochaSuiteFn(`tracing/graphql-subscriptions@${version} - PubSub/async iterator (pull before push)`, function () { @@ -24,7 +24,10 @@ const mochaSuiteFn = supportedVersion(process.versions.node) ? describe.only : d before(async () => { controls = new ProcessControls({ - appPath: version === 'v2' ? path.join(__dirname, 'app_v2') : path.join(__dirname, 'app'), + appPath: version === 'latest' ? path.join(__dirname, 'app') : path.join(__dirname, 'app_v2'), + env: { + GRAPHQL_SUBSCRIPTIONS_VERSION: version + }, useGlobalAgent: true });