Skip to content
This repository was archived by the owner on Oct 3, 2023. It is now read-only.

Commit e156d62

Browse files
eduardoemerykjin
authored andcommitted
refactor(fix): changes to address review comments (#50)
1 parent 8d22dc4 commit e156d62

6 files changed

Lines changed: 80 additions & 30 deletions

File tree

packages/opencensus-core/src/trace/model/tracer.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export class Tracer implements types.Tracer {
8888
return this;
8989
}
9090

91-
/** Gets the list of event listners. */
91+
/** Gets the list of event listeners. */
9292
get eventListeners(): types.SpanEventListener[] {
9393
return this.eventListenersLocal;
9494
}
@@ -171,8 +171,19 @@ export class Tracer implements types.Tracer {
171171
* Registers an end span event listener.
172172
* @param listener The listener to register.
173173
*/
174-
registerSpanEventListener(listner: types.SpanEventListener) {
175-
this.eventListenersLocal.push(listner);
174+
registerSpanEventListener(listener: types.SpanEventListener) {
175+
this.eventListenersLocal.push(listener);
176+
}
177+
178+
/**
179+
* Unregisters an end span event listener.
180+
* @param listener The listener to unregister.
181+
*/
182+
unregisterSpanEventListener(listener: types.SpanEventListener) {
183+
const index = this.eventListenersLocal.indexOf(listener, 0);
184+
if (index > -1) {
185+
this.eventListeners.splice(index, 1);
186+
}
176187
}
177188

178189
private notifyStartSpan(root: types.RootSpan) {

packages/opencensus-core/src/trace/model/types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,12 @@ export interface Tracer extends SpanEventListener {
257257
*/
258258
registerSpanEventListener(listener: SpanEventListener): void;
259259

260+
/**
261+
* Unregisters an end span event listener.
262+
* @param listener The listener to unregister.
263+
*/
264+
unregisterSpanEventListener(listener: SpanEventListener): void;
265+
260266
/** Clear the currentRootSpan from tracer instance */
261267
clearCurrentTrace(): void;
262268

packages/opencensus-core/src/trace/types.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,13 @@ export interface Tracing {
2828
/** Service to send collected traces to. */
2929
readonly exporter: exportersTypes.Exporter;
3030

31+
/** Gets active status */
32+
active: boolean;
33+
3134
/**
32-
* Enables the tracing process.
33-
* @param userConfig A configuration object.
34-
* @returns The tracing object.
35+
* Starts tracing.
36+
* @param userConfig A configuration object to start tracing.
37+
* @returns The started Tracing instance.
3538
*/
3639
start(userConfig?: configTypes.Config): Tracing;
3740

@@ -44,4 +47,10 @@ export interface Tracing {
4447
* @returns The tracing object.
4548
*/
4649
registerExporter(exporter: exportersTypes.Exporter): Tracing;
50+
51+
/**
52+
* Unregisters an exporter.
53+
* @param exporter The exporter to stop sending traces to.
54+
*/
55+
unregisterExporter(exporter: exportersTypes.Exporter): Tracing;
4756
}

packages/opencensus-core/test/test-tracer.ts

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,19 +89,37 @@ describe('Tracer', () => {
8989
tracer.registerSpanEventListener(onEndSpan);
9090
});
9191

92-
it('should register a new OnEndSpanEventListener on listners list', () => {
93-
const listner = tracer.eventListeners[0];
92+
it('should register a new OnEndSpanEventListener on listeners list', () => {
93+
const listener = tracer.eventListeners[0];
9494
assert.strictEqual(tracer.eventListeners.length, 1);
95-
assert.strictEqual(listner, onEndSpan);
95+
assert.strictEqual(listener, onEndSpan);
9696
});
9797

9898
it('should return an OnEndSpanEventListener list', () => {
99-
for (const listner of tracer.eventListeners) {
100-
assert.ok(listner instanceof OnEndSpanClass);
99+
for (const listener of tracer.eventListeners) {
100+
assert.ok(listener instanceof OnEndSpanClass);
101101
}
102102
});
103103
});
104104

105+
/** Should unregister a OnEndSpanEventlistener */
106+
describe('unregisterSpanEventListener()', () => {
107+
let tracer: types.Tracer, onEndSpan: OnEndSpanClass;
108+
before(() => {
109+
tracer = new Tracer();
110+
onEndSpan = new OnEndSpanClass();
111+
tracer.registerSpanEventListener(onEndSpan);
112+
});
113+
114+
it('should register a new OnEndSpanEventListener on listeners list', () => {
115+
const listener = tracer.eventListeners[0];
116+
assert.strictEqual(tracer.eventListeners.length, 1);
117+
assert.strictEqual(listener, onEndSpan);
118+
tracer.unregisterSpanEventListener(onEndSpan);
119+
assert.strictEqual(tracer.eventListeners.length, 0);
120+
});
121+
});
122+
105123
/** Should stop the trace instance */
106124
describe('stop()', () => {
107125
it('should stop the trace instance', () => {

packages/opencensus-nodejs/src/trace/tracing.ts

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ export class Tracing implements types.Tracing {
5050
return this.singletonInstance || (this.singletonInstance = new this());
5151
}
5252

53-
// TODO: tracing interface should be updated
5453
/** Gets active status */
5554
get active(): boolean {
5655
return this.activeLocal;
@@ -62,9 +61,9 @@ export class Tracing implements types.Tracing {
6261
}
6362

6463
/**
65-
* Starts the tracing.
66-
* @param userConfig A configuration object to start the tracing.
67-
* @returns The started tracing.
64+
* Starts tracing.
65+
* @param userConfig A configuration object to start tracing.
66+
* @returns The started Tracing instance.
6867
*/
6968
start(userConfig?: types.Config): types.Tracing {
7069
this.configLocal = extend(
@@ -96,7 +95,6 @@ export class Tracing implements types.Tracing {
9695
this.pluginLoader.unloadPlugins();
9796
this.configLocal = null;
9897
this.logger = null;
99-
// TODO: maybe some exporter logic when stop tracing
10098
}
10199

102100

@@ -108,37 +106,30 @@ export class Tracing implements types.Tracing {
108106

109107
/**
110108
* Registers an exporter to send the collected traces to.
111-
* @param exporter THe exporter to send the traces to.
109+
* @param exporter The exporter to send the traces to.
112110
*/
113111
registerExporter(exporter: types.Exporter): types.Tracing {
114112
if (exporter) {
115113
if (this.configLocal.exporter) {
116-
this.unRegisterExporter(this.configLocal.exporter);
114+
this.unregisterExporter(this.configLocal.exporter);
117115
}
118116
this.configLocal.exporter = exporter;
119117
this.tracer.registerSpanEventListener(exporter);
120118
} else {
121-
// TODO: if unRegisterExporter go public, this logic may not be
122-
// necessary - register a null to unRegister
123119
if (this.configLocal.exporter) {
124-
this.unRegisterExporter(this.configLocal.exporter);
120+
this.unregisterExporter(this.configLocal.exporter);
125121
}
126122
}
127123
return this;
128124
}
129125

130126

131127
/**
132-
* Registers an exporter to send the collected traces to.
133-
* @param exporter THe exporter to send the traces to.
128+
* Unregisters an exporter.
129+
* @param exporter The exporter to stop sending traces to.
134130
*/
135-
// TODO: maybe this method should be added to Tracing interface
136-
private unRegisterExporter(exporter: types.Exporter): types.Tracing {
137-
// TODO: maybe an unRegisterEndSpanListener method should be added to Tracer
138-
const index = this.tracer.eventListeners.indexOf(exporter, 0);
139-
if (index > -1) {
140-
this.tracer.eventListeners.splice(index, 1);
141-
}
131+
unregisterExporter(exporter: types.Exporter): types.Tracing {
132+
this.tracer.unregisterSpanEventListener(exporter);
142133
this.configLocal.exporter = null;
143134
return this;
144135
}

packages/opencensus-nodejs/test/test-tracing.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,4 +242,19 @@ describe('Tracing', () => {
242242
assert.strictEqual(tracing.tracer.eventListeners.length, 0);
243243
});
244244
});
245+
246+
/** Should unregister the exporter instance */
247+
describe('unregisterExporter()', () => {
248+
it('should unregister the exporter on tracer', () => {
249+
const tracing = new Tracing();
250+
tracing.start();
251+
const exporter = NOOP_EXPORTER;
252+
tracing.registerExporter(exporter);
253+
assert.strictEqual(tracing.config.exporter, exporter);
254+
assert.strictEqual(tracing.tracer.eventListeners.length, 1);
255+
tracing.unregisterExporter(exporter);
256+
assert.strictEqual(tracing.config.exporter, null);
257+
assert.strictEqual(tracing.tracer.eventListeners.length, 0);
258+
});
259+
});
245260
});

0 commit comments

Comments
 (0)