build: serve largetable benchmark tests with bazel (#28645)

PR Close #28645
This commit is contained in:
Paul Gschwendtner 2019-02-11 17:55:37 +01:00 committed by Miško Hevery
parent 28bdeeef3e
commit 1a326d5690
17 changed files with 183 additions and 70 deletions

View File

@ -4,14 +4,8 @@ load("//tools:defaults.bzl", "ts_library")
ts_library( ts_library(
name = "util_lib", name = "util_lib",
srcs = [ srcs = ["util.ts"],
"util.ts", deps = ["//modules/benchmarks/src:util_lib"],
],
deps = [
"//modules/benchmarks/src:util_lib",
"//packages:types",
"//packages/core",
],
) )
ts_library( ts_library(

View File

@ -0,0 +1,22 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
ts_library(
name = "baseline",
srcs = glob(["*.ts"]),
tsconfig = "//modules/benchmarks:tsconfig-build.json",
deps = [
"//modules/benchmarks/src:util_lib",
"//modules/benchmarks/src/largetable:util_lib",
],
)
ts_devserver(
name = "devserver",
entry_module = "angular/modules/benchmarks/src/largetable/baseline/index",
index_html = "index.html",
port = 4200,
deps = [":baseline"],
)

View File

@ -1,5 +1,9 @@
<!doctype html> <!doctype html>
<html> <html>
<head>
<!-- Prevent the browser from requesting any favicon. -->
<link rel="icon" href="data:,">
</head>
<body> <body>
<h2>Params</h2> <h2>Params</h2>
@ -24,11 +28,5 @@
<div> <div>
<largetable id="root">Loading...</largetable> <largetable id="root">Loading...</largetable>
</div> </div>
<script>
var mainUrl = window.location.search.split(/[?&]main=([^&]+)/)[1]
|| '../../bootstrap_plain.js';
document.write('<script src="' + mainUrl + '">\u003c/script>');
</script>
</body> </body>
</html> </html>

View File

@ -0,0 +1,25 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
ts_library(
name = "incremental_dom",
srcs = glob(["*.ts"]),
tsconfig = "//modules/benchmarks:tsconfig-build.json",
deps = [
"//modules/benchmarks/src:util_lib",
"//modules/benchmarks/src/largetable:util_lib",
],
)
ts_devserver(
name = "devserver",
entry_module = "angular/modules/benchmarks/src/largetable/incremental_dom/index",
index_html = "index.html",
port = 4200,
static_files = [
"@ngdeps//node_modules/incremental-dom:dist/incremental-dom.js",
],
deps = [":incremental_dom"],
)

View File

@ -1,5 +1,9 @@
<!doctype html> <!doctype html>
<html> <html>
<head>
<!-- Prevent the browser from requesting any favicon. -->
<link rel="icon" href="data:,">
</head>
<body> <body>
<h2>Params</h2> <h2>Params</h2>
@ -24,7 +28,5 @@
<div> <div>
<largetable id="root"></largetable> <largetable id="root"></largetable>
</div> </div>
<script src="../../bootstrap_plain.js"></script>
</body> </body>
</html> </html>

View File

@ -10,24 +10,26 @@ import {bindAction, profile} from '../../util';
import {buildTable, emptyTable} from '../util'; import {buildTable, emptyTable} from '../util';
import {TableComponent} from './table'; import {TableComponent} from './table';
export function main() { let table: TableComponent;
let table: TableComponent;
function destroyDom() { table.data = emptyTable; } function destroyDom() {
table.data = emptyTable;
function createDom() { table.data = buildTable(); }
function noop() {}
function init() {
table = new TableComponent(document.querySelector('largetable'));
bindAction('#destroyDom', destroyDom);
bindAction('#createDom', createDom);
bindAction('#updateDomProfile', profile(createDom, noop, 'update'));
bindAction('#createDomProfile', profile(createDom, destroyDom, 'create'));
}
init();
} }
function createDom() {
table.data = buildTable();
}
function noop() {}
function init() {
table = new TableComponent(document.querySelector('largetable'));
bindAction('#destroyDom', destroyDom);
bindAction('#createDom', createDom);
bindAction('#updateDomProfile', profile(createDom, noop, 'update'));
bindAction('#createDomProfile', profile(createDom, destroyDom, 'create'));
}
init();

View File

@ -7,8 +7,12 @@
*/ */
import {TableCell} from '../util'; import {TableCell} from '../util';
// We load "IncrementalDOM" as a AMD global because the "incremental-dom" NPM package does not
// come with a named UMD module, and it's easier to just import the AMD file and use it globally.
declare const IncrementalDOM: any;
const {patch, elementOpen, elementClose, elementOpenStart, elementOpenEnd, attr, text} = const {patch, elementOpen, elementClose, elementOpenStart, elementOpenEnd, attr, text} =
require('incremental-dom'); IncrementalDOM;
export class TableComponent { export class TableComponent {
constructor(private _rootEl: any) {} constructor(private _rootEl: any) {}

View File

@ -0,0 +1,11 @@
load("//tools:defaults.bzl", "ts_library")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
ts_devserver(
name = "devserver",
index_html = "index.html",
port = 4200,
static_files = ["largetable.js"],
)

View File

@ -1,5 +1,9 @@
<!doctype html> <!doctype html>
<html> <html>
<head>
<!-- Prevent the browser from requesting any favicon. -->
<link rel="icon" href="data:,">
</head>
<body> <body>
<h2>Params</h2> <h2>Params</h2>
@ -24,8 +28,5 @@
<div> <div>
<largetable id="root"></largetable> <largetable id="root"></largetable>
</div> </div>
<script type="text/javascript" src="largetable.js"></script>
</body> </body>
</html> </html>

View File

@ -0,0 +1,35 @@
load("//tools:defaults.bzl", "ng_module")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
# Note that this benchmark has been designed for Angular with ViewEngine, but once
# ViewEngine is removed, we should should consider removing this one since there
# already is a "render3" benchmark.
ng_module(
name = "ng2",
srcs = glob(["*.ts"]),
tsconfig = "//modules/benchmarks:tsconfig-build.json",
# TODO: FW-1004 Type checking is currently not complete.
type_check = False,
deps = [
"//modules/benchmarks/src:util_lib",
"//modules/benchmarks/src/largetable:util_lib",
"//packages/core",
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
],
)
ts_devserver(
name = "devserver",
entry_module = "angular/modules/benchmarks/src/largetable/ng2/index",
index_html = "index.html",
port = 4200,
scripts = ["@ngdeps//node_modules/tslib:tslib.js"],
static_files = [
"@ngdeps//node_modules/zone.js:dist/zone.js",
"@ngdeps//node_modules/reflect-metadata:Reflect.js",
],
deps = [":ng2"],
)

View File

@ -1,5 +1,9 @@
<!doctype html> <!doctype html>
<html> <html>
<head>
<!-- Prevent the browser from requesting any favicon. -->
<link rel="icon" href="data:,">
</head>
<body> <body>
<h2>Params</h2> <h2>Params</h2>
@ -24,11 +28,5 @@
<div> <div>
<largetable id="root">Loading...</largetable> <largetable id="root">Loading...</largetable>
</div> </div>
<script>
var mainUrl = window.location.search.split(/[?&]main=([^&]+)/)[1]
|| '../../bootstrap_ng2.js';
document.write('<script src="' + mainUrl + '">\u003c/script>');
</script>
</body> </body>
</html> </html>

View File

@ -12,7 +12,5 @@ import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {init} from './init'; import {init} from './init';
import {AppModule} from './table'; import {AppModule} from './table';
export function main() { enableProdMode();
enableProdMode(); platformBrowserDynamic().bootstrapModule(AppModule).then(init);
platformBrowserDynamic().bootstrapModule(AppModule).then(init);
}

View File

@ -0,0 +1,32 @@
load("//tools:defaults.bzl", "ng_module")
load("@build_bazel_rules_typescript//:defs.bzl", "ts_devserver")
package(default_visibility = ["//modules/benchmarks:__subpackages__"])
ng_module(
name = "ng2_switch",
srcs = glob(["*.ts"]),
tsconfig = "//modules/benchmarks:tsconfig-build.json",
# TODO: FW-1004 Type checking is currently not complete.
type_check = False,
deps = [
"//modules/benchmarks/src:util_lib",
"//modules/benchmarks/src/largetable:util_lib",
"//packages/core",
"//packages/platform-browser",
"//packages/platform-browser-dynamic",
],
)
ts_devserver(
name = "devserver",
entry_module = "angular/modules/benchmarks/src/largetable/ng2_switch/index",
index_html = "index.html",
port = 4200,
scripts = ["@ngdeps//node_modules/tslib:tslib.js"],
static_files = [
"@ngdeps//node_modules/zone.js:dist/zone.js",
"@ngdeps//node_modules/reflect-metadata:Reflect.js",
],
deps = [":ng2_switch"],
)

View File

@ -1,5 +1,9 @@
<!doctype html> <!doctype html>
<html> <html>
<head>
<!-- Prevent the browser from requesting any favicon. -->
<link rel="icon" href="data:,">
</head>
<body> <body>
<h2>Params</h2> <h2>Params</h2>
@ -24,11 +28,5 @@
<div> <div>
<largetable id="root">Loading...</largetable> <largetable id="root">Loading...</largetable>
</div> </div>
<script>
var mainUrl = window.location.search.split(/[?&]main=([^&]+)/)[1]
|| '../../bootstrap_ng2.js';
document.write('<script src="' + mainUrl + '">\u003c/script>');
</script>
</body> </body>
</html> </html>

View File

@ -12,7 +12,5 @@ import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {init} from './init'; import {init} from './init';
import {AppModule} from './table'; import {AppModule} from './table';
export function main() { enableProdMode();
enableProdMode(); platformBrowserDynamic().bootstrapModule(AppModule).then(init);
platformBrowserDynamic().bootstrapModule(AppModule).then(init);
}

View File

@ -32,20 +32,12 @@ ng_rollup_bundle(
], ],
) )
genrule(
name = "favicon",
srcs = ["//modules/benchmarks:favicon"],
outs = ["favicon.ico"],
cmd = "cp $< $@",
)
ts_devserver( ts_devserver(
name = "devserver", name = "devserver",
static_files = [ static_files = [
":bundle.min_debug.js", ":bundle.min_debug.js",
":bundle.min.js", ":bundle.min.js",
"index.html", "index.html",
":favicon",
], ],
tags = ["ivy-only"], tags = ["ivy-only"],
) )

View File

@ -1,6 +1,9 @@
<!doctype html> <!doctype html>
<html> <html>
<head>
<!-- Prevent the browser from requesting any favicon. -->
<link rel="icon" href="data:,">
</head>
<body> <body>
<h2>Params</h2> <h2>Params</h2>