build: run tree benchmark tests with bazel (#28568)

PR Close #28568
This commit is contained in:
Paul Gschwendtner
2019-02-06 18:03:58 +01:00
committed by Miško Hevery
parent c916b360bf
commit aadc332be2
22 changed files with 221 additions and 313 deletions

View File

@ -4,25 +4,36 @@ load("//tools:defaults.bzl", "ts_library")
ts_library(
name = "util_lib",
srcs = [
"util.ts",
],
srcs = ["util.ts"],
deps = ["//modules/benchmarks/src:util_lib"],
)
ts_library(
name = "test_utils_lib",
testonly = 1,
srcs = ["tree_perf_test_utils.ts"],
deps = [
"//modules/benchmarks/src:util_lib",
"//packages:types",
"//packages/core",
"//modules/e2e_util",
"@ngdeps//protractor",
],
)
ts_library(
name = "perf_lib",
testonly = 1,
srcs = [
"tree_perf.spec.ts",
],
srcs = ["tree_perf.spec.ts"],
deps = [
"//modules/e2e_util",
"//packages:types",
":test_utils_lib",
"@ngdeps//protractor",
],
)
ts_library(
name = "perf_detect_changes_lib",
testonly = 1,
srcs = ["tree_perf_detect_changes.spec.ts"],
deps = [
":test_utils_lib",
"@ngdeps//protractor",
],
)

View File

@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -20,3 +21,9 @@ ts_devserver(
port = 4200,
deps = [":baseline"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:perf_lib"],
)

View File

@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -24,3 +25,9 @@ ts_devserver(
],
deps = [":incremental_dom"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:perf_lib"],
)

View File

@ -1,4 +1,5 @@
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -8,3 +9,12 @@ ts_devserver(
port = 4200,
static_files = ["tree.js"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = [
"//modules/benchmarks/src/tree:perf_detect_changes_lib",
"//modules/benchmarks/src/tree:perf_lib",
],
)

View File

@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -23,3 +24,12 @@ ts_devserver(
],
deps = [":ng1"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = [
"//modules/benchmarks/src/tree:perf_detect_changes_lib",
"//modules/benchmarks/src/tree:perf_lib",
],
)

View File

@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "ng_module")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -30,3 +31,12 @@ ts_devserver(
],
deps = [":ng2"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = [
"//modules/benchmarks/src/tree:perf_detect_changes_lib",
"//modules/benchmarks/src/tree:perf_lib",
],
)

View File

@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -24,3 +25,12 @@ ts_devserver(
scripts = ["@ngdeps//node_modules/tslib:tslib.js"],
deps = [":ng2_next"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = [
"//modules/benchmarks/src/tree:perf_detect_changes_lib",
"//modules/benchmarks/src/tree:perf_lib",
],
)

View File

@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -28,3 +29,9 @@ ts_devserver(
],
deps = [":ng2_static"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:perf_lib"],
)

View File

@ -1,5 +1,6 @@
load("//tools:defaults.bzl", "ng_module")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -30,3 +31,9 @@ ts_devserver(
],
deps = [":ng2_switch"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = ["//modules/benchmarks/src/tree:perf_lib"],
)

View File

@ -1,8 +1,8 @@
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
load("//tools:defaults.bzl", "ng_module", "ng_rollup_bundle")
load("//packages/bazel:index.bzl", "protractor_web_test_suite")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
ng_module(
name = "tree_lib",
@ -36,22 +36,12 @@ ts_devserver(
tags = ["ivy-only"],
)
protractor_web_test_suite(
benchmark_test(
name = "perf",
configuration = "//:protractor-perf.conf.js",
data = [
"//packages/bazel/src/protractor/utils",
"//packages/benchpress",
],
on_prepare = ":protractor.on_prepare.js",
server = ":devserver",
tags = [
"ivy-only",
],
tags = ["ivy-only"],
deps = [
"//modules/benchmarks/src/tree:perf_detect_changes_lib",
"//modules/benchmarks/src/tree:perf_lib",
"@ngdeps//node-uuid",
"@ngdeps//protractor",
"@ngdeps//yargs",
],
)

View File

@ -1,5 +1,6 @@
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
load("//tools:defaults.bzl", "ts_library")
load("//modules/benchmarks:benchmark_test.bzl", "benchmark_test")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
@ -22,5 +23,12 @@ ts_devserver(
scripts = ["@ngdeps//node_modules/tslib:tslib.js"],
deps = [":render3_function_lib"],
)
benchmark_test(
name = "perf",
server = ":devserver",
deps = [
"//modules/benchmarks/src/tree:perf_detect_changes_lib",
"//modules/benchmarks/src/tree:perf_lib",
],
)

View File

@ -6,10 +6,8 @@
* found in the LICENSE file at https://angular.io/license
*/
import {$, browser} from 'protractor';
import {openBrowser} from '../../../e2e_util/e2e_util';
import {runBenchmark} from '../../../e2e_util/perf_util';
import {$} from 'protractor';
import {openTreeBenchmark, runTreeBenchmark} from './tree_perf_test_utils';
describe('benchmark render', () => {
it('should work for createDestroy', () => {
@ -26,20 +24,15 @@ describe('benchmark render', () => {
$('#createDom').click();
expect($('#root').getText()).toContain('A');
});
it('should work for detectChanges', () => {
openTreeBenchmark();
$('#detectChanges').click();
expect($('#numberOfChecks').getText()).toContain('10');
});
});
describe('benchmarks', () => {
it('should work for createOnly', done => {
runTreeBenchmark({
id: 'createOnly',
// This cannot be called "createOnly" because the actual destroy benchmark
// has the "createOnly" id already. See: https://github.com/angular/angular/pull/21503
id: 'createOnlyForReal',
prepare: () => $('#destroyDom').click(),
work: () => $('#createDom').click()
}).then(done, done.fail);
@ -47,6 +40,8 @@ describe('benchmarks', () => {
it('should work for destroy', done => {
runTreeBenchmark({
// This is actually a benchmark for destroying the dom, but it has been accidentally
// named "createOnly". See https://github.com/angular/angular/pull/21503.
id: 'createOnly',
prepare: () => $('#createDom').click(),
work: () => $('#destroyDom').click()
@ -66,36 +61,4 @@ describe('benchmarks', () => {
it('should work for update', done => {
runTreeBenchmark({id: 'update', work: () => $('#createDom').click()}).then(done, done.fail);
});
it('should work for detectChanges', done => {
runTreeBenchmark({
id: 'detectChanges',
work: () => $('#detectChanges').click(),
setup: () => $('#destroyDom').click()
}).then(done, done.fail);
});
});
function runTreeBenchmark({id, prepare, setup, work}:
{id: string; prepare ? () : void; setup ? () : void; work(): void;}) {
browser.rootEl = '#root';
return runBenchmark({
id: id,
url: '',
ignoreBrowserSynchronization: true,
params: [{name: 'depth', value: 11}],
work: work,
prepare: prepare,
setup: setup
});
}
function openTreeBenchmark() {
browser.rootEl = '#root';
openBrowser({
url: '',
ignoreBrowserSynchronization: true,
params: [{name: 'depth', value: 4}],
});
}

View File

@ -0,0 +1,28 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {$} from 'protractor';
import {openTreeBenchmark, runTreeBenchmark} from './tree_perf_test_utils';
describe('benchmark render', () => {
it('should work for detectChanges', () => {
openTreeBenchmark();
$('#detectChanges').click();
expect($('#numberOfChecks').getText()).toContain('10');
});
});
describe('benchmarks', () => {
it('should work for detectChanges', async() => {
await runTreeBenchmark({
id: 'detectChanges',
work: () => $('#detectChanges').click(),
setup: () => $('#destroyDom').click()
});
});
});

View File

@ -0,0 +1,36 @@
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {browser} from 'protractor';
import {openBrowser} from '../../../e2e_util/e2e_util';
import {runBenchmark} from '../../../e2e_util/perf_util';
export function runTreeBenchmark({id, prepare, setup, work}: {
id: string; prepare ? () : void; setup ? () : void; work(): void;
}) {
browser.rootEl = '#root';
return runBenchmark({
id: id,
url: '',
ignoreBrowserSynchronization: true,
params: [{name: 'depth', value: 11}],
work: work,
prepare: prepare,
setup: setup
});
}
export function openTreeBenchmark() {
browser.rootEl = '#root';
openBrowser({
url: '',
ignoreBrowserSynchronization: true,
params: [{name: 'depth', value: 4}],
});
}