Skip to content

Commit cb515eb

Browse files
committed
Merge branch 'nakrovati-refactor-webdriver'
2 parents 15a1524 + 525516d commit cb515eb

33 files changed

+1566
-906
lines changed

.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ output/
1212

1313
# Webdriver-ts
1414
webdriver-ts/results.json
15+
webdriver-ts/unittests/
1516
webdriver-ts/traces/
1617

1718
# Webdriver-ts-results

.prettierrc.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
11
{
2-
"trailingComma": "es5"
2+
"printWidth": 100,
3+
"tabWidth": 2,
4+
"useTabs": false,
5+
"semi": true,
6+
"singleQuote": false,
7+
"quoteProps": "as-needed",
8+
"jsxSingleQuote": false,
9+
"trailingComma": "es5",
10+
"bracketSpacing": true,
11+
"bracketSameLine": false,
12+
"arrowParens": "always",
13+
"proseWrap": "preserve",
14+
"endOfLine": "lf",
15+
"singleAttributePerLine": false
316
}

webdriver-ts/csv_export.js

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
var exec = require('child_process').execSync;
2-
var fs = require('fs');
3-
var path = require('path');
4-
var yargs = require('yargs');
1+
var exec = require("child_process").execSync;
2+
var fs = require("fs");
3+
var path = require("path");
4+
var yargs = require("yargs");
55

6-
let directories = process.argv.length<=2 ? [] : process.argv.slice(2,process.argv.length);
6+
let directories = process.argv.length <= 2 ? [] : process.argv.slice(2, process.argv.length);
77

88
console.log("directories", directories);
99

10-
if (directories.length<=1) {
10+
if (directories.length <= 1) {
1111
console.log("ERROR: Please specify the directories");
1212
process.exit(1);
1313
}
@@ -30,18 +30,18 @@ for (let dir of directories) {
3030

3131
for (let dir of directories) {
3232
for (let bench of benchmarks) {
33-
map.get(dir).set(bench, JSON.parse(fs.readFileSync(path.join(dir, bench), 'utf8')));
33+
map.get(dir).set(bench, JSON.parse(fs.readFileSync(path.join(dir, bench), "utf8")));
3434
}
3535
}
3636

37-
let output = ';';
38-
output += directories.join(";")+"\n";
37+
let output = ";";
38+
output += directories.join(";") + "\n";
3939
for (let bench of benchmarks) {
4040
output += bench + ";";
4141
for (let dir of directories) {
42-
output += map.get(dir).get(bench).median +";"
42+
output += map.get(dir).get(bench).median + ";";
4343
}
4444
output += "\n";
45-
}
45+
}
4646

4747
console.log(output);

webdriver-ts/src/benchmarkRunner.ts

Lines changed: 91 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,33 @@
1-
import yargs from 'yargs';
2-
import { BenchmarkOptions, BENCHMARK_RUNNER, config, ErrorAndWarning, FrameworkData, initializeFrameworks } from "./common.js";
1+
import yargs from "yargs";
2+
import {
3+
BenchmarkOptions,
4+
BENCHMARK_RUNNER,
5+
config,
6+
ErrorAndWarning,
7+
FrameworkData,
8+
initializeFrameworks,
9+
} from "./common.js";
310
import { fork } from "child_process";
411
import * as fs from "fs";
5-
import { BenchmarkInfo, benchmarkInfos, BenchmarkType, CPUBenchmarkInfo, cpuBenchmarkInfosArray, CPUBenchmarkResult, MemBenchmarkInfo, StartupBenchmarkInfo } from "./benchmarksCommon.js";
12+
import {
13+
BenchmarkInfo,
14+
benchmarkInfos,
15+
BenchmarkType,
16+
CPUBenchmarkInfo,
17+
cpuBenchmarkInfosArray,
18+
CPUBenchmarkResult,
19+
MemBenchmarkInfo,
20+
StartupBenchmarkInfo,
21+
} from "./benchmarksCommon.js";
622
import { StartupBenchmarkResult } from "./benchmarksLighthouse.js";
723
import { writeResults } from "./writeResults.js";
8-
import { PlausibilityCheck, parseCPUTrace } from './timeline.js';
24+
import { PlausibilityCheck, parseCPUTrace } from "./timeline.js";
925

1026
function forkAndCallBenchmark(
1127
framework: FrameworkData,
1228
benchmarkInfo: BenchmarkInfo,
1329
benchmarkOptions: BenchmarkOptions
14-
): Promise<ErrorAndWarning<number|CPUBenchmarkResult|StartupBenchmarkResult>> {
30+
): Promise<ErrorAndWarning<number | CPUBenchmarkResult | StartupBenchmarkResult>> {
1531
return new Promise((resolve, reject) => {
1632
let forkedRunner = null;
1733
if (benchmarkInfo.type === BenchmarkType.STARTUP_MAIN) {
@@ -27,7 +43,7 @@ function forkAndCallBenchmark(
2743
} else {
2844
forkedRunner = "dist/forkedBenchmarkRunnerPuppeteer.js";
2945
}
30-
console.log("forking ",forkedRunner);
46+
console.log("forking ", forkedRunner);
3147
const forked = fork(forkedRunner);
3248
if (config.LOG_DETAILS) console.log("FORKING: forked child process");
3349
forked.send({
@@ -36,10 +52,13 @@ function forkAndCallBenchmark(
3652
benchmarkId: benchmarkInfo.id,
3753
benchmarkOptions,
3854
});
39-
forked.on("message", (msg: ErrorAndWarning<number|CPUBenchmarkResult|StartupBenchmarkResult>) => {
55+
forked.on(
56+
"message",
57+
(msg: ErrorAndWarning<number | CPUBenchmarkResult | StartupBenchmarkResult>) => {
4058
if (config.LOG_DETAILS) console.log("FORKING: main process got message from child", msg);
4159
resolve(msg);
42-
});
60+
}
61+
);
4362
forked.on("close", (msg) => {
4463
if (config.LOG_DETAILS) console.log("FORKING: child closed", msg);
4564
});
@@ -70,7 +89,6 @@ async function runBenchmakLoopStartup(
7089

7190
console.log("runBenchmakLoopStartup", framework, benchmarkInfo);
7291

73-
7492
while (done < count) {
7593
console.log("FORKING: ", benchmarkInfo.id, " BatchSize ", benchmarkOptions.batchSize);
7694
let res = await forkAndCallBenchmark(framework, benchmarkInfo, benchmarkOptions);
@@ -96,7 +114,7 @@ async function runBenchmakLoopStartup(
96114
framework: framework,
97115
benchmark: benchmarkInfo,
98116
results: results,
99-
type: BenchmarkType.STARTUP
117+
type: BenchmarkType.STARTUP,
100118
});
101119
}
102120
return { errors, warnings };
@@ -106,14 +124,14 @@ async function runBenchmakLoopStartup(
106124

107125
async function runBenchmakLoop(
108126
framework: FrameworkData,
109-
benchmarkInfo: CPUBenchmarkInfo|MemBenchmarkInfo,
127+
benchmarkInfo: CPUBenchmarkInfo | MemBenchmarkInfo,
110128
benchmarkOptions: BenchmarkOptions,
111129
plausibilityCheck: PlausibilityCheck
112130
): Promise<{ errors: string[]; warnings: string[] }> {
113131
let warnings: string[] = [];
114132
let errors: string[] = [];
115133

116-
let results: Array<CPUBenchmarkResult|number> = [];
134+
let results: Array<CPUBenchmarkResult | number> = [];
117135
let count = 0;
118136

119137
if (benchmarkInfo.type == BenchmarkType.CPU) {
@@ -133,8 +151,8 @@ async function runBenchmakLoop(
133151
console.log("FORKING: ", benchmarkInfo.id, " BatchSize ", benchmarkOptions.batchSize);
134152
let res = await forkAndCallBenchmark(framework, benchmarkInfo, benchmarkOptions);
135153
if (Array.isArray(res.result)) {
136-
results = results.concat(res.result as number[]|CPUBenchmarkResult[]);
137-
} else if (res.result !==undefined) {
154+
results = results.concat(res.result as number[] | CPUBenchmarkResult[]);
155+
} else if (res.result !== undefined) {
138156
results.push(res.result);
139157
}
140158
warnings = warnings.concat(res.warnings);
@@ -151,7 +169,9 @@ async function runBenchmakLoop(
151169
}
152170
if (benchmarkInfo.type == BenchmarkType.CPU) {
153171
console.log("CPU results before: ", results);
154-
(results as CPUBenchmarkResult[]).sort((a: CPUBenchmarkResult, b: CPUBenchmarkResult) => a.total - b.total);
172+
// (results as CPUBenchmarkResult[]).sort(
173+
// (a: CPUBenchmarkResult, b: CPUBenchmarkResult) => a.total - b.total
174+
// );
155175
// results = results.slice(0, config.NUM_ITERATIONS_FOR_BENCHMARK_CPU);
156176
// console.log("CPU results after: ", results)
157177
}
@@ -163,24 +183,27 @@ async function runBenchmakLoop(
163183
framework: framework,
164184
benchmark: benchmarkInfo,
165185
results: results as CPUBenchmarkResult[],
166-
type: BenchmarkType.CPU
186+
type: BenchmarkType.CPU,
167187
});
168188
} else {
169189
await writeResults(benchmarkOptions.resultsDirectory, {
170190
framework: framework,
171191
benchmark: benchmarkInfo,
172192
results: results as number[],
173-
type: BenchmarkType.MEM
193+
type: BenchmarkType.MEM,
174194
});
175195
}
176-
177196
}
178197
return { errors, warnings };
179198
// } else {
180199
// return executeBenchmark(frameworks, keyed, frameworkName, benchmarkName, benchmarkOptions);
181200
}
182201

183-
async function runBench(runFrameworks: FrameworkData[], benchmarkInfos: BenchmarkInfo[], benchmarkOptions: BenchmarkOptions) {
202+
async function runBench(
203+
runFrameworks: FrameworkData[],
204+
benchmarkInfos: BenchmarkInfo[],
205+
benchmarkOptions: BenchmarkOptions
206+
) {
184207
let errors: string[] = [];
185208
let warnings: string[] = [];
186209

@@ -258,11 +281,15 @@ let args: any = yargs(process.argv)
258281
"$0 [--framework Framework1 Framework2 ...] [--benchmark Benchmark1 Benchmark2 ...] [--chromeBinary path] \n or: $0 [directory1] [directory2] .. [directory3]"
259282
)
260283
.help("help")
261-
.boolean("headless").default("headless", false)
284+
.boolean("headless")
285+
.default("headless", false)
262286
.boolean("smoketest")
263-
.boolean("nothrottling").default("nothrottling", false)
264-
.string("runner").default("runner","puppeteer")
265-
.string("browser").default("browser","chrome")
287+
.boolean("nothrottling")
288+
.default("nothrottling", false)
289+
.string("runner")
290+
.default("runner", "puppeteer")
291+
.string("browser")
292+
.default("browser", "chrome")
266293
.array("framework")
267294
.array("benchmark")
268295
.number("count")
@@ -271,32 +298,45 @@ let args: any = yargs(process.argv)
271298
console.log("args", args);
272299

273300
let runner = args.runner;
274-
if ([BENCHMARK_RUNNER.WEBDRIVER_CDP,BENCHMARK_RUNNER.WEBDRIVER,BENCHMARK_RUNNER.WEBDRIVER_AFTERFRAME,
301+
if (
302+
[
303+
BENCHMARK_RUNNER.WEBDRIVER_CDP,
304+
BENCHMARK_RUNNER.WEBDRIVER,
305+
BENCHMARK_RUNNER.WEBDRIVER_AFTERFRAME,
275306
BENCHMARK_RUNNER.PLAYWRIGHT,
276-
BENCHMARK_RUNNER.PUPPETEER].includes(runner)) {
277-
console.log(`INFO: Using ${runner} benchmark runner`)
307+
BENCHMARK_RUNNER.PUPPETEER,
308+
].includes(runner)
309+
) {
310+
console.log(`INFO: Using ${runner} benchmark runner`);
278311
config.BENCHMARK_RUNNER = runner;
279312
} else {
280-
console.log("ERROR: argument driver has illegal value "+runner, [BENCHMARK_RUNNER.WEBDRIVER_CDP,BENCHMARK_RUNNER.WEBDRIVER,BENCHMARK_RUNNER.PLAYWRIGHT,BENCHMARK_RUNNER.PUPPETEER]);
313+
console.log("ERROR: argument driver has illegal value " + runner, [
314+
BENCHMARK_RUNNER.WEBDRIVER_CDP,
315+
BENCHMARK_RUNNER.WEBDRIVER,
316+
BENCHMARK_RUNNER.PLAYWRIGHT,
317+
BENCHMARK_RUNNER.PUPPETEER,
318+
]);
281319
process.exit(1);
282320
}
283321
console.log("HEADLESS*** ", args.headless);
284322

285323
let benchmarkOptions: BenchmarkOptions = {
286324
port: 8080,
287-
host: 'localhost',
325+
host: "localhost",
288326
browser: args.browser,
289327
remoteDebuggingPort: 9999,
290328
chromePort: 9998,
291329
headless: args.headless,
292330
chromeBinaryPath: args.chromeBinary,
293-
numIterationsForCPUBenchmarks: config.NUM_ITERATIONS_FOR_BENCHMARK_CPU + config.NUM_ITERATIONS_FOR_BENCHMARK_CPU_DROP_SLOWEST_COUNT,
331+
numIterationsForCPUBenchmarks:
332+
config.NUM_ITERATIONS_FOR_BENCHMARK_CPU +
333+
config.NUM_ITERATIONS_FOR_BENCHMARK_CPU_DROP_SLOWEST_COUNT,
294334
numIterationsForMemBenchmarks: config.NUM_ITERATIONS_FOR_BENCHMARK_MEM,
295335
numIterationsForStartupBenchmark: config.NUM_ITERATIONS_FOR_BENCHMARK_STARTUP,
296336
batchSize: 1,
297337
resultsDirectory: "results",
298338
tracesDirectory: "traces",
299-
allowThrottling: !args.nothrottling
339+
allowThrottling: !args.nothrottling,
300340
};
301341

302342
if (args.count) {
@@ -306,7 +346,6 @@ if (args.count) {
306346
benchmarkOptions.numIterationsForStartupBenchmark = args.count;
307347
}
308348

309-
310349
let allArgs = args._.length <= 2 ? [] : args._.slice(2, args._.length);
311350
let frameworkArgument = !args.framework ? allArgs : args.framework;
312351
console.log("args", args, "allArgs", allArgs);
@@ -317,36 +356,43 @@ if (process.env.HOST) {
317356
}
318357
console.log("benchmarkOptions", benchmarkOptions);
319358

320-
let runBenchmarksArgs: string[] = (args.benchmark && args.benchmark.length > 0) ? args.benchmark : [""];
321-
let runBenchmarks: Array<BenchmarkInfo> = benchmarkInfos.filter((b) =>
359+
let runBenchmarksArgs: string[] =
360+
args.benchmark && args.benchmark.length > 0 ? args.benchmark : [""];
361+
let runBenchmarks: Array<BenchmarkInfo> = benchmarkInfos.filter(
362+
(b) =>
322363
// afterframe currently only targets CPU benchmarks
323-
(config.BENCHMARK_RUNNER !== BENCHMARK_RUNNER.WEBDRIVER_AFTERFRAME || b.type == BenchmarkType.CPU) &&
364+
(config.BENCHMARK_RUNNER !== BENCHMARK_RUNNER.WEBDRIVER_AFTERFRAME ||
365+
b.type == BenchmarkType.CPU) &&
324366
runBenchmarksArgs.some((name) => b.id.toLowerCase().indexOf(name) > -1)
325367
);
326368

327369
let runFrameworks: FrameworkData[];
328370
let matchesDirectoryArg = (directoryName: string) =>
329371
frameworkArgument.length == 0 || frameworkArgument.some((arg: string) => arg == directoryName);
330-
runFrameworks = (await initializeFrameworks(benchmarkOptions, matchesDirectoryArg)).filter(f => f.keyed || config.BENCHMARK_RUNNER !== BENCHMARK_RUNNER.WEBDRIVER_AFTERFRAME);
372+
runFrameworks = (await initializeFrameworks(benchmarkOptions, matchesDirectoryArg)).filter(
373+
(f) => f.keyed || config.BENCHMARK_RUNNER !== BENCHMARK_RUNNER.WEBDRIVER_AFTERFRAME
374+
);
331375

332-
console.log("ARGS.smotest", args.smoketest)
376+
console.log("ARGS.smotest", args.smoketest);
333377
if (args.smoketest) {
334378
config.WRITE_RESULTS = false;
335-
benchmarkOptions.numIterationsForCPUBenchmarks = 1,
336-
benchmarkOptions.numIterationsForMemBenchmarks = 1,
337-
benchmarkOptions.numIterationsForStartupBenchmark = 1,
379+
benchmarkOptions.numIterationsForCPUBenchmarks = 1;
380+
benchmarkOptions.numIterationsForMemBenchmarks = 1;
381+
benchmarkOptions.numIterationsForStartupBenchmark = 1;
338382
config.NUM_ITERATIONS_FOR_BENCHMARK_CPU_DROP_SLOWEST_COUNT = 0;
339383
config.EXIT_ON_ERROR = true;
340384
cpuBenchmarkInfosArray.forEach((b) => {
341385
b.additionalNumberOfRuns = 0;
342-
})
343-
console.log('Using smoketest config ', JSON.stringify(config));
386+
});
387+
console.log("Using smoketest config ", JSON.stringify(config));
344388
}
345389
if (config.BENCHMARK_RUNNER == BENCHMARK_RUNNER.WEBDRIVER_AFTERFRAME) {
346-
benchmarkOptions.resultsDirectory = "results_client_"+benchmarkOptions.browser;
390+
benchmarkOptions.resultsDirectory = "results_client_" + benchmarkOptions.browser;
347391
}
348-
if (!fs.existsSync(benchmarkOptions.resultsDirectory)) fs.mkdirSync(benchmarkOptions.resultsDirectory);
349-
if (!fs.existsSync(benchmarkOptions.tracesDirectory)) fs.mkdirSync(benchmarkOptions.tracesDirectory);
392+
if (!fs.existsSync(benchmarkOptions.resultsDirectory))
393+
fs.mkdirSync(benchmarkOptions.resultsDirectory);
394+
if (!fs.existsSync(benchmarkOptions.tracesDirectory))
395+
fs.mkdirSync(benchmarkOptions.tracesDirectory);
350396

351397
if (args.help) {
352398
// yargs.showHelp();
@@ -363,4 +409,4 @@ main()
363409
.catch((error) => {
364410
console.log("run was not completely sucessful", error);
365411
process.exit(1);
366-
});
412+
});

0 commit comments

Comments
 (0)