Skip to content

Commit 2290ef4

Browse files
authored
Nodejs knex: Remove opencensus functionalities (#146)
* Decouple opencensus * Remove opencensus from package.json
1 parent 2fa907e commit 2290ef4

File tree

8 files changed

+5173
-919
lines changed

8 files changed

+5173
-919
lines changed

nodejs/sqlcommenter-nodejs/packages/sqlcommenter-knex/package-lock.json

Lines changed: 5134 additions & 682 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nodejs/sqlcommenter-nodejs/packages/sqlcommenter-knex/package.json

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
"test": "test"
88
},
99
"devDependencies": {
10-
"@opencensus/nodejs": "^0.0.22",
11-
"@opencensus/propagation-tracecontext": "^0.0.22",
1210
"@opentelemetry/api": "^1.0.3",
1311
"@opentelemetry/core": "^0.24.0",
1412
"@opentelemetry/node": "^0.24.0",
@@ -23,8 +21,6 @@
2321
"sinon-chai": "^3.5.0"
2422
},
2523
"peerDependencies": {
26-
"@opencensus/nodejs": "^0.0.22",
27-
"@opencensus/propagation-tracecontext": "^0.0.22",
2824
"@opentelemetry/core": "^0.24.0"
2925
},
3026
"engines": {
@@ -39,4 +35,4 @@
3935
},
4036
"author": "Google, LLC.",
4137
"license": "Apache-2.0"
42-
}
38+
}

nodejs/sqlcommenter-nodejs/packages/sqlcommenter-knex/provider/index.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,17 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
const OpenCensus = require('./opencensus');
1615
const OpenTelemetry = require('./opentelemetry');
1716

1817
const providers = {
19-
'opentelemetry': OpenTelemetry,
20-
'opencensus': OpenCensus,
18+
'opentelemetry': OpenTelemetry
2119
}
2220

2321
exports.attachComments = function attachComments(providerName, comments) {
2422
// Verify we have a comments object to modify
2523
if (!comments || typeof comments !== 'object') return;
2624

2725
// Lookup the provider by name, or use the default.
28-
let provider = providers[String(providerName).toLowerCase()] || OpenCensus;
26+
let provider = providers[String(providerName).toLowerCase()] || OpenTelemetry;
2927
provider.addW3CTraceContext(comments);
3028
}

nodejs/sqlcommenter-nodejs/packages/sqlcommenter-knex/provider/opencensus.js

Lines changed: 0 additions & 22 deletions
This file was deleted.

nodejs/sqlcommenter-nodejs/packages/sqlcommenter-knex/test/comment.test.js

Lines changed: 21 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,12 @@
1414

1515
"use strict";
1616

17-
const {wrapMainKnex} = require('../index');
18-
const opencensus_tracing = require('@opencensus/nodejs');
17+
const { wrapMainKnex } = require('../index');
1918
const chai = require("chai");
20-
const {fields} = require('../util');
21-
const {context, trace} = require('@opentelemetry/api');
22-
const {NodeTracerProvider} = require('@opentelemetry/node');
23-
const {AsyncHooksContextManager} = require('@opentelemetry/context-async-hooks');
24-
const {InMemorySpanExporter, SimpleSpanProcessor} = require('@opentelemetry/tracing');
19+
const { context, trace } = require('@opentelemetry/api');
20+
const { NodeTracerProvider } = require('@opentelemetry/node');
21+
const { AsyncHooksContextManager } = require('@opentelemetry/context-async-hooks');
22+
const { InMemorySpanExporter, SimpleSpanProcessor } = require('@opentelemetry/tracing');
2523

2624
const expect = chai.expect;
2725

@@ -30,7 +28,7 @@ describe("Comments for Knex", () => {
3028
let fakeKnex = {
3129
Client: {
3230
prototype: {
33-
config: { connection: { database: 'fake'}, client: 'fakesql'},
31+
config: { connection: { database: 'fake' }, client: 'fakesql' },
3432
version: 'fake-server:0.0.X',
3533
query: (conn, obj) => {
3634
return Promise.resolve(obj); // simply returns a resolved promise for inspection.
@@ -43,24 +41,24 @@ describe("Comments for Knex", () => {
4341
};
4442

4543
before(() => {
46-
wrapMainKnex(fakeKnex, {db_driver: true})
44+
wrapMainKnex(fakeKnex, { db_driver: true })
4745
});
4846

4947
describe("Cases", () => {
5048

5149
it("should add comment to generated sql", (done) => {
52-
50+
5351
const want = "SELECT CURRENT_TIMESTAMP /*db_driver='knex%3Afake%3A0.0.1'*/";
54-
const obj = {sql: 'SELECT CURRENT_TIMESTAMP'};
52+
const obj = { sql: 'SELECT CURRENT_TIMESTAMP' };
5553

56-
fakeKnex.Client.prototype.query(null, obj).then(({sql}) => {
54+
fakeKnex.Client.prototype.query(null, obj).then(({ sql }) => {
5755
expect(sql).equals(want);
5856
});
5957
done();
6058
});
6159

6260
it("should NOT affix comments to statements with existing comments", (done) => {
63-
61+
6462
const queries = [
6563
'SELECT * FROM people /* existing */',
6664
'SELECT * FROM people -- existing'
@@ -80,7 +78,7 @@ describe("Comments for Knex", () => {
8078
const want = [
8179
"db_driver",
8280
];
83-
fakeKnex.Client.prototype.query(null, 'SELECT * from foo').then(({sql}) => {
81+
fakeKnex.Client.prototype.query(null, 'SELECT * from foo').then(({ sql }) => {
8482
want.forEach((key) => {
8583
expect(sql.indexOf(key)).to.be.gt(-1);
8684
});
@@ -90,17 +88,17 @@ describe("Comments for Knex", () => {
9088

9189
it("should deterministically sort keys alphabetically", (done) => {
9290
const want = "SELECT * from foo /*db_driver='knex%3Afake%3A0.0.1'*/";
93-
fakeKnex.Client.prototype.query(null, {sql: 'SELECT * from foo'}).then(({sql}) => {
91+
fakeKnex.Client.prototype.query(null, { sql: 'SELECT * from foo' }).then(({ sql }) => {
9492
expect(sql).equals(want);
9593
});
9694
done();
9795
});
9896

9997
it("chaining and repeated calls should NOT indefinitely chain SQL", (done) => {
100-
98+
10199
const want = "SELECT * from foo /*db_driver='knex%3Afake%3A0.0.1'*/";
102-
103-
const obj = {sql: 'SELECT * from foo'};
100+
101+
const obj = { sql: 'SELECT * from foo' };
104102

105103
fakeKnex.Client.prototype.query(null, obj)
106104
.then((a) => fakeKnex.Client.prototype.query(null, a))
@@ -109,61 +107,19 @@ describe("Comments for Knex", () => {
109107
.then((d) => {
110108
expect(d.sql).equals(want);
111109
});
112-
110+
113111
done();
114112
});
115113
});
116114
});
117115

118116

119-
describe("With OpenCensus tracing", () => {
120-
121-
let fakeKnex = {
122-
Client: {
123-
prototype: {
124-
config: { connection: { database: 'fake'}, client: 'fakesql'},
125-
version: 'fake-server:0.0.X',
126-
query: (conn, obj) => {
127-
return Promise.resolve(obj); // simply returns a resolved promise for inspection.
128-
}
129-
}
130-
},
131-
VERSION: () => {
132-
return 'fake:0.0.1';
133-
}
134-
};
135-
136-
before(() => {
137-
wrapMainKnex(fakeKnex, {db_driver: true, traceparent: true, tracestate: true}, {TraceProvider: "OpenCensus"});
138-
});
139-
140-
it('Starting an OpenCensus trace should produce `traceparent`', (done) => {
141-
// Let's remember https://github.com/census-instrumentation/opencensus-node/issues/580
142-
143-
const traceOptions = {
144-
samplingRate: 1, // Always sample
145-
};
146-
const tracer = opencensus_tracing.start(traceOptions).tracer;
147-
148-
tracer.startRootSpan({ name: 'with-tracing' }, rootSpan => {
149-
const obj = {sql: 'SELECT * FROM foo'};
150-
fakeKnex.Client.prototype.query(null, obj).then((got) => {
151-
const augmentedSQL = got.sql;
152-
const wantSQL = `SELECT * FROM foo /*db_driver='knex%3Afake%3A0.0.1',traceparent='00-${rootSpan.traceId}-${rootSpan.id}-01'*/`;
153-
expect(augmentedSQL).equals(wantSQL);
154-
opencensus_tracing.tracer.stop();
155-
done();
156-
});
157-
});
158-
});
159-
});
160-
161117
describe("With OpenTelemetry tracing", () => {
162118

163119
let fakeKnex = {
164120
Client: {
165121
prototype: {
166-
config: { connection: { database: 'fake'}, client: 'fakesql'},
122+
config: { connection: { database: 'fake' }, client: 'fakesql' },
167123
version: 'fake-server:0.0.X',
168124
query: (conn, obj) => {
169125
return Promise.resolve(obj); // simply returns a resolved promise for inspection.
@@ -187,7 +143,7 @@ describe("With OpenTelemetry tracing", () => {
187143
before(() => {
188144
contextManager = new AsyncHooksContextManager();
189145
context.setGlobalContextManager(contextManager.enable());
190-
wrapMainKnex(fakeKnex, {db_driver: true, traceparent: true, tracestate: true}, {TraceProvider: "OpenTelemetry"});
146+
wrapMainKnex(fakeKnex, { db_driver: true, traceparent: true, tracestate: true }, { TraceProvider: "" });
191147
});
192148

193149
after(() => {
@@ -198,10 +154,11 @@ describe("With OpenTelemetry tracing", () => {
198154
it('Starting an OpenTelemetry trace should produce `traceparent`', (done) => {
199155
const rootSpan = tracer.startSpan('rootSpan');
200156
context.with(trace.setSpan(context.active(), rootSpan), async () => {
201-
const obj = {sql: 'SELECT * FROM foo'};
157+
const obj = { sql: 'SELECT * FROM foo' };
202158
fakeKnex.Client.prototype.query(null, obj).then((got) => {
203159
const augmentedSQL = got.sql;
204160
const wantSQL = `SELECT * FROM foo /*db_driver='knex%3Afake%3A0.0.1',traceparent='00-${rootSpan.spanContext().traceId}-${rootSpan.spanContext().spanId}-01'*/`;
161+
console.log(augmentedSQL);
205162
expect(augmentedSQL).equals(wantSQL);
206163
rootSpan.end();
207164
done();

nodejs/sqlcommenter-nodejs/packages/sqlcommenter-knex/test/unit/provider.js

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,14 @@ const openCensusMock = sinon.spy();
2626
const openTelemetryMock = sinon.spy();
2727

2828
// Mock the dependencies of provider to make use of faked methods for adding trace context
29-
rewiremock('../../provider/opencensus').with({addW3CTraceContext: openCensusMock});
30-
rewiremock('../../provider/opentelemetry').with({addW3CTraceContext: openTelemetryMock});
29+
rewiremock('../../provider/opentelemetry').with({ addW3CTraceContext: openTelemetryMock });
3130

3231
// Load the provider module with the appropriate mocks
3332
rewiremock.enable();
3433
const provider = require('../../provider');
3534

3635
// A helper method to test which provider was called
37-
const verifyProviderUsed = function(traceProvider, spy, used) {
36+
const verifyProviderUsed = function (traceProvider, spy, used) {
3837
provider.attachComments(traceProvider, {});
3938
expect(spy.called).to.equal(used);
4039
};
@@ -43,42 +42,26 @@ describe("Provider", () => {
4342
describe("attachComment", () => {
4443

4544
beforeEach(() => {
46-
openCensusMock.resetHistory();
4745
openTelemetryMock.resetHistory();
4846
})
4947

50-
it("should default to OpenCensus when no options are provided", () => {
51-
verifyProviderUsed(undefined, openCensusMock, true);
52-
verifyProviderUsed(undefined, openTelemetryMock, false);
48+
it("should default to OpenTelemetry when no options are provided", () => {
49+
verifyProviderUsed(undefined, openTelemetryMock, true);
5350
});
5451

55-
it("should default to OpenCensus when null is provided", () => {
56-
verifyProviderUsed(null, openCensusMock, true);
57-
verifyProviderUsed(null, openTelemetryMock, false);
52+
it("should default to OpenTelemetry when null is provided", () => {
53+
verifyProviderUsed(null, openTelemetryMock, true);
5854
});
5955

60-
it("should default to OpenCensus when invalid options are provided", () => {
61-
verifyProviderUsed("bad trace library name", openCensusMock, true);
62-
verifyProviderUsed("bad trace library name", openTelemetryMock, false);
63-
});
64-
65-
it("should use OpenCensus when the name is provided", () => {
66-
verifyProviderUsed("opencensus", openCensusMock, true);
67-
verifyProviderUsed("opencensus", openTelemetryMock, false);
68-
});
69-
70-
it("should accept an arbitrary capitalization of OpenCensus", () => {
71-
verifyProviderUsed("oPeNceNSus", openCensusMock, true);
72-
verifyProviderUsed("oPeNceNSus", openTelemetryMock, false);
56+
it("should default to OpenTelemetry when invalid options are provided", () => {
57+
verifyProviderUsed("bad trace library name", openTelemetryMock, true);
7358
});
7459

7560
it("should use OpenTelemetry when the name is provided", () => {
76-
verifyProviderUsed("opentelemetry", openCensusMock, false);
7761
verifyProviderUsed("opentelemetry", openTelemetryMock, true);
7862
});
7963

8064
it("should accept an arbitrary capitalization of OpenTelemetry", () => {
81-
verifyProviderUsed("OpenTeleMetRY", openCensusMock, false);
8265
verifyProviderUsed("OpenTeleMetRY", openTelemetryMock, true);
8366
});
8467

0 commit comments

Comments
 (0)