Skip to content

Commit

Permalink
style: lint everything
Browse files Browse the repository at this point in the history
  • Loading branch information
rauno56 committed Jun 4, 2021
1 parent 1308e10 commit 2a66655
Show file tree
Hide file tree
Showing 3 changed files with 143 additions and 99 deletions.
Expand Up @@ -23,7 +23,12 @@ import {
import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
import type * as mysqlTypes from 'mysql2';
import { MySQL2InstrumentationConfig } from './types';
import { getConnectionAttributes, getDbStatement, getSpanName, once } from './utils';
import {
getConnectionAttributes,
getDbStatement,
getSpanName,
once,
} from './utils';
import { VERSION } from './version';

type formatType = typeof mysqlTypes.format;
Expand All @@ -48,7 +53,8 @@ export class MySQLInstrumentation extends InstrumentationBase<
(moduleExports: any, moduleVersion) => {
api.diag.debug(`Patching mysql@${moduleVersion}`);

const ConnectionPrototype: mysqlTypes.Connection = moduleExports.Connection.prototype;
const ConnectionPrototype: mysqlTypes.Connection =
moduleExports.Connection.prototype;
api.diag.debug('Patching Connection.prototype.query');
if (isWrapped(ConnectionPrototype.query)) {
this._unwrap(ConnectionPrototype, 'query');
Expand All @@ -63,16 +69,15 @@ export class MySQLInstrumentation extends InstrumentationBase<
},
(moduleExports: any) => {
if (moduleExports === undefined) return;
const ConnectionPrototype: mysqlTypes.Connection = moduleExports.Connection.prototype;
const ConnectionPrototype: mysqlTypes.Connection =
moduleExports.Connection.prototype;
this._unwrap(ConnectionPrototype, 'query');
}
),
];
}

private _patchQuery(
format: formatType
) {
private _patchQuery(format: formatType) {
return (originalQuery: Function): Function => {
const thisPlugin = this;
api.diag.debug('MySQLInstrumentation: patched mysql query');
Expand All @@ -95,7 +100,11 @@ export class MySQLInstrumentation extends InstrumentationBase<
attributes: {
...MySQLInstrumentation.COMMON_ATTRIBUTES,
...getConnectionAttributes(this.config),
[SemanticAttributes.DB_STATEMENT]: getDbStatement(query, format, values),
[SemanticAttributes.DB_STATEMENT]: getDbStatement(
query,
format,
values
),
},
});
const endSpan = once((err?: any) => {
Expand All @@ -110,7 +119,11 @@ export class MySQLInstrumentation extends InstrumentationBase<

if (arguments.length === 1) {
if (typeof (query as any).onResult === 'function') {
thisPlugin._wrap((query as any), 'onResult', thisPlugin._patchCallbackQuery(endSpan));
thisPlugin._wrap(
query as any,
'onResult',
thisPlugin._patchCallbackQuery(endSpan)
);
}

const streamableQuery: mysqlTypes.Query = originalQuery.apply(
Expand All @@ -131,9 +144,17 @@ export class MySQLInstrumentation extends InstrumentationBase<
}

if (typeof arguments[1] === 'function') {
thisPlugin._wrap(arguments, 1, thisPlugin._patchCallbackQuery(endSpan));
thisPlugin._wrap(
arguments,
1,
thisPlugin._patchCallbackQuery(endSpan)
);
} else if (typeof arguments[2] === 'function') {
thisPlugin._wrap(arguments, 2, thisPlugin._patchCallbackQuery(endSpan));
thisPlugin._wrap(
arguments,
2,
thisPlugin._patchCallbackQuery(endSpan)
);
}

return originalQuery.apply(this, arguments);
Expand Down
21 changes: 8 additions & 13 deletions plugins/node/opentelemetry-instrumentation-mysql2/src/utils.ts
Expand Up @@ -16,27 +16,21 @@

import { SpanAttributes } from '@opentelemetry/api';
import { SemanticAttributes } from '@opentelemetry/semantic-conventions';
import type {
Query,
QueryOptions,
} from 'mysql2';

import type { Query, QueryOptions } from 'mysql2';

interface Config {
host?: string,
port?: number,
database?: string,
user?: string,
connectionConfig?: Config,
host?: string;
port?: number;
database?: string;
user?: string;
connectionConfig?: Config;
}
/**
* Get an SpanAttributes map from a mysql connection config object
*
* @param config ConnectionConfig
*/
export function getConnectionAttributes(
config: Config
): SpanAttributes {
export function getConnectionAttributes(config: Config): SpanAttributes {
const { host, port, database, user } = getConfig(config);

return {
Expand Down Expand Up @@ -115,6 +109,7 @@ export const once = (fn: Function) => {
let called = false;
return (...args: unknown[]) => {
if (called) return;
called = true;
return fn(...args);
};
};
180 changes: 104 additions & 76 deletions plugins/node/opentelemetry-instrumentation-mysql2/test/mysql.test.ts
Expand Up @@ -40,8 +40,8 @@ instrumentation.disable();
import * as mysqlTypes from 'mysql2';

interface Result extends mysqlTypes.RowDataPacket {
solution: number,
};
solution: number;
}

describe('mysql@2.x', () => {
let contextManager: AsyncHooksContextManager;
Expand Down Expand Up @@ -102,13 +102,13 @@ describe('mysql@2.x', () => {
poolCluster = mysqlTypes.createPoolCluster();
// the implementation actually accepts ConnectionConfig as well,
// but the types do not reflect that
poolCluster.add('name', ({
poolCluster.add('name', {
port,
user,
host,
password,
database,
} as mysqlTypes.PoolClusterOptions));
} as mysqlTypes.PoolClusterOptions);
});

afterEach(done => {
Expand Down Expand Up @@ -201,31 +201,38 @@ describe('mysql@2.x', () => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT 1+? as solution';
connection.query({ sql, values: [1] }, (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
});
connection.query(
{ sql, values: [1] },
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
}
);
});
});

it('should intercept connection.query(text: options, values: [], callback)', done => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT 1+? as solution';
connection.query({ sql }, [1], (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
});
connection.query(
{ sql },
[1],
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
}
);
});
});

Expand Down Expand Up @@ -361,15 +368,18 @@ describe('mysql@2.x', () => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT 1+? as solution';
pool.query({ sql, values: [1] }, (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
});
pool.query(
{ sql, values: [1] },
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
}
);
});
});

Expand Down Expand Up @@ -468,15 +478,18 @@ describe('mysql@2.x', () => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT 1+1 as solution';
poolClusterConnection.query(sql, (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql);
done();
});
poolClusterConnection.query(
sql,
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql);
done();
}
);
});
});
});
Expand All @@ -487,15 +500,18 @@ describe('mysql@2.x', () => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT 1+? as solution';
poolClusterConnection.query({ sql, values: [1] }, (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
});
poolClusterConnection.query(
{ sql, values: [1] },
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
}
);
});
});
});
Expand All @@ -506,15 +522,19 @@ describe('mysql@2.x', () => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT 1+? as solution';
poolClusterConnection.query({ sql }, [1], (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
});
poolClusterConnection.query(
{ sql },
[1],
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 2);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
}
);
});
});
});
Expand All @@ -525,15 +545,19 @@ describe('mysql@2.x', () => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT ? as solution';
poolClusterConnection.query(sql, [1], (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 1);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
});
poolClusterConnection.query(
sql,
[1],
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 1);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
}
);
});
});
});
Expand All @@ -544,15 +568,19 @@ describe('mysql@2.x', () => {
const span = provider.getTracer('default').startSpan('test span');
context.with(trace.setSpan(context.active(), span), () => {
const sql = 'SELECT ? as solution';
poolClusterConnection.query(sql, 1, (err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 1);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
});
poolClusterConnection.query(
sql,
1,
(err, res: mysqlTypes.RowDataPacket[]) => {
assert.ifError(err);
assert.ok(res);
assert.strictEqual(res[0].solution, 1);
const spans = memoryExporter.getFinishedSpans();
assert.strictEqual(spans.length, 1);
assertSpan(spans[0], sql, [1]);
done();
}
);
});
});
});
Expand Down

0 comments on commit 2a66655

Please sign in to comment.