Skip to content

Commit 3ca568c

Browse files
committed
Ignore logs based on release version.
1 parent b0fabad commit 3ca568c

11 files changed

Lines changed: 68 additions & 31 deletions

File tree

package-lock.json

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

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "berlin-lea-performance-monitor",
3-
"version": "1.8.1",
3+
"version": "1.9.0",
44
"author": "David Leclerc",
55
"main": "./src/index.ts",
66
"scripts": {

src/config/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import Release from '../models/Release';
66

77
export const ENV = loadEnvironment();
88

9-
export const MINIMUM_RELEASE = new Release(0, 0, 0);
9+
export const RELEASE_MIN = new Release(0, 0, 0);
1010
export const IGNORE_DAYS_WITH_EMPTY_BUCKETS = false;
1111

1212
export const HOMEPAGE_URL = 'http://otv.verwalt-berlin.de/';

src/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { LOGS_DIR, LOGS_FILEPATH } from './config/file';
1717
import { parseLogs } from './utils/parsing';
1818
import SessionHistoryBuilder from './models/sessions/SessionHistoryBuilder';
1919
import SessionHistoryExporter from './models/sessions/SessionHistoryExporter';
20+
import Release from './models/Release';
2021

2122

2223

@@ -53,7 +54,7 @@ const execute = async () => {
5354
const now = new Date();
5455
const lastWeek = computeDate(now, new TimeDuration(-7, TimeUnit.Days));
5556

56-
await new AnalysisJob({ filepath: LOGS_FILEPATH, since: lastWeek }).execute();
57+
await new AnalysisJob({ filepath: LOGS_FILEPATH, since: new Release(1, 8, 1) }).execute();
5758
}
5859

5960
// Clean logs (remove incomplete sessions)

src/models/Release.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,19 @@ class Release implements Comparable {
3939
this.patch = patch;
4040
}
4141

42+
public static fromString(version: string) {
43+
const parts = version.split('.');
44+
const [major, minor, patch] = parts.map(v => Number(v));
45+
46+
if (parts.length !== 3 || [major, minor, patch].some(v => Number.isNaN(v))) {
47+
throw new Error(`Invalid release format: ${version}`);
48+
}
49+
50+
return new Release(major, minor, patch);
51+
}
52+
4253
public toString() {
43-
return `v${this.major}.${this.minor}.${this.patch}`;
54+
return `${this.major}.${this.minor}.${this.patch}`;
4455
}
4556

4657
public toJSON() {

src/models/graphs/EventPrevalenceOnWorkdaysGraph.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,21 @@ class EventPrevalenceOnWorkdaysGraph extends Graph<SessionHistory> {
7373
// Sum of error prevalences inside any given bucket should be 100%
7474
getRange(mergedBuckets.length).forEach((bucketIndex: number) => {
7575
const sumOfPrevalencesInBucket = uniqueErrors.reduce((prevTotal, error, errorIndex) => {
76-
return prevTotal + prevalences[errorIndex].data[bucketIndex].y;
76+
const errorPrevalenceInBucket = prevalences[errorIndex].data[bucketIndex].y;
77+
78+
// Prevalence will be 'NaN' if there was no occurrences in bucket
79+
if (Number.isNaN(errorPrevalenceInBucket)) {
80+
return prevTotal;
81+
}
82+
83+
return prevTotal + errorPrevalenceInBucket;
7784
}, 0);
7885

86+
// Ignore buckets with no occurrences
87+
if (sumOfPrevalencesInBucket === 0) {
88+
return;
89+
}
90+
7991
assert(equals(sumOfPrevalencesInBucket, 100) === true);
8092
});
8193

src/models/jobs/AnalysisJob.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ import SessionLengthGraph from '../graphs/SessionLengthGraph';
1111
import SessionHistory from '../sessions/SessionHistory';
1212
import SessionHistoryBuilder from '../sessions/SessionHistoryBuilder';
1313
import Job from './Job';
14+
import Release from '../Release';
1415

1516
interface Args {
1617
filepath: string,
17-
since?: Date,
18+
since?: Date | Release,
1819
}
1920

2021
class AnalysisJob extends Job {
2122
protected filepath: string;
22-
protected since?: Date;
23+
protected since?: Date | Release;
2324

2425
public constructor(args: Args = { filepath: LOGS_FILEPATH }) {
2526
super();

src/models/sessions/SessionHistoryBuilder.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { getRange } from '../../utils/math';
99
import SessionBucket from '../buckets/SessionBucket';
1010
import Release from '../Release';
1111
import { RELEASE_ZERO } from '../../constants';
12-
import { MINIMUM_RELEASE } from '../../config';
1312

1413
const TEXTS = {
1514
SessionStart: '[START]',
@@ -19,8 +18,6 @@ const TEXTS = {
1918
class SessionHistoryBuilder {
2019
private static instance: SessionHistoryBuilder;
2120

22-
private minimumRelease: Release = MINIMUM_RELEASE;
23-
2421
private constructor () {
2522

2623
}
@@ -44,15 +41,6 @@ class SessionHistoryBuilder {
4441
// Read logs in chronological order
4542
logs.forEach(log => {
4643

47-
// Parse app version
48-
const [major, minor, patch] = log.version.split('.').map(Number);
49-
release = new Release(major, minor, patch);
50-
51-
// Should builder ignore log?
52-
if (release.smallerThan(this.minimumRelease)) {
53-
return;
54-
}
55-
5644
// Session started
5745
if (log.msg.includes(TEXTS.SessionStart)) {
5846
session = IncompleteSession.create();

src/models/sessions/SessionHistoryExporter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const logToText = (log: Log) => {
1212
`"time":"${log.time}",` +
1313
`"pid":${log.pid},` +
1414
`"hostname":"${log.hostname}",` +
15-
`"version":"${log.version}",` +
15+
`"version":"${log.version.toString()}",` +
1616
(log.err ? `"err":"${log.err}",` : '') +
1717
`"msg":"${log.msg}"` +
1818
`}`

src/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import Release from "./models/Release";
2+
13
export enum Environment {
24
Development = 'development',
35
Test = 'test',
@@ -73,7 +75,7 @@ export type CountsDict = Record<string, number>;
7375
export type Log = {
7476
line: number,
7577
time: string,
76-
version: string,
78+
version: Release,
7779
level: number,
7880
pid: number,
7981
hostname: string,

0 commit comments

Comments
 (0)