30a1a32368385fbf19bb66c3419c6fb2abd67fb8
[WebKit-https.git] / Websites / perf.webkit.org / unit-tests / measurement-adaptor-tests.js
1 'use strict';
2
3 var assert = require('assert');
4
5 require('./resources/v3-models');
6
7 var sampleCluster = {
8     'clusterStart': 946684800000,
9     'clusterSize': 5184000000,
10     'configurations': {
11         'current': [
12             [28954983, 217.94607142857, 20, 4358.9214285714, 950303.02365434, false, [[111, 9, '10.11 15D21', 0], [222, 11, '192483', 1447707055576], [333, 999, 'some unknown revision', 0]], 1447707055576, 184629, 1447762266153, '178', 176],
13             [28952257, 220.11455357143, 20, 4402.2910714286, 969099.67509885, false, [[111, 9, '10.11 15D21', 0], [444, 11, '192486', 1447713500460]], 1447713500460, 184614, 1447760255683, '177', 176]
14         ]
15     },
16     'formatMap': ['id', 'mean', 'iterationCount', 'sum', 'squareSum', 'markedOutlier', 'revisions',
17         'commitTime', 'build', 'buildTime', 'buildNumber', 'builder'],
18     'startTime': 1449532800000,
19     'endTime': 1454716800000,
20     'lastModified': 1452067190008,
21     'clusterCount': 2,
22     'elapsedTime': 210.68406105042,
23     'status': 'OK'
24 };
25 var sampleData = sampleCluster.configurations.current[0];
26
27 describe('MeasurementAdaptor', function () {
28     describe('applyTo', function () {
29         it('should adapt id', function () {
30             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
31             assert.equal(adoptor.applyTo(sampleData).id, 28954983);
32         });
33
34         it('should adapt mean, squareMean, and iteration count', function () {
35             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
36             assert.equal(adoptor.applyTo(sampleData).value, 217.94607142857);
37             assert.equal(adoptor.applyTo(sampleData).sum, 4358.9214285714);
38             assert.equal(adoptor.applyTo(sampleData).squareSum, 950303.02365434);
39             assert.equal(adoptor.applyTo(sampleData).iterationCount, 20);
40         });
41
42         it('should adapt commitTime as the canonical time', function () {
43             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
44             assert.equal(adoptor.applyTo(sampleData).time, 1447707055576);
45         });
46
47         it('should adapt build information as a Build object', function () {
48             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
49             assert.ok(adoptor.applyTo(sampleData).build() instanceof Build);
50             assert.equal(adoptor.applyTo(sampleData).build().id(), 184629);
51             assert.equal(adoptor.applyTo(sampleData).build().buildNumber(), '178');
52             assert.equal(adoptor.applyTo(sampleData).build().builder(), builder);
53             assert.equal(adoptor.applyTo(sampleData).build().label(), 'Build 178 on WebKit Perf Builder');
54             assert.equal(adoptor.applyTo(sampleData).build().url(), 'http://build.webkit.org/builders/WebKit Perf Builder/178');
55         });
56
57         it('should adapt revision information as a RootSet object', function () {
58             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
59             var rootSet = adoptor.applyTo(sampleData).rootSet();
60             assert.ok(rootSet instanceof RootSet);
61             assert.equal(rootSet.latestCommitTime(), 1447707055576);
62         });
63
64         it('should adapt OS X version as a CommitLog object', function () {
65             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
66             var rootSet = adoptor.applyTo(sampleData).rootSet();
67             assert.ok(rootSet instanceof RootSet);
68             assert.equal(rootSet.latestCommitTime(), 1447707055576);
69
70             assert.ok(rootSet.repositories().indexOf(osx) >= 0);
71             assert.equal(rootSet.revisionForRepository(osx), '10.11 15D21');
72
73             var commit = rootSet.commitForRepository(osx);
74             assert.ok(commit instanceof CommitLog);
75             assert.equal(commit.repository(), osx);
76             assert.ok(commit.time() instanceof Date);
77             assert.equal(commit.id(), 111);
78             assert.equal(commit.revision(), '10.11 15D21');
79             assert.equal(commit.label(), '10.11 15D21');
80             assert.equal(commit.title(), 'OS X at 10.11 15D21');
81             assert.equal(commit.url(), '');
82         });
83
84         it('should adapt WebKit revision as a CommitLog object', function () {
85             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
86             var rootSet = adoptor.applyTo(sampleData).rootSet();
87
88             assert.ok(rootSet.repositories().indexOf(webkit) >= 0);
89             assert.equal(rootSet.revisionForRepository(webkit), '192483');
90
91             var commit = rootSet.commitForRepository(webkit);
92             assert.ok(commit instanceof CommitLog);
93             assert.equal(commit.repository(), webkit);
94             assert.ok(commit.time() instanceof Date);
95             assert.equal(commit.id(), 222);
96             assert.equal(+commit.time(), 1447707055576);
97             assert.equal(commit.revision(), '192483');
98             assert.equal(commit.label(), 'r192483');
99             assert.equal(commit.title(), 'WebKit at r192483');
100             assert.equal(commit.url(), 'http://trac.webkit.org/changeset/192483');
101         });
102
103         it('should not create separate CommitLog object for the same revision', function () {
104             var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
105             assert.equal(adoptor.applyTo(sampleData).rootSet().commitForRepository(webkit),
106                 adoptor.applyTo(sampleData).rootSet().commitForRepository(webkit));
107
108             assert.equal(adoptor.applyTo(sampleData).rootSet().commitForRepository(osx),
109                 adoptor.applyTo(sampleData).rootSet().commitForRepository(osx));
110         });
111
112     });
113 });