From 6d31df83498a2cc78d9328f9cd69e178fba3dbfd Mon Sep 17 00:00:00 2001 From: Yaniv Davidi Date: Wed, 25 Aug 2021 16:42:23 +0300 Subject: [PATCH 1/6] chore(mysql2): adding TAV script --- plugins/node/opentelemetry-instrumentation-mysql2/.tav.yml | 6 ++++++ .../node/opentelemetry-instrumentation-mysql2/package.json | 2 ++ 2 files changed, 8 insertions(+) create mode 100644 plugins/node/opentelemetry-instrumentation-mysql2/.tav.yml diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/.tav.yml b/plugins/node/opentelemetry-instrumentation-mysql2/.tav.yml new file mode 100644 index 0000000000..d792dfa3d1 --- /dev/null +++ b/plugins/node/opentelemetry-instrumentation-mysql2/.tav.yml @@ -0,0 +1,6 @@ +mysql2: + versions: 2.* + commands: npm run test + + # Fix missing `test-utils` package + pretest: npm run --prefix ../../../ lerna:link diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index f5de27288f..3570713ea6 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -15,6 +15,7 @@ "prepare": "npm run compile", "tdd": "npm run test -- --watch-extensions ts --watch", "test": "nyc ts-mocha -p tsconfig.json 'test/**/*.test.ts'", + "test-all-versions": "tav", "version:update": "node ../../../scripts/version-update.js" }, "keywords": [ @@ -58,6 +59,7 @@ "mysql2": "2.3.0", "nyc": "15.1.0", "rimraf": "3.0.2", + "test-all-versions": "^5.0.1", "ts-mocha": "8.0.0", "typescript": "4.3.5" }, From 33126c00a670f1352b8e7276155f2fb606727ae0 Mon Sep 17 00:00:00 2001 From: Yaniv Davidi Date: Mon, 30 Aug 2021 11:13:18 +0300 Subject: [PATCH 2/6] chore: add testUtils getPackageVersion helper --- packages/opentelemetry-test-utils/test-utils.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/opentelemetry-test-utils/test-utils.ts b/packages/opentelemetry-test-utils/test-utils.ts index f508ee977d..a2b66c61c2 100644 --- a/packages/opentelemetry-test-utils/test-utils.ts +++ b/packages/opentelemetry-test-utils/test-utils.ts @@ -28,6 +28,7 @@ import { hrTimeToMilliseconds, hrTimeToMicroseconds, } from '@opentelemetry/core'; +import * as path from 'path'; const dockerRunCmds = { cassandra: @@ -135,3 +136,9 @@ export interface TimedEvent { /** The attributes of the event. */ attributes?: SpanAttributes; } + +export const getPackageVersion = (packageName: string) => { + const packagePath = require.resolve(packageName); + const packageJsonPath = path.join(path.dirname(packagePath), 'package.json'); + return require(packageJsonPath).version; +} From 2a017da4756b69ae710ee241013250c4dbc8a8bd Mon Sep 17 00:00:00 2001 From: Yaniv Davidi Date: Mon, 30 Aug 2021 11:31:18 +0300 Subject: [PATCH 3/6] chore: skip poolCluster.end callback for unsupported versions --- .../test/mysql.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts index 6f010f7bd0..7cf9e609d6 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts @@ -27,6 +27,7 @@ import { import * as assert from 'assert'; import { MySQL2Instrumentation } from '../src'; +const LIB_VERSION = testUtils.getPackageVersion('mysql2'); const port = Number(process.env.MYSQL_PORT) || 33306; const database = process.env.MYSQL_DATABASE || 'test_db'; const host = process.env.MYSQL_HOST || '127.0.0.1'; @@ -122,6 +123,10 @@ describe('mysql@2.x', () => { (poolCluster as any).end(() => { done(); }); + + if (shouldIgnorePoolClusterEndCallback()) { + done(); + } }); }); }); @@ -659,3 +664,9 @@ function assertSpan( assert.strictEqual(span.status.code, SpanStatusCode.ERROR); } } + +function shouldIgnorePoolClusterEndCallback() { + // Since v2.2.0 `end` function respect callback + // https://github.com/sidorares/node-mysql2/commit/1481015626e506754adc4308e5508356a3a03aa0 + return ['2.0.0', '2.0.1', '2.0.2', '2.1.0'].includes(LIB_VERSION); +} From 0833db7b26fbe67c4e9735164edd8961f2f83ccd Mon Sep 17 00:00:00 2001 From: Yaniv Davidi Date: Mon, 30 Aug 2021 11:34:48 +0300 Subject: [PATCH 4/6] chore: use exact version for test-all-versions --- plugins/node/opentelemetry-instrumentation-mysql2/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/package.json b/plugins/node/opentelemetry-instrumentation-mysql2/package.json index 2d9107603f..630a692bb9 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/package.json +++ b/plugins/node/opentelemetry-instrumentation-mysql2/package.json @@ -59,7 +59,7 @@ "mysql2": "2.3.0", "nyc": "15.1.0", "rimraf": "3.0.2", - "test-all-versions": "^5.0.1", + "test-all-versions": "5.0.1", "ts-mocha": "8.0.0", "typescript": "4.3.5" }, From 3580e2a358c326c1e635f51f200d827cee08a58d Mon Sep 17 00:00:00 2001 From: Yaniv Davidi Date: Mon, 30 Aug 2021 11:45:33 +0300 Subject: [PATCH 5/6] chore: fix lint error --- packages/opentelemetry-test-utils/test-utils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opentelemetry-test-utils/test-utils.ts b/packages/opentelemetry-test-utils/test-utils.ts index 05c8a056c6..2bc401429b 100644 --- a/packages/opentelemetry-test-utils/test-utils.ts +++ b/packages/opentelemetry-test-utils/test-utils.ts @@ -141,4 +141,4 @@ export const getPackageVersion = (packageName: string) => { const packagePath = require.resolve(packageName); const packageJsonPath = path.join(path.dirname(packagePath), 'package.json'); return require(packageJsonPath).version; -} +}; From 5c8dc00eff81288a58ce8b8bf61c20ea619f8659 Mon Sep 17 00:00:00 2001 From: Yaniv Davidi Date: Mon, 30 Aug 2021 11:58:30 +0300 Subject: [PATCH 6/6] test: don't pass callback when ignored --- .../test/mysql.test.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts index 328c76e7bf..65363a2cdb 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts @@ -118,14 +118,15 @@ describe('mysql@2.x', () => { instrumentation.disable(); connection.end(() => { pool.end(() => { - // PoolCluster.end types in the package are invalid - // https://github.com/sidorares/node-mysql2/pull/1332 - (poolCluster as any).end(() => { - done(); - }); - - if (shouldIgnorePoolClusterEndCallback()) { + if (isPoolClusterEndIgnoreCallback()) { + poolCluster.end(); done(); + } else { + // PoolCluster.end types in the package are invalid + // https://github.com/sidorares/node-mysql2/pull/1332 + (poolCluster as any).end(() => { + done(); + }); } }); }); @@ -665,7 +666,7 @@ function assertSpan( } } -function shouldIgnorePoolClusterEndCallback() { +function isPoolClusterEndIgnoreCallback() { // Since v2.2.0 `end` function respect callback // https://github.com/sidorares/node-mysql2/commit/1481015626e506754adc4308e5508356a3a03aa0 return ['2.0.0', '2.0.1', '2.0.2', '2.1.0'].includes(LIB_VERSION);