Skip to content

Commit d1f03e5

Browse files
committed
fix(benchpress): benchpress fixes and a smoke test for Dart
1 parent 0a0c0d8 commit d1f03e5

File tree

18 files changed

+263
-61
lines changed

18 files changed

+263
-61
lines changed

gulpfile.js

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var multicopy = require('./tools/build/multicopy');
1919
var karma = require('karma').server;
2020
var minimist = require('minimist');
2121
var es5build = require('./tools/build/es5build');
22+
var runServerDartTests = require('./tools/build/run_server_dart_tests');
2223

2324
var DART_SDK = require('./tools/build/dartdetect')(gulp);
2425
// -----------------------
@@ -484,38 +485,46 @@ gulp.task('docs/serve', function() {
484485
});
485486

486487
// ------------------
487-
// tests
488+
// karma tests
489+
// These tests run in the browser and are allowed to access
490+
// HTML DOM APIs.
488491
function getBrowsersFromCLI() {
489492
var args = minimist(process.argv.slice(2));
490493
return [args.browsers?args.browsers:'DartiumWithWebPlatform']
491494
}
492-
gulp.task('test.js', function (done) {
495+
gulp.task('test.unit.js', function (done) {
493496
karma.start({configFile: __dirname + '/karma-js.conf.js'}, done);
494497
});
495-
gulp.task('test.dart', function (done) {
498+
gulp.task('test.unit.dart', function (done) {
496499
karma.start({configFile: __dirname + '/karma-dart.conf.js'}, done);
497500
});
498-
gulp.task('test.js/ci', function (done) {
499-
karma.start({configFile: __dirname + '/karma-js.conf.js', singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done);
501+
gulp.task('test.unit.js/ci', function (done) {
502+
karma.start({configFile: __dirname + '/karma-js.conf.js',
503+
singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done);
500504
});
501-
gulp.task('test.dart/ci', function (done) {
502-
karma.start({configFile: __dirname + '/karma-dart.conf.js', singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done);
505+
gulp.task('test.unit.dart/ci', function (done) {
506+
karma.start({configFile: __dirname + '/karma-dart.conf.js',
507+
singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done);
503508
});
509+
510+
// ------------------
511+
// server tests
512+
// These tests run on the VM on the command-line and are
513+
// allowed to access the file system and network.
514+
gulp.task('test.server.dart', runServerDartTests(gulp, gulpPlugins, {
515+
dest: 'dist/dart'
516+
}));
517+
518+
// -----------------
519+
// test builders
504520
gulp.task('test.transpiler.unittest', function (done) {
505521
return gulp.src('tools/transpiler/unittest/**/*.js')
506522
.pipe(jasmine({
507523
includeStackTrace: true
508524
}))
509525
});
510-
gulp.task('ci', function(done) {
511-
runSequence(
512-
'test.transpiler.unittest',
513-
'test.js/ci',
514-
'test.dart/ci',
515-
done
516-
);
517-
});
518526

527+
// Copy test resources to dist
519528
gulp.task('tests/transform.dart', function() {
520529
return gulp.src('modules/angular2/test/transform/**')
521530
.pipe(gulp.dest('dist/dart/angular2/test/transform'));

modules/angular2/src/facade/lang.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,14 @@ class StringJoiner {
9595
}
9696

9797
class NumberWrapper {
98+
static String toFixed(num n, int fractionDigits) {
99+
return n.toStringAsFixed(fractionDigits);
100+
}
101+
102+
static bool equal(num a, num b) {
103+
return a == b;
104+
}
105+
98106
static int parseIntAutoRadix(String text) {
99107
return int.parse(text);
100108
}

modules/angular2/src/facade/lang.es6

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,14 @@ export class NumberParseError extends Error {
138138

139139

140140
export class NumberWrapper {
141+
static toFixed(n:number, fractionDigits:int):string {
142+
return n.toFixed(fractionDigits);
143+
}
144+
145+
static equal(a, b):boolean {
146+
return a === b;
147+
}
148+
141149
static parseIntAutoRadix(text:string):int {
142150
var result:int = parseInt(text);
143151
if (isNaN(result)) {

modules/angular2/test/transform/transform_test.dart renamed to modules/angular2/test/transform/transform.server.spec.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,11 @@ void _runTests() {
123123
// Read in input & output files.
124124
config.assetPathToInputPath.forEach((key, value) {
125125
config.assetPathToInputPath[key] =
126-
cache.putIfAbsent(value, () => new File(value).readAsStringSync());
126+
cache.putIfAbsent(value, () => new File('test/transform/${value}').readAsStringSync());
127127
});
128128
config.assetPathToExpectedOutputPath.forEach((key, value) {
129129
config.assetPathToExpectedOutputPath[key] = cache.putIfAbsent(value, () {
130-
var code = new File(value).readAsStringSync();
130+
var code = new File('test/transform/${value}').readAsStringSync();
131131
return value.endsWith('dart') ? formatter.format(code) : code;
132132
});
133133
});

modules/benchpress/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ dependencies:
1212
stack_trace: '>=1.1.1 <1.2.0'
1313
angular2:
1414
path: ../angular2
15+
webdriver: ">=0.9.0 <0.10.0"
1516
dev_dependencies:
1617
guinness: ">=0.1.16 <0.2.0"

modules/benchpress/src/metric/perflog_metric.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { PromiseWrapper, Promise } from 'angular2/src/facade/async';
2-
import { isPresent, isBlank, int, BaseException, StringWrapper } from 'angular2/src/facade/lang';
2+
import { isPresent, isBlank, int, BaseException, StringWrapper, Math } from 'angular2/src/facade/lang';
33
import { ListWrapper, StringMap, StringMapWrapper } from 'angular2/src/facade/collection';
44
import { bind, OpaqueToken } from 'angular2/di';
55

@@ -95,7 +95,12 @@ export class PerflogMetric extends Metric {
9595
if (needSort) {
9696
// Need to sort because of the ph==='X' events
9797
ListWrapper.sort(this._remainingEvents, (a,b) => {
98-
return a['ts'] - b['ts'];
98+
var diff = a['ts'] - b['ts'];
99+
return diff > 0
100+
? 1
101+
: diff < 0
102+
? -1
103+
: 0;
99104
});
100105
}
101106
}

modules/benchpress/src/reporter/console_reporter.js

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { print, isPresent, isBlank } from 'angular2/src/facade/lang';
1+
import { print, isPresent, isBlank, NumberWrapper } from 'angular2/src/facade/lang';
22
import { StringMapWrapper, ListWrapper, List } from 'angular2/src/facade/collection';
33
import { Promise, PromiseWrapper } from 'angular2/src/facade/async';
44
import { Math } from 'angular2/src/facade/math';
@@ -28,14 +28,8 @@ export class ConsoleReporter extends Reporter {
2828
return result + value;
2929
}
3030

31-
static _formatNum(num) {
32-
var result;
33-
if (num === 0) {
34-
result = '000';
35-
} else {
36-
result = `${Math.floor(num * 100)}`;
37-
}
38-
return result.substring(0, result.length - 2) + '.' + result.substring(result.length-2);
31+
static _formatNum(n) {
32+
return NumberWrapper.toFixed(n, 2);
3933
}
4034

4135
static _sortedProps(obj) {
@@ -89,7 +83,8 @@ export class ConsoleReporter extends Reporter {
8983
var sample = ListWrapper.map(validSample, (measureValues) => measureValues.values[metricName]);
9084
var mean = Statistic.calculateMean(sample);
9185
var cv = Statistic.calculateCoefficientOfVariation(sample, mean);
92-
return `${ConsoleReporter._formatNum(mean)}\u00B1${Math.floor(cv)}%`;
86+
var formattedCv = NumberWrapper.isNaN(cv) ? 'NaN' : Math.floor(cv);
87+
return `${ConsoleReporter._formatNum(mean)}\u00B1${formattedCv}%`;
9388
})
9489
);
9590
return PromiseWrapper.resolve(null);
Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,32 @@
11
library benchpress.src.webdriver.async_webdriver_adapter_dart;
22

3+
import 'package:webdriver/webdriver.dart' show WebDriver, LogEntry;
34
import 'package:angular2/src/facade/async.dart' show Future;
45
import '../web_driver_adapter.dart' show WebDriverAdapter;
56

67
class AsyncWebDriverAdapter extends WebDriverAdapter {
7-
dynamic _driver;
8-
AsyncWebDriverAdapter(driver) {
9-
this._driver = driver;
10-
}
8+
WebDriver _driver;
9+
AsyncWebDriverAdapter(this._driver);
10+
1111
Future waitFor(Function callback) {
1212
return callback();
1313
}
14+
1415
Future executeScript(String script) {
15-
return this._driver.execute(script);
16+
return _driver.execute(script, const[]);
1617
}
17-
Future capabilities() {
18-
return this._driver.capabilities;
18+
19+
Map capabilities() {
20+
return _driver.capabilities;
1921
}
20-
Future logs(String type) {
21-
return this._driver.logs.get(type);
22+
23+
Future<List<Map>> logs(String type) {
24+
return _driver.logs.get(type)
25+
.map((LogEntry entry) => {
26+
'message': entry.message
27+
})
28+
.fold(<Map>[], (log, Map entry) {
29+
return log..add(entry);
30+
});
2231
}
2332
}

modules/examples/pubspec.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ dependencies:
77
browser: '>=0.10.0 <0.11.0'
88
dev_dependencies:
99
guinness: ">=0.1.16 <0.2.0"
10+
benchpress:
11+
path: ../benchpress
1012
transformers:
1113
- angular2:
1214
bootstrap_entry_point: web/src/hello_world/index_common.dart
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<!doctype html>
2+
<html>
3+
<head>
4+
<title>Benchpress test</title>
5+
</head>
6+
<body>
7+
<button onclick="pleaseLog()">Click me</button>
8+
<div id="log"></div>
9+
10+
<script type="text/javascript">
11+
function pleaseLog() {
12+
document.getElementById("log").innerHTML = "hi";
13+
}
14+
</script>
15+
</body>
16+
</html>

0 commit comments

Comments
 (0)