@lage-run/reporters 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +22 -1
- package/CHANGELOG.md +11 -2
- package/lib/ChromeTraceEventsReporter.d.ts +22 -0
- package/lib/ChromeTraceEventsReporter.js +86 -0
- package/lib/ChromeTraceEventsReporter.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.json
CHANGED
|
@@ -2,7 +2,28 @@
|
|
|
2
2
|
"name": "@lage-run/reporters",
|
|
3
3
|
"entries": [
|
|
4
4
|
{
|
|
5
|
-
"date": "Tue, 23 Aug 2022
|
|
5
|
+
"date": "Tue, 23 Aug 2022 21:26:17 GMT",
|
|
6
|
+
"tag": "@lage-run/reporters_v0.1.3",
|
|
7
|
+
"version": "0.1.3",
|
|
8
|
+
"comments": {
|
|
9
|
+
"patch": [
|
|
10
|
+
{
|
|
11
|
+
"author": "kchau@microsoft.com",
|
|
12
|
+
"package": "@lage-run/reporters",
|
|
13
|
+
"commit": "703195918ffa167fb2dba2ab5e469cae0122134f",
|
|
14
|
+
"comment": "Adds the ChromeTraceEventReporters that is used in --profile"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"author": "beachball",
|
|
18
|
+
"package": "@lage-run/reporters",
|
|
19
|
+
"comment": "Bump @lage-run/scheduler to v0.1.4",
|
|
20
|
+
"commit": "703195918ffa167fb2dba2ab5e469cae0122134f"
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"date": "Tue, 23 Aug 2022 07:53:50 GMT",
|
|
6
27
|
"tag": "@lage-run/reporters_v0.1.2",
|
|
7
28
|
"version": "0.1.2",
|
|
8
29
|
"comments": {
|
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
# Change Log - @lage-run/reporters
|
|
2
2
|
|
|
3
|
-
This log was last generated on Tue, 23 Aug 2022
|
|
3
|
+
This log was last generated on Tue, 23 Aug 2022 21:26:17 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 0.1.3
|
|
8
|
+
|
|
9
|
+
Tue, 23 Aug 2022 21:26:17 GMT
|
|
10
|
+
|
|
11
|
+
### Patches
|
|
12
|
+
|
|
13
|
+
- Adds the ChromeTraceEventReporters that is used in --profile (kchau@microsoft.com)
|
|
14
|
+
- Bump @lage-run/scheduler to v0.1.4
|
|
15
|
+
|
|
7
16
|
## 0.1.2
|
|
8
17
|
|
|
9
|
-
Tue, 23 Aug 2022 07:53:
|
|
18
|
+
Tue, 23 Aug 2022 07:53:50 GMT
|
|
10
19
|
|
|
11
20
|
### Patches
|
|
12
21
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { LogEntry, Reporter } from "@lage-run/logger";
|
|
3
|
+
import type { SchedulerRunSummary, TargetRun } from "@lage-run/scheduler";
|
|
4
|
+
import type { TargetMessageEntry, TargetStatusEntry } from "./types/TargetLogEntry";
|
|
5
|
+
import { Writable } from "stream";
|
|
6
|
+
export interface ChromeTraceEventsReporterOptions {
|
|
7
|
+
outputFile?: string;
|
|
8
|
+
concurrency: number;
|
|
9
|
+
categorize?: (targetRun?: TargetRun) => string;
|
|
10
|
+
}
|
|
11
|
+
export declare class ChromeTraceEventsReporter implements Reporter {
|
|
12
|
+
private options;
|
|
13
|
+
logStream: Writable;
|
|
14
|
+
consoleLogStream: Writable;
|
|
15
|
+
private threads;
|
|
16
|
+
private targetIdThreadMap;
|
|
17
|
+
private events;
|
|
18
|
+
private outputFile;
|
|
19
|
+
constructor(options: ChromeTraceEventsReporterOptions);
|
|
20
|
+
log(entry: LogEntry<TargetStatusEntry | TargetMessageEntry>): void;
|
|
21
|
+
summarize(schedulerRunSummary: SchedulerRunSummary): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ChromeTraceEventsReporter = void 0;
|
|
7
|
+
const target_graph_1 = require("@lage-run/target-graph");
|
|
8
|
+
const isTargetStatusLogEntry_1 = require("./isTargetStatusLogEntry");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
function range(len) {
|
|
13
|
+
return Array(len)
|
|
14
|
+
.fill(0)
|
|
15
|
+
.map((_, idx) => idx + 1);
|
|
16
|
+
}
|
|
17
|
+
function hrTimeToMicroseconds(hr) {
|
|
18
|
+
return hr[0] * 1e6 + hr[1] * 1e-3;
|
|
19
|
+
}
|
|
20
|
+
function getTimeBasedFilename(prefix) {
|
|
21
|
+
const now = new Date(); // 2011-10-05T14:48:00.000Z
|
|
22
|
+
const datetime = now.toISOString().split(".")[0]; // 2011-10-05T14:48:00
|
|
23
|
+
const datetimeNormalized = datetime.replace(/-|:/g, ""); // 20111005T144800
|
|
24
|
+
return `${prefix ? prefix + "-" : ""}${datetimeNormalized}.json`;
|
|
25
|
+
}
|
|
26
|
+
class ChromeTraceEventsReporter {
|
|
27
|
+
constructor(options) {
|
|
28
|
+
var _a;
|
|
29
|
+
this.options = options;
|
|
30
|
+
this.consoleLogStream = process.stdout;
|
|
31
|
+
this.targetIdThreadMap = new Map();
|
|
32
|
+
this.events = {
|
|
33
|
+
traceEvents: [],
|
|
34
|
+
displayTimeUnit: "ms",
|
|
35
|
+
};
|
|
36
|
+
this.outputFile = (_a = options.outputFile) !== null && _a !== void 0 ? _a : getTimeBasedFilename("profile");
|
|
37
|
+
this.threads = range(options.concurrency);
|
|
38
|
+
if (!fs_1.default.existsSync(path_1.default.dirname(this.outputFile))) {
|
|
39
|
+
fs_1.default.mkdirSync(path_1.default.dirname(this.outputFile), { recursive: true });
|
|
40
|
+
}
|
|
41
|
+
this.logStream = fs_1.default.createWriteStream(this.outputFile, { flags: "w" });
|
|
42
|
+
}
|
|
43
|
+
log(entry) {
|
|
44
|
+
var _a, _b;
|
|
45
|
+
const data = entry.data;
|
|
46
|
+
if ((0, isTargetStatusLogEntry_1.isTargetStatusLogEntry)(data) && data.status !== "pending" && data.target.id !== (0, target_graph_1.getStartTargetId)()) {
|
|
47
|
+
if (data.status === "running") {
|
|
48
|
+
const threadId = (_a = this.threads.shift()) !== null && _a !== void 0 ? _a : 0;
|
|
49
|
+
this.targetIdThreadMap.set(data.target.id, threadId);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
const threadId = this.targetIdThreadMap.get(data.target.id);
|
|
53
|
+
this.events.traceEvents.push({
|
|
54
|
+
name: data.target.id,
|
|
55
|
+
cat: "",
|
|
56
|
+
ph: "X",
|
|
57
|
+
ts: 0,
|
|
58
|
+
dur: hrTimeToMicroseconds((_b = data.duration) !== null && _b !== void 0 ? _b : [0, 1000]),
|
|
59
|
+
pid: 1,
|
|
60
|
+
tid: threadId !== null && threadId !== void 0 ? threadId : 0,
|
|
61
|
+
});
|
|
62
|
+
this.threads.unshift(threadId);
|
|
63
|
+
this.threads.sort((a, b) => a - b);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
summarize(schedulerRunSummary) {
|
|
68
|
+
var _a;
|
|
69
|
+
const { targetRuns, startTime } = schedulerRunSummary;
|
|
70
|
+
// categorize events
|
|
71
|
+
const { categorize } = this.options;
|
|
72
|
+
for (const event of this.events.traceEvents) {
|
|
73
|
+
const targetRun = targetRuns.get(event.name);
|
|
74
|
+
event.ts = hrTimeToMicroseconds(targetRun === null || targetRun === void 0 ? void 0 : targetRun.startTime) - hrTimeToMicroseconds(startTime);
|
|
75
|
+
event.cat = (_a = targetRun === null || targetRun === void 0 ? void 0 : targetRun.status) !== null && _a !== void 0 ? _a : "";
|
|
76
|
+
if (categorize) {
|
|
77
|
+
event.cat += `,${categorize(targetRun)}`;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// write events to stream
|
|
81
|
+
this.logStream.write(JSON.stringify(this.events, null, 2));
|
|
82
|
+
this.consoleLogStream.write(chalk_1.default.blueBright(`\nProfiler output written to ${chalk_1.default.underline(this.outputFile)}, open it with chrome://tracing or edge://tracing\n`));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.ChromeTraceEventsReporter = ChromeTraceEventsReporter;
|
|
86
|
+
//# sourceMappingURL=ChromeTraceEventsReporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChromeTraceEventsReporter.js","sourceRoot":"","sources":["../src/ChromeTraceEventsReporter.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { AdoReporter } from "./AdoReporter";
|
|
2
2
|
export { JsonReporter } from "./JsonReporter";
|
|
3
3
|
export { NpmLogReporter } from "./NpmLogReporter";
|
|
4
|
+
export { ChromeTraceEventsReporter } from "./ChromeTraceEventsReporter";
|
|
4
5
|
export type { TargetStatusEntry, TargetMessageEntry } from "./types/TargetLogEntry";
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NpmLogReporter = exports.JsonReporter = exports.AdoReporter = void 0;
|
|
3
|
+
exports.ChromeTraceEventsReporter = exports.NpmLogReporter = exports.JsonReporter = exports.AdoReporter = void 0;
|
|
4
4
|
var AdoReporter_1 = require("./AdoReporter");
|
|
5
5
|
Object.defineProperty(exports, "AdoReporter", { enumerable: true, get: function () { return AdoReporter_1.AdoReporter; } });
|
|
6
6
|
var JsonReporter_1 = require("./JsonReporter");
|
|
7
7
|
Object.defineProperty(exports, "JsonReporter", { enumerable: true, get: function () { return JsonReporter_1.JsonReporter; } });
|
|
8
8
|
var NpmLogReporter_1 = require("./NpmLogReporter");
|
|
9
9
|
Object.defineProperty(exports, "NpmLogReporter", { enumerable: true, get: function () { return NpmLogReporter_1.NpmLogReporter; } });
|
|
10
|
+
var ChromeTraceEventsReporter_1 = require("./ChromeTraceEventsReporter");
|
|
11
|
+
Object.defineProperty(exports, "ChromeTraceEventsReporter", { enumerable: true, get: function () { return ChromeTraceEventsReporter_1.ChromeTraceEventsReporter; } });
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA;AACvB,yEAAwE;AAA/D,sIAAA,yBAAyB,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lage-run/reporters",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Log reporters for Lage",
|
|
5
5
|
"repository": {
|
|
6
6
|
"url": "https://github.com/microsoft/lage"
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@lage-run/logger": "^1.1.2",
|
|
18
|
-
"@lage-run/scheduler": "^0.1.
|
|
18
|
+
"@lage-run/scheduler": "^0.1.4",
|
|
19
19
|
"@lage-run/target-graph": "^0.2.0",
|
|
20
20
|
"chalk": "^4.0.0"
|
|
21
21
|
},
|