Skip to content

Commit 0602f68

Browse files
ttowncompiledtbosch
authored andcommitted
refactor (angular2/test_lib): ts'ifying last of test_lib
Translates last .es6 files in angular2/src/test_lib to TypeScript.
1 parent 2b60d1b commit 0602f68

20 files changed

+424
-482
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
library angular2.perf_util;
1+
library angular2.test_lib.perf_util;
22

33
// empty as this file is node.js specific and should not be transpiled to dart

modules/angular2/src/test_lib/perf_util.es6

Lines changed: 0 additions & 72 deletions
This file was deleted.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/// <reference path="../../typings/node/node.d.ts" />
2+
/// <reference path="../../typings/angular-protractor/angular-protractor.d.ts" />
3+
4+
var testUtil = require('./e2e_util');
5+
6+
var benchpress = require('benchpress/benchpress');
7+
8+
module.exports = {
9+
runClickBenchmark: runClickBenchmark,
10+
runBenchmark: runBenchmark,
11+
verifyNoBrowserErrors: testUtil.verifyNoBrowserErrors
12+
};
13+
14+
function runClickBenchmark(config) {
15+
var buttons = config.buttons.map(function(selector) { return $(selector); });
16+
config.work = function() { buttons.forEach(function(button) { button.click(); }); };
17+
return runBenchmark(config);
18+
}
19+
20+
function runBenchmark(config) {
21+
return getScaleFactor(browser.params.benchmark.scaling)
22+
.then(function(scaleFactor) {
23+
var description = {};
24+
var urlParams = [];
25+
if (config.params) {
26+
config.params.forEach(function(param) {
27+
var name = param.name;
28+
var value = applyScaleFactor(param.value, scaleFactor, param.scale);
29+
urlParams.push(name + '=' + value);
30+
description[name] = value;
31+
});
32+
}
33+
var url = encodeURI(config.url + '?' + urlParams.join('&'));
34+
return browser.get(url).then(function() {
35+
return new benchpress.Runner().sample({
36+
id: config.id,
37+
execute: config.work,
38+
prepare: config.prepare,
39+
microMetrics: config.microMetrics,
40+
bindings:
41+
[benchpress.bind(benchpress.Options.SAMPLE_DESCRIPTION).toValue(description)]
42+
});
43+
});
44+
});
45+
}
46+
47+
function getScaleFactor(possibleScalings) {
48+
return browser.executeScript('return navigator.userAgent')
49+
.then(function(userAgent: string) {
50+
var scaleFactor = 1;
51+
possibleScalings.forEach(function(entry) {
52+
if (userAgent.match(entry.userAgent)) {
53+
scaleFactor = entry.value;
54+
}
55+
});
56+
return scaleFactor;
57+
});
58+
}
59+
60+
function applyScaleFactor(value, scaleFactor, method) {
61+
if (method === 'log2') {
62+
return value + Math.log(scaleFactor) / Math.LN2;
63+
} else if (method === 'sqrt') {
64+
return value * Math.sqrt(scaleFactor);
65+
} else if (method === 'linear') {
66+
return value * scaleFactor;
67+
} else {
68+
return value;
69+
}
70+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
library angular2.test_lib.shims_for_ie;

modules/angular2/src/test_lib/shims_for_IE.es6

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// function.name
2+
/*! @source http://stackoverflow.com/questions/6903762/function-name-not-supported-in-ie*/
3+
if (!Object.hasOwnProperty('name')) {
4+
Object.defineProperty(Function.prototype, 'name', {
5+
get: function() {
6+
var name = this.toString().match(/^\s*function\s*(\S*)\s*\(/)[1];
7+
// For better performance only parse once, and then cache the
8+
// result through a new accessor for repeated access.
9+
Object.defineProperty(this, 'name', {value: name});
10+
return name;
11+
}
12+
});
13+
}
Lines changed: 62 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,96 +1,87 @@
1-
/// <reference path="../../angular2/typings/node/node.d.ts" />
2-
import {afterEach, describe, it} from 'angular2/test_lib';
3-
4-
var perfUtil = require('angular2/src/test_lib/perf_util');
1+
import {runClickBenchmark, verifyNoBrowserErrors} from 'angular2/src/test_lib/perf_util';
52

63
describe('ng2 change detection benchmark', function() {
74

85
var URL = 'benchmarks/src/change_detection/change_detection_benchmark.html';
96

10-
afterEach(perfUtil.verifyNoBrowserErrors);
7+
afterEach(verifyNoBrowserErrors);
118

129
it('should log ng stats (dynamic, reads)', function(done) {
13-
perfUtil.runClickBenchmark({
14-
url: URL,
15-
buttons: ['#ng2ChangeDetectionDynamicReads'],
16-
id: 'ng2.changeDetection.dynamic.reads',
17-
params: [
18-
{name: 'numberOfChecks', value: 900000},
19-
{name: 'iterations', value: 20, scale: 'linear'}
20-
],
21-
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
22-
})
23-
.then(done, done.fail);
10+
runClickBenchmark({
11+
url: URL,
12+
buttons: ['#ng2ChangeDetectionDynamicReads'],
13+
id: 'ng2.changeDetection.dynamic.reads',
14+
params: [
15+
{name: 'numberOfChecks', value: 900000},
16+
{name: 'iterations', value: 20, scale: 'linear'}
17+
],
18+
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
19+
}).then(done, done.fail);
2420
});
2521

2622
it('should log ng stats (dynamic, writes)', function(done) {
27-
perfUtil.runClickBenchmark({
28-
url: URL,
29-
buttons: ['#ng2ChangeDetectionDynamicWrites'],
30-
id: 'ng2.changeDetection.dynamic.writes',
31-
params: [
32-
{name: 'numberOfChecks', value: 900000},
33-
{name: 'iterations', value: 20, scale: 'linear'}
34-
],
35-
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
36-
})
37-
.then(done, done.fail);
23+
runClickBenchmark({
24+
url: URL,
25+
buttons: ['#ng2ChangeDetectionDynamicWrites'],
26+
id: 'ng2.changeDetection.dynamic.writes',
27+
params: [
28+
{name: 'numberOfChecks', value: 900000},
29+
{name: 'iterations', value: 20, scale: 'linear'}
30+
],
31+
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
32+
}).then(done, done.fail);
3833
});
3934

4035
it('should log ng stats (jit, reads)', function(done) {
41-
perfUtil.runClickBenchmark({
42-
url: URL,
43-
buttons: ['#ng2ChangeDetectionJitReads'],
44-
id: 'ng2.changeDetection.jit.reads',
45-
params: [
46-
{name: 'numberOfChecks', value: 900000},
47-
{name: 'iterations', value: 20, scale: 'linear'}
48-
],
49-
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
50-
})
51-
.then(done, done.fail);
36+
runClickBenchmark({
37+
url: URL,
38+
buttons: ['#ng2ChangeDetectionJitReads'],
39+
id: 'ng2.changeDetection.jit.reads',
40+
params: [
41+
{name: 'numberOfChecks', value: 900000},
42+
{name: 'iterations', value: 20, scale: 'linear'}
43+
],
44+
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
45+
}).then(done, done.fail);
5246
});
5347

5448
it('should log ng stats (jit, writes)', function(done) {
55-
perfUtil.runClickBenchmark({
56-
url: URL,
57-
buttons: ['#ng2ChangeDetectionJitWrites'],
58-
id: 'ng2.changeDetection.jit.writes',
59-
params: [
60-
{name: 'numberOfChecks', value: 900000},
61-
{name: 'iterations', value: 20, scale: 'linear'}
62-
],
63-
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
64-
})
65-
.then(done, done.fail);
49+
runClickBenchmark({
50+
url: URL,
51+
buttons: ['#ng2ChangeDetectionJitWrites'],
52+
id: 'ng2.changeDetection.jit.writes',
53+
params: [
54+
{name: 'numberOfChecks', value: 900000},
55+
{name: 'iterations', value: 20, scale: 'linear'}
56+
],
57+
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
58+
}).then(done, done.fail);
6659
});
6760

6861
it('should log baseline stats (create)', function(done) {
69-
perfUtil.runClickBenchmark({
70-
url: URL,
71-
buttons: ['#baselineChangeDetectionReads'],
72-
id: 'baseline.changeDetection.reads',
73-
params: [
74-
{name: 'numberOfChecks', value: 900000},
75-
{name: 'iterations', value: 20, scale: 'linear'}
76-
],
77-
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
78-
})
79-
.then(done, done.fail);
62+
runClickBenchmark({
63+
url: URL,
64+
buttons: ['#baselineChangeDetectionReads'],
65+
id: 'baseline.changeDetection.reads',
66+
params: [
67+
{name: 'numberOfChecks', value: 900000},
68+
{name: 'iterations', value: 20, scale: 'linear'}
69+
],
70+
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
71+
}).then(done, done.fail);
8072
});
8173

8274
it('should log baseline stats (update)', function(done) {
83-
perfUtil.runClickBenchmark({
84-
url: URL,
85-
buttons: ['#baselineChangeDetectionWrites'],
86-
id: 'baseline.changeDetection.writes',
87-
params: [
88-
{name: 'numberOfChecks', value: 900000},
89-
{name: 'iterations', value: 20, scale: 'linear'}
90-
],
91-
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
92-
})
93-
.then(done, done.fail);
75+
runClickBenchmark({
76+
url: URL,
77+
buttons: ['#baselineChangeDetectionWrites'],
78+
id: 'baseline.changeDetection.writes',
79+
params: [
80+
{name: 'numberOfChecks', value: 900000},
81+
{name: 'iterations', value: 20, scale: 'linear'}
82+
],
83+
microMetrics: {'detectChangesAvg': 'avg time to detect changes (ms)'}
84+
}).then(done, done.fail);
9485
});
9586

9687
});
Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,33 @@
1-
/// <reference path="../../angular2/typings/node/node.d.ts" />
2-
/// <reference path="../../angular2/typings/angular-protractor/angular-protractor.d.ts" />
3-
import {afterEach, describe, it} from 'angular2/test_lib';
4-
5-
var perfUtil = require('angular2/src/test_lib/perf_util');
1+
import {runBenchmark, verifyNoBrowserErrors} from 'angular2/src/test_lib/perf_util';
62

73
describe('ng2 compiler benchmark', function() {
84

95
var URL = 'benchmarks/src/compiler/compiler_benchmark.html';
106

11-
afterEach(perfUtil.verifyNoBrowserErrors);
7+
afterEach(verifyNoBrowserErrors);
128

139
it('should log withBindings stats', function(done) {
14-
perfUtil.runBenchmark({
15-
url: URL,
16-
id: 'ng2.compile.withBindings',
17-
params: [{name: 'elements', value: 150, scale: 'linear'}],
18-
work: function() {
19-
browser.executeScript('document.querySelector("#compileWithBindings").click()');
20-
browser.sleep(500);
21-
}
22-
})
23-
.then(done, done.fail);
10+
runBenchmark({
11+
url: URL,
12+
id: 'ng2.compile.withBindings',
13+
params: [{name: 'elements', value: 150, scale: 'linear'}],
14+
work: function() {
15+
browser.executeScript('document.querySelector("#compileWithBindings").click()');
16+
browser.sleep(500);
17+
}
18+
}).then(done, done.fail);
2419
});
2520

2621
it('should log noBindings stats', function(done) {
27-
perfUtil.runBenchmark({
28-
url: URL,
29-
id: 'ng2.compile.noBindings',
30-
params: [{name: 'elements', value: 150, scale: 'linear'}],
31-
work: function() {
32-
browser.executeScript('document.querySelector("#compileNoBindings").click()');
33-
browser.sleep(500);
34-
}
35-
})
36-
.then(done, done.fail);
22+
runBenchmark({
23+
url: URL,
24+
id: 'ng2.compile.noBindings',
25+
params: [{name: 'elements', value: 150, scale: 'linear'}],
26+
work: function() {
27+
browser.executeScript('document.querySelector("#compileNoBindings").click()');
28+
browser.sleep(500);
29+
}
30+
}).then(done, done.fail);
3731
});
3832

3933
});

0 commit comments

Comments
 (0)