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

Commit 234c395

Browse files
authored
opencensus-zpages: Enforce strictNullChecks and noUnusedLocals (#432)
* opencensus-zpages: Enforce strictNullChecks and noUnusedLocals * fix tests
1 parent d838da0 commit 234c395

8 files changed

Lines changed: 29 additions & 45 deletions

File tree

packages/opencensus-exporter-zpages/src/zpages-frontend/latency-bucket-boundaries.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ export class LatencyBucketBoundaries {
9696
case LatencyBucketBoundaries.SECONDx100_MAX:
9797
return '>100s';
9898
default:
99-
return null;
99+
throw new Error('unknown bucket boundary');
100100
}
101101
}
102102

@@ -122,7 +122,7 @@ export class LatencyBucketBoundaries {
122122
case LatencyBucketBoundaries.SECONDx100_MAX:
123123
return 'SECONDx100_MAX';
124124
default:
125-
return null;
125+
throw new Error('unknown bucket boundary');
126126
}
127127
}
128128

@@ -137,7 +137,7 @@ export class LatencyBucketBoundaries {
137137
return latency;
138138
}
139139
}
140-
return null;
140+
throw new Error('unknown bucket boundary');
141141
}
142142

143143
/**

packages/opencensus-exporter-zpages/src/zpages-frontend/page-handlers/rpcz.page-handler.ts

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,6 @@ export interface RpczData {
4848
measuresReceived: {[key: string]: ZMeasure};
4949
}
5050

51-
enum DefaultMeasures {
52-
CLIENT_SENT_MESSAGES_PER_RPC = 'grpc.io/client/sent_messages_per_rpc',
53-
CLIENT_SENT_BYTES_PER_RPC = 'grpc.io/client/sent_bytes_per_rpc',
54-
CLIENT_RECEIVED_MESSAGES_PER_RPC = 'grpc.io/client/received_messages_per_rpc',
55-
CLIENT_RECEIVED_BYTES_PER_RPC = 'grpc.io/client/received_bytes_per_rpc',
56-
CLIENT_ROUDTRIP_LATENCY = 'grpc.io/client/roundtrip_latency',
57-
CLIENT_SERVER_LATENCY = 'grpc.io/client/server_latency',
58-
CLIENT_STARTED_RPCS = 'grpc.io/client/started_rpcs',
59-
SERVER_RECEIVED_MESSAGES_PER_RPC = 'grpc.io/server/received_messages_per_rpc',
60-
SERVER_RECEIVED_BYTES_PER_RPC = 'grpc.io/server/received_bytes_per_rpc',
61-
SERVER_SENT_MESSAGES_PER_RPC = 'grpc.io/server/sent_messages_per_rpc',
62-
SERVER_SENT_BYTES_PER_RPC = 'grpc.io/server/sent_bytes_per_rpc',
63-
SERVER_SERVER_LATENCY = 'grpc.io/server/server_latency',
64-
SERVER_STARTED_RPCS = 'grpc.io/server/started_rpcs'
65-
}
66-
6751
enum DefaultViews {
6852
CLIENT_SENT_BYTES_PER_RPC = 'grpc.io/client/sent_bytes_per_rpc',
6953
CLIENT_RECEIVED_BYTES_PER_RPC = 'grpc.io/client/received_bytes_per_rpc',
@@ -129,7 +113,7 @@ export class RpczPageHandler {
129113
method = snapshot.tagValues[serverMethodIndex].value;
130114
zMeasures = rpczData.measuresReceived;
131115
}
132-
if (method) {
116+
if (zMeasures && method) {
133117
if (!zMeasures[method]) {
134118
zMeasures[method] = this.newEmptyZMeasure();
135119
}

packages/opencensus-exporter-zpages/src/zpages-frontend/page-handlers/statsz.page-handler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,11 @@ export class StatszPageHandler {
6868
/** keeps the folders that belong to the current folder */
6969
const folders: FolderType = {};
7070
/** selected view to show */
71-
let selectedView: View;
71+
let selectedView: View|undefined;
7272
/** keeps HTML table content */
7373
let tableContent: string;
7474
/** keeps the stats and view data to load UI */
75-
let statsViewData: StatsViewData;
75+
let statsViewData: StatsViewData|undefined;
7676

7777
// gets the path from user
7878
if (params.path) {
@@ -129,7 +129,7 @@ export class StatszPageHandler {
129129
if (selectedView) {
130130
const statsData = this.getStatsData(selectedView);
131131
const viewFile = this.loaderFile('statsz-view.ejs');
132-
let viewContentFile: string;
132+
let viewContentFile: string|undefined;
133133
let statsContent: string;
134134

135135
switch (selectedView.aggregation) {

packages/opencensus-exporter-zpages/src/zpages-frontend/page-handlers/traceconfigz.page-handler.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ import * as tracing from '@opencensus/nodejs';
1919
import * as ejs from 'ejs';
2020
import * as pkgDir from 'pkg-dir';
2121

22-
import {ZpagesExporter} from '../../zpages';
23-
2422
// The directory to search for templates.
2523
const templatesDir = `${pkgDir.sync(__dirname)}/templates`;
2624

@@ -36,7 +34,7 @@ export interface TraceConfigzData {
3634

3735
export class TraceConfigzPageHandler {
3836
/** Configuration defaults. Currently just the default sampling rate. */
39-
private defaultConfig: {samplingRate: number;};
37+
private defaultConfig?: {samplingRate: number;};
4038

4139
/**
4240
* Generate Zpages Trace Config HTML Page
@@ -83,7 +81,6 @@ export class TraceConfigzPageHandler {
8381
private saveChanges(query: Partial<TraceConfigzParams>): void {
8482
/** restore the config to default */
8583
if (query.change === 'restore_default') {
86-
const exporter = tracing.exporter as ZpagesExporter;
8784
tracing.tracer.sampler =
8885
SamplerBuilder.getSampler(this.defaultConfig!.samplingRate);
8986
return;
@@ -107,6 +104,7 @@ export class TraceConfigzPageHandler {
107104
} else if (samplingProbability === 'never') {
108105
return 0;
109106
}
110-
return Number(samplingProbability.match(/\((.*)\)/)[1]);
107+
const probability = samplingProbability.match(/\((.*)\)/);
108+
return probability ? Number(probability[1]) : 1 / 10000;
111109
}
112110
}

packages/opencensus-exporter-zpages/src/zpages-frontend/page-handlers/tracez.page-handler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ const getCanonicalCode = (status: number) => {
8484
case 16:
8585
return 'UNAUTHENTICATED';
8686
default:
87-
return null;
87+
return 'UNKNOWN';
8888
}
8989
};
9090

packages/opencensus-exporter-zpages/src/zpages.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ export class ZpagesExporter implements Exporter, StatsEventListener {
4242
static readonly defaultOptions = {port: 8080, startServer: true};
4343

4444
private app: express.Application;
45-
private server: http.Server;
45+
private server?: http.Server;
4646
private port: number;
4747
private traces: Map<string, Span[]> = new Map();
4848
private logger: Logger;
@@ -208,6 +208,8 @@ export class ZpagesExporter implements Exporter, StatsEventListener {
208208
* @param callback A function that will be called when the server is stopped.
209209
*/
210210
stopServer(callback?: () => void) {
211-
this.server.close(callback);
211+
if (this.server) {
212+
this.server.close(callback);
213+
}
212214
}
213215
}

packages/opencensus-exporter-zpages/test/test-zpages.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import * as assert from 'assert';
1919
import axios from 'axios';
2020
import * as http from 'http';
2121
import * as qs from 'querystring';
22-
2322
import {ZpagesExporter, ZpagesExporterOptions} from '../src/zpages';
2423
import {RpczData} from '../src/zpages-frontend/page-handlers/rpcz.page-handler';
2524
import {StatsViewData, StatszParams} from '../src/zpages-frontend/page-handlers/statsz.page-handler';
@@ -268,7 +267,7 @@ describe('Zpages Exporter', () => {
268267
it('should get view information', async () => {
269268
const view = globalStats.createView(
270269
'test/CountView', measure, AggregationType.COUNT, tagKeys,
271-
'A count test', null);
270+
'A count test');
272271
globalStats.registerView(view);
273272
globalStats.record([measurement, measurement2], tagMap);
274273

@@ -283,7 +282,7 @@ describe('Zpages Exporter', () => {
283282
it('should get stats for view', async () => {
284283
const view = globalStats.createView(
285284
'test/CountView', measure, AggregationType.COUNT, tagKeys,
286-
'A count test', null);
285+
'A count test');
287286
globalStats.registerView(view);
288287
globalStats.record([measurement, measurement2], tagMap);
289288

@@ -301,8 +300,8 @@ describe('Zpages Exporter', () => {
301300
it('should get view information', async () => {
302301
globalStats.registerExporter(zpages);
303302
const view = globalStats.createView(
304-
'test/SumView', measure, AggregationType.SUM, tagKeys, 'A sum test',
305-
null);
303+
'test/SumView', measure, AggregationType.SUM, tagKeys,
304+
'A sum test');
306305
globalStats.registerView(view);
307306
globalStats.record([measurement, measurement2], tagMap);
308307

@@ -317,8 +316,8 @@ describe('Zpages Exporter', () => {
317316
it('should get stats for view', async () => {
318317
globalStats.registerExporter(zpages);
319318
const view = globalStats.createView(
320-
'test/SumView', measure, AggregationType.SUM, tagKeys, 'A sum test',
321-
null);
319+
'test/SumView', measure, AggregationType.SUM, tagKeys,
320+
'A sum test');
322321
globalStats.registerView(view);
323322
globalStats.record([measurement, measurement2], tagMap);
324323

@@ -337,7 +336,7 @@ describe('Zpages Exporter', () => {
337336
globalStats.registerExporter(zpages);
338337
const view = globalStats.createView(
339338
'test/LastValueView', measure, AggregationType.LAST_VALUE, tagKeys,
340-
'A last value test', null);
339+
'A last value test');
341340
globalStats.registerView(view);
342341
globalStats.record([measurement, measurement2], tagMap);
343342

@@ -353,7 +352,7 @@ describe('Zpages Exporter', () => {
353352
globalStats.registerExporter(zpages);
354353
const view = globalStats.createView(
355354
'test/LastValueView', measure, AggregationType.LAST_VALUE, tagKeys,
356-
'A last value test', null);
355+
'A last value test');
357356
globalStats.registerView(view);
358357
globalStats.record([measurement, measurement2], tagMap);
359358

@@ -474,13 +473,13 @@ describe('Zpages Exporter', () => {
474473
const view4 = globalStats.createView(
475474
'grpc.io/client/completed_rpcs', measure3, AggregationType.COUNT,
476475
[GRPC_CLIENT_METHOD, GRPC_CLIENT_STATUS],
477-
'Number of completed client RPCs', null);
476+
'Number of completed client RPCs');
478477
globalStats.registerView(view4);
479478

480479
const view5 = globalStats.createView(
481480
'grpc.io/client/started_rpcs', measure4, AggregationType.COUNT,
482481
[GRPC_CLIENT_METHOD, GRPC_CLIENT_STATUS],
483-
'Number of started client RPCs', null);
482+
'Number of started client RPCs');
484483
globalStats.registerView(view5);
485484

486485
const measurement = {measure, value: 22000};
@@ -552,13 +551,13 @@ describe('Zpages Exporter', () => {
552551
const view4 = globalStats.createView(
553552
'grpc.io/server/completed_rpcs', measure7, AggregationType.COUNT,
554553
[GRPC_SERVER_METHOD, GRPC_SERVER_STATUS],
555-
'Number of completed client RPCs', null);
554+
'Number of completed client RPCs');
556555
globalStats.registerView(view4);
557556

558557
const view5 = globalStats.createView(
559558
'grpc.io/server/started_rpcs', measure8, AggregationType.COUNT,
560559
[GRPC_SERVER_METHOD, GRPC_SERVER_STATUS],
561-
'Number of started client RPCs', null);
560+
'Number of started client RPCs');
562561
globalStats.registerView(view5);
563562

564563
const measurement6 = {measure: measure5, value: 2200};

packages/opencensus-exporter-zpages/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"pretty": true,
77
"module": "commonjs",
88
"target": "es6",
9-
"strictNullChecks": false
9+
"strictNullChecks": true,
10+
"noUnusedLocals": true
1011
},
1112
"include": [
1213
"src/**/*.ts",

0 commit comments

Comments
 (0)