From ac6eed19b6c15beb70a23b901faddcbc58a4c089 Mon Sep 17 00:00:00 2001 From: Michele Azzolari Date: Tue, 21 Jan 2025 13:34:03 +0100 Subject: [PATCH] test(instrumentation-mysql2): import types and objects separately to improve readability Update plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts --- .../test/mysql.test.ts | 113 +++++++++--------- 1 file changed, 57 insertions(+), 56 deletions(-) diff --git a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts index baa8c6ae5f..dd7c161cae 100644 --- a/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts +++ b/plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts @@ -48,10 +48,11 @@ const instrumentation = new MySQL2Instrumentation(); instrumentation.enable(); instrumentation.disable(); -import * as mysqlTypes from 'mysql2'; -import * as mysqlTypesProm from 'mysql2/promise'; +import type { Connection, Pool, PoolCluster, RowDataPacket } from 'mysql2'; +import { createConnection, createPool, createPoolCluster, format } from 'mysql2'; +import type { Connection as ConnectionAsync, createConnection as createConnectionAsync } from 'mysql2/promise'; -interface Result extends mysqlTypes.RowDataPacket { +interface Result extends RowDataPacket { solution: number; } @@ -84,10 +85,10 @@ describe('mysql2', () => { const provider = new BasicTracerProvider(); const memoryExporter = new InMemorySpanExporter(); - let connection: mysqlTypes.Connection; - let rootConnection: mysqlTypes.Connection; - let pool: mysqlTypes.Pool; - let poolCluster: mysqlTypes.PoolCluster; + let connection: Connection; + let rootConnection: Connection; + let pool: Pool; + let poolCluster: PoolCluster; const getLastQueries = (count: number) => new Promise(res => { @@ -115,7 +116,7 @@ describe('mysql2', () => { this.skip(); } provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); - rootConnection = mysqlTypes.createConnection({ + rootConnection = createConnection({ port, user: 'root', host, @@ -137,21 +138,21 @@ describe('mysql2', () => { context.setGlobalContextManager(contextManager); instrumentation.setTracerProvider(provider); instrumentation.enable(); - connection = mysqlTypes.createConnection({ + connection = createConnection({ port, user, host, password, database, }); - pool = mysqlTypes.createPool({ + pool = createPool({ port, user, host, password, database, }); - poolCluster = mysqlTypes.createPoolCluster(); + poolCluster = createPoolCluster(); // the implementation actually accepts ConnectionConfig as well, // but the types do not reflect that poolCluster.add('name', { @@ -229,7 +230,7 @@ describe('mysql2', () => { const query = connection.query(sql); let rows = 0; - query.on('result', (row: mysqlTypes.RowDataPacket) => { + query.on('result', (row: RowDataPacket) => { assert.strictEqual(row.solution, 2); rows += 1; }); @@ -252,7 +253,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; - connection.query(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + connection.query(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -270,7 +271,7 @@ describe('mysql2', () => { const sql = 'SELECT 1+? as solution'; connection.query( { sql, values: [1] }, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -290,7 +291,7 @@ describe('mysql2', () => { connection.query( { sql }, [1], - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -307,7 +308,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT ? as solution'; - connection.query(sql, [1], (err, res: mysqlTypes.RowDataPacket[]) => { + connection.query(sql, [1], (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 1); @@ -323,7 +324,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT ? as solution'; - connection.query(sql, 1, (err, res: mysqlTypes.RowDataPacket[]) => { + connection.query(sql, 1, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 1); @@ -427,7 +428,7 @@ describe('mysql2', () => { const query = connection.execute(sql); let rows = 0; - query.on('result', (row: mysqlTypes.RowDataPacket) => { + query.on('result', (row: RowDataPacket) => { assert.strictEqual(row.solution, 2); rows += 1; }); @@ -446,7 +447,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; - connection.execute(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + connection.execute(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -464,7 +465,7 @@ describe('mysql2', () => { const sql = 'SELECT 1+? as solution'; connection.execute( { sql, values: [1] }, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -484,7 +485,7 @@ describe('mysql2', () => { connection.execute( { sql }, [1], - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -504,7 +505,7 @@ describe('mysql2', () => { connection.execute( sql, [1], - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -524,7 +525,7 @@ describe('mysql2', () => { connection.execute( sql, [1], - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -560,7 +561,7 @@ describe('mysql2', () => { const query = pool.query(sql); let rows = 0; - query.on('result', (row: mysqlTypes.RowDataPacket) => { + query.on('result', (row: RowDataPacket) => { assert.strictEqual(row.solution, 2); rows += 1; }); @@ -583,7 +584,7 @@ describe('mysql2', () => { const query = conn.query(sql); let rows = 0; - query.on('result', (row: mysqlTypes.RowDataPacket) => { + query.on('result', (row: RowDataPacket) => { assert.strictEqual(row.solution, 2); rows += 1; }); @@ -603,7 +604,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; - pool.query(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + pool.query(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -620,7 +621,7 @@ describe('mysql2', () => { context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; pool.getConnection((err, conn) => { - conn.query(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + conn.query(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -639,7 +640,7 @@ describe('mysql2', () => { const sql = 'SELECT 1+? as solution'; pool.query( { sql, values: [1] }, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -656,7 +657,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+? as solution'; - pool.query({ sql }, [1], (err, res: mysqlTypes.RowDataPacket[]) => { + pool.query({ sql }, [1], (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -672,7 +673,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT ? as solution'; - pool.query(sql, [1], (err, res: mysqlTypes.RowDataPacket[]) => { + pool.query(sql, [1], (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 1); @@ -688,7 +689,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT ? as solution'; - pool.query(sql, 1, (err, res: mysqlTypes.RowDataPacket[]) => { + pool.query(sql, 1, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 1); @@ -785,7 +786,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; - pool.execute(sql, (err, row: mysqlTypes.RowDataPacket[]) => { + pool.execute(sql, (err, row: RowDataPacket[]) => { assert(!err); assert.strictEqual(row[0].solution, 2); const spans = memoryExporter.getFinishedSpans(); @@ -804,7 +805,7 @@ describe('mysql2', () => { const query = conn.execute(sql); let rows = 0; - query.on('result', (row: mysqlTypes.RowDataPacket) => { + query.on('result', (row: RowDataPacket) => { assert.strictEqual(row.solution, 2); rows += 1; }); @@ -824,7 +825,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; - pool.execute(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + pool.execute(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -841,7 +842,7 @@ describe('mysql2', () => { context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; pool.getConnection((err, conn) => { - conn.execute(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + conn.execute(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -860,7 +861,7 @@ describe('mysql2', () => { const sql = 'SELECT 1+? as solution'; pool.execute( { sql, values: [1] }, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -877,7 +878,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+? as solution'; - pool.execute({ sql }, [1], (err, res: mysqlTypes.RowDataPacket[]) => { + pool.execute({ sql }, [1], (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -893,7 +894,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+? as solution'; - pool.execute(sql, [1], (err, res: mysqlTypes.RowDataPacket[]) => { + pool.execute(sql, [1], (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -909,7 +910,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+? as solution'; - pool.execute(sql, [1], (err, res: mysqlTypes.RowDataPacket[]) => { + pool.execute(sql, [1], (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -946,7 +947,7 @@ describe('mysql2', () => { const query = poolClusterConnection.query(sql); let rows = 0; - query.on('result', (row: mysqlTypes.RowDataPacket) => { + query.on('result', (row: RowDataPacket) => { assert.strictEqual(row.solution, 2); rows += 1; }); @@ -970,7 +971,7 @@ describe('mysql2', () => { const sql = 'SELECT 1+1 as solution'; poolClusterConnection.query( sql, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -992,7 +993,7 @@ describe('mysql2', () => { const sql = 'SELECT 1+? as solution'; poolClusterConnection.query( { sql, values: [1] }, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -1015,7 +1016,7 @@ describe('mysql2', () => { poolClusterConnection.query( { sql }, [1], - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -1038,7 +1039,7 @@ describe('mysql2', () => { poolClusterConnection.query( sql, [1], - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 1); @@ -1061,7 +1062,7 @@ describe('mysql2', () => { poolClusterConnection.query( sql, 1, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 1); @@ -1145,7 +1146,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; - connection.query(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + connection.query(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -1172,7 +1173,7 @@ describe('mysql2', () => { const span = provider.getTracer('default').startSpan('test span'); context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; - connection.query(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + connection.query(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -1193,7 +1194,7 @@ describe('mysql2', () => { context.with(trace.setSpan(context.active(), span), () => { const sql = 'SELECT 1+1 as solution'; pool.getConnection((err, conn) => { - conn.query(sql, (err, res: mysqlTypes.RowDataPacket[]) => { + conn.query(sql, (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -1218,7 +1219,7 @@ describe('mysql2', () => { const sql = 'SELECT 1+1 as solution'; poolClusterConnection.query( sql, - (err, res: mysqlTypes.RowDataPacket[]) => { + (err, res: RowDataPacket[]) => { assert.ifError(err); assert.ok(res); assert.strictEqual(res[0].solution, 2); @@ -1246,9 +1247,9 @@ describe('mysql2', () => { const provider = new BasicTracerProvider({ spanProcessors: [new SimpleSpanProcessor(memoryExporter)], }); - let connection: mysqlTypesProm.Connection; - let rootConnection: mysqlTypesProm.Connection; - let mysqlTypesPromReload: typeof mysqlTypesProm; + let connection: ConnectionAsync; + let rootConnection: ConnectionAsync; + let createConnection: typeof createConnectionAsync; before(async function () { // cleanup cache for 'mysql2' @@ -1267,7 +1268,7 @@ describe('mysql2', () => { instrumentation.enable(); instrumentation.disable(); - mysqlTypesPromReload = await import('mysql2/promise'); + createConnection = (await import('mysql2/promise')).createConnection; if (!shouldTest) { // this.skip() workaround @@ -1275,7 +1276,7 @@ describe('mysql2', () => { this.test!.parent!.pending = true; this.skip(); } - rootConnection = await mysqlTypesPromReload.createConnection({ + rootConnection = await createConnection({ port, user: 'root', host, @@ -1294,7 +1295,7 @@ describe('mysql2', () => { context.setGlobalContextManager(contextManager); instrumentation.setTracerProvider(provider); instrumentation.enable(); - connection = await mysqlTypesPromReload.createConnection({ + connection = await createConnection({ port, user, host, @@ -1377,7 +1378,7 @@ function assertSpan( assert.strictEqual(span.attributes[SEMATTRS_DB_USER], user); assert.strictEqual( span.attributes[SEMATTRS_DB_STATEMENT], - mysqlTypes.format(sql, values) + format(sql, values) ); if (errorMessage) { assert.strictEqual(span.status.message, errorMessage);