in bazel/benchmark/driver-utilities/perf_util.ts [70:124]
async function _prepareBenchpressSetup(): Promise<BenchpressSetup> {
const module = await loadBenchpressModule();
const {
SeleniumWebDriverAdapter,
Options,
JsonFileReporter,
RegressionSlopeValidator,
Validator,
MultiReporter,
ConsoleReporter,
SizeValidator,
MultiMetric,
Runner,
} = module;
let runId = uuidv1();
if (process.env.GIT_SHA) {
runId = process.env.GIT_SHA + ' ' + runId;
}
const testOutputDirectory = process.env.TEST_UNDECLARED_OUTPUTS_DIR;
if (testOutputDirectory === undefined) {
throw new Error(
'Unexpected execution outside of a Bazel test. ' +
'Missing `TEST_UNDECLARED_OUTPUTS_DIR` environment variable.',
);
}
const providers: benchpress.StaticProvider[] = [
SeleniumWebDriverAdapter.PROTRACTOR_PROVIDERS,
{provide: Options.FORCE_GC, useValue: globalOptions.forceGc},
{provide: Options.DEFAULT_DESCRIPTION, useValue: {'runId': runId}},
JsonFileReporter.PROVIDERS,
{provide: JsonFileReporter.PATH, useValue: testOutputDirectory},
];
if (!globalOptions.dryRun) {
providers.push({provide: Validator, useExisting: RegressionSlopeValidator});
providers.push({
provide: RegressionSlopeValidator.SAMPLE_SIZE,
useValue: globalOptions.sampleSize,
});
providers.push(MultiReporter.provideWith([ConsoleReporter, JsonFileReporter]));
} else {
providers.push({provide: Validator, useExisting: SizeValidator});
providers.push({provide: SizeValidator.SAMPLE_SIZE, useValue: 1});
providers.push(MultiReporter.provideWith([]));
providers.push(MultiMetric.provideWith([]));
}
return {
runner: new Runner(providers),
module,
};
}