Title: [213117] trunk/Websites/perf.webkit.org
Revision
213117
Author
rn...@webkit.org
Date
2017-02-27 20:07:05 -0800 (Mon, 27 Feb 2017)

Log Message

Calling build() on a baseline point results in an exception
https://bugs.webkit.org/show_bug.cgi?id=168959

Reviewed by Joseph Pecoraro.

Some baseline points may lack the build information. e.g. A custom data point made by an user.
Only instantiate Build object in a point object returned by MeasurementAdaptor when the builder id
is available so that we don't hit an assertion inside Build's constructor.

* public/v3/models/measurement-adaptor.js:
(MeasurementAdaptor.prototype.applyTo..build): Only instantiate Build when builderId is set.
* unit-tests/measurement-adaptor-tests.js: Added a test case.

Modified Paths

Diff

Modified: trunk/Websites/perf.webkit.org/ChangeLog (213116 => 213117)


--- trunk/Websites/perf.webkit.org/ChangeLog	2017-02-28 03:30:33 UTC (rev 213116)
+++ trunk/Websites/perf.webkit.org/ChangeLog	2017-02-28 04:07:05 UTC (rev 213117)
@@ -1,5 +1,20 @@
 2017-02-27  Ryosuke Niwa  <rn...@webkit.org>
 
+        Calling build() on a baseline point results in an exception
+        https://bugs.webkit.org/show_bug.cgi?id=168959
+
+        Reviewed by Joseph Pecoraro.
+
+        Some baseline points may lack the build information. e.g. A custom data point made by an user.
+        Only instantiate Build object in a point object returned by MeasurementAdaptor when the builder id
+        is available so that we don't hit an assertion inside Build's constructor.
+
+        * public/v3/models/measurement-adaptor.js:
+        (MeasurementAdaptor.prototype.applyTo..build): Only instantiate Build when builderId is set.
+        * unit-tests/measurement-adaptor-tests.js: Added a test case.
+
+2017-02-27  Ryosuke Niwa  <rn...@webkit.org>
+
         Arrow key shouldn't move the indicator beyond the visible points
         https://bugs.webkit.org/show_bug.cgi?id=168956
 

Modified: trunk/Websites/perf.webkit.org/public/v3/models/measurement-adaptor.js (213116 => 213117)


--- trunk/Websites/perf.webkit.org/public/v3/models/measurement-adaptor.js	2017-02-28 03:30:33 UTC (rev 213116)
+++ trunk/Websites/perf.webkit.org/public/v3/models/measurement-adaptor.js	2017-02-28 04:07:05 UTC (rev 213117)
@@ -61,7 +61,7 @@
             configType: null,
             rootSet: function () { return MeasurementRootSet.ensureSingleton(id, row[self._revisionsIndex]); },
             build: function () {
-                if (cachedBuild == null)
+                if (cachedBuild == null && builderId)
                     cachedBuild = new Build(buildId, Builder.findById(builderId), row[self._buildNumberIndex], row[self._buildTimeIndex]);
                 return cachedBuild;
             },

Modified: trunk/Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js (213116 => 213117)


--- trunk/Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js	2017-02-28 03:30:33 UTC (rev 213116)
+++ trunk/Websites/perf.webkit.org/unit-tests/measurement-adaptor-tests.js	2017-02-28 04:07:05 UTC (rev 213117)
@@ -5,7 +5,7 @@
 require('../tools/js/v3-models.js');
 let MockModels = require('./resources/mock-v3-models.js').MockModels;
 
-var sampleCluster = {
+const sampleCluster = {
     'clusterStart': 946684800000,
     'clusterSize': 5184000000,
     'configurations': {
@@ -12,6 +12,9 @@
         'current': [
             [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],
             [28952257, 220.11455357143, 20, 4402.2910714286, 969099.67509885, false, [[111, 9, '10.11 15D21', 0], [444, 11, '192486', 1447713500460]], 1447713500460, 184614, 1447760255683, '177', 176]
+        ],
+        'baseline': [
+            [10548956, 312.59, 1, 0, 0, false, [], 1420070400000, 67724, 1420070400000, "0", 0]
         ]
     },
     'formatMap': ['id', 'mean', 'iterationCount', 'sum', 'squareSum', 'markedOutlier', 'revisions',
@@ -23,7 +26,8 @@
     'elapsedTime': 210.68406105042,
     'status': 'OK'
 };
-var sampleData = sampleCluster.configurations.current[0];
+const sampleData = sampleCluster.configurations.current[0];
+const sampleCustomBaselineData = sampleCluster.configurations.baseline[0];
 
 describe('MeasurementAdaptor', function () {
     MockModels.inject();
@@ -30,43 +34,48 @@
 
     describe('applyTo', function () {
         it('should adapt id', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            assert.equal(adoptor.applyTo(sampleData).id, 28954983);
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            assert.equal(adaptor.applyTo(sampleData).id, 28954983);
         });
 
         it('should adapt mean, squareMean, and iteration count', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            assert.equal(adoptor.applyTo(sampleData).value, 217.94607142857);
-            assert.equal(adoptor.applyTo(sampleData).sum, 4358.9214285714);
-            assert.equal(adoptor.applyTo(sampleData).squareSum, 950303.02365434);
-            assert.equal(adoptor.applyTo(sampleData).iterationCount, 20);
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            assert.equal(adaptor.applyTo(sampleData).value, 217.94607142857);
+            assert.equal(adaptor.applyTo(sampleData).sum, 4358.9214285714);
+            assert.equal(adaptor.applyTo(sampleData).squareSum, 950303.02365434);
+            assert.equal(adaptor.applyTo(sampleData).iterationCount, 20);
         });
 
         it('should adapt commitTime as the canonical time', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            assert.equal(adoptor.applyTo(sampleData).time, 1447707055576);
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            assert.equal(adaptor.applyTo(sampleData).time, 1447707055576);
         });
 
         it('should adapt build information as a Build object', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            assert.ok(adoptor.applyTo(sampleData).build() instanceof Build);
-            assert.equal(adoptor.applyTo(sampleData).build().id(), 184629);
-            assert.equal(adoptor.applyTo(sampleData).build().buildNumber(), '178');
-            assert.equal(adoptor.applyTo(sampleData).build().builder(), MockModels.builder);
-            assert.equal(adoptor.applyTo(sampleData).build().label(), 'Build 178 on WebKit Perf Builder');
-            assert.equal(adoptor.applyTo(sampleData).build().url(), 'http://build.webkit.org/builders/WebKit Perf Builder/178');
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            assert.ok(adaptor.applyTo(sampleData).build() instanceof Build);
+            assert.equal(adaptor.applyTo(sampleData).build().id(), 184629);
+            assert.equal(adaptor.applyTo(sampleData).build().buildNumber(), '178');
+            assert.equal(adaptor.applyTo(sampleData).build().builder(), MockModels.builder);
+            assert.equal(adaptor.applyTo(sampleData).build().label(), 'Build 178 on WebKit Perf Builder');
+            assert.equal(adaptor.applyTo(sampleData).build().url(), 'http://build.webkit.org/builders/WebKit Perf Builder/178');
         });
 
+        it('should adapt build information as null when the builder is not specified', function () {
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            assert.equal(adaptor.applyTo(sampleCustomBaselineData).build(), null);
+        });
+
         it('should adapt revision information as a RootSet object', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            var rootSet = adoptor.applyTo(sampleData).rootSet();
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            var rootSet = adaptor.applyTo(sampleData).rootSet();
             assert.ok(rootSet instanceof RootSet);
             assert.equal(rootSet.latestCommitTime(), 1447707055576);
         });
 
         it('should adapt OS X version as a CommitLog object', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            var rootSet = adoptor.applyTo(sampleData).rootSet();
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            var rootSet = adaptor.applyTo(sampleData).rootSet();
             assert.ok(rootSet instanceof RootSet);
             assert.equal(rootSet.latestCommitTime(), 1447707055576);
 
@@ -85,8 +94,8 @@
         });
 
         it('should adapt WebKit revision as a CommitLog object', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            var rootSet = adoptor.applyTo(sampleData).rootSet();
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            var rootSet = adaptor.applyTo(sampleData).rootSet();
 
             assert.ok(rootSet.repositories().indexOf(MockModels.webkit) >= 0);
             assert.equal(rootSet.revisionForRepository(MockModels.webkit), '192483');
@@ -104,12 +113,12 @@
         });
 
         it('should not create separate CommitLog object for the same revision', function () {
-            var adoptor = new MeasurementAdaptor(sampleCluster.formatMap);
-            assert.equal(adoptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.webkit),
-                adoptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.webkit));
+            var adaptor = new MeasurementAdaptor(sampleCluster.formatMap);
+            assert.equal(adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.webkit),
+                adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.webkit));
 
-            assert.equal(adoptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.osx),
-                adoptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.osx));
+            assert.equal(adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.osx),
+                adaptor.applyTo(sampleData).rootSet().commitForRepository(MockModels.osx));
         });
 
     });
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to