<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[210673] trunk/Websites/perf.webkit.org</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/210673">210673</a></dd>
<dt>Author</dt> <dd>rniwa@webkit.org</dd>
<dt>Date</dt> <dd>2017-01-12 11:32:20 -0800 (Thu, 12 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Outliers are not hidden in v3 UI
https://bugs.webkit.org/show_bug.cgi?id=166966

Reviewed by Andreas Kling.

Fixed the typo in addToSeries. An outlier has markedOutlier set to true, not isOutlier.

Also fixed a bug unveiled by new tests in MeasurementRootSet.ensureSingleton. It was was creating
a new MeasurementRootSet each time it was called instead of finding an existing instance. Fixed the bug
by merging the static maps of MeasurementRootSet and RootSet.

* public/v3/models/measurement-cluster.js:
(MeasurementCluster.prototype.addToSeries): Fixed the bug.
* public/v3/models/root-set.js:
(MeasurementRootSet.prototype.namedStaticMap): Added.
(MeasurementRootSet.prototype.ensureNamedStaticMap): Added.
(MeasurementRootSet.namedStaticMap): Added.
(MeasurementRootSet.ensureNamedStaticMap): Added.
* unit-tests/measurement-set-tests.js: Added tests for adopting time series data from a cluster.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkWebsitesperfwebkitorgChangeLog">trunk/Websites/perf.webkit.org/ChangeLog</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3modelsmeasurementclusterjs">trunk/Websites/perf.webkit.org/public/v3/models/measurement-cluster.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgpublicv3modelsrootsetjs">trunk/Websites/perf.webkit.org/public/v3/models/root-set.js</a></li>
<li><a href="#trunkWebsitesperfwebkitorgunittestsmeasurementsettestsjs">trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkWebsitesperfwebkitorgChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/ChangeLog (210672 => 210673)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/ChangeLog        2017-01-12 19:27:54 UTC (rev 210672)
+++ trunk/Websites/perf.webkit.org/ChangeLog        2017-01-12 19:32:20 UTC (rev 210673)
</span><span class="lines">@@ -1,5 +1,27 @@
</span><span class="cx"> 2017-01-12  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><ins>+        Outliers are not hidden in v3 UI
+        https://bugs.webkit.org/show_bug.cgi?id=166966
+
+        Reviewed by Andreas Kling.
+
+        Fixed the typo in addToSeries. An outlier has markedOutlier set to true, not isOutlier.
+
+        Also fixed a bug unveiled by new tests in MeasurementRootSet.ensureSingleton. It was was creating
+        a new MeasurementRootSet each time it was called instead of finding an existing instance. Fixed the bug
+        by merging the static maps of MeasurementRootSet and RootSet.
+
+        * public/v3/models/measurement-cluster.js:
+        (MeasurementCluster.prototype.addToSeries): Fixed the bug.
+        * public/v3/models/root-set.js:
+        (MeasurementRootSet.prototype.namedStaticMap): Added.
+        (MeasurementRootSet.prototype.ensureNamedStaticMap): Added.
+        (MeasurementRootSet.namedStaticMap): Added.
+        (MeasurementRootSet.ensureNamedStaticMap): Added.
+        * unit-tests/measurement-set-tests.js: Added tests for adopting time series data from a cluster.
+
+2017-01-12  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
+
</ins><span class="cx">         Hide the UI to trigger an A/B testing when there are no triggerables
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=166964
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3modelsmeasurementclusterjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/models/measurement-cluster.js (210672 => 210673)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/models/measurement-cluster.js        2017-01-12 19:27:54 UTC (rev 210672)
+++ trunk/Websites/perf.webkit.org/public/v3/models/measurement-cluster.js        2017-01-12 19:32:20 UTC (rev 210673)
</span><span class="lines">@@ -19,7 +19,7 @@
</span><span class="cx">         var self = this;
</span><span class="cx">         for (var row of rawMeasurements) {
</span><span class="cx">             var point = this._adaptor.applyTo(row);
</span><del>-            if (point.id in idMap || (!includeOutliers &amp;&amp; point.isOutlier))
</del><ins>+            if (point.id in idMap || (!includeOutliers &amp;&amp; point.markedOutlier))
</ins><span class="cx">                 continue;
</span><span class="cx">             series.append(point);
</span><span class="cx">             idMap[point.id] = point.seriesIndex;
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgpublicv3modelsrootsetjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/public/v3/models/root-set.js (210672 => 210673)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/public/v3/models/root-set.js        2017-01-12 19:27:54 UTC (rev 210672)
+++ trunk/Websites/perf.webkit.org/public/v3/models/root-set.js        2017-01-12 19:32:20 UTC (rev 210673)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx">         return commit ? commit.revision() : null;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // FIXME: This should return a Date object.
</ins><span class="cx">     latestCommitTime()
</span><span class="cx">     {
</span><span class="cx">         if (this._latestCommitTime == null) {
</span><span class="lines">@@ -86,6 +87,13 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    // Use RootSet's static maps because MeasurementRootSet and RootSet are logically of the same type.
+    // FIXME: Idaelly, DataModel should take care of this but traversing prototype chain is expensive.
+    namedStaticMap(name) { return RootSet.namedStaticMap(name); }
+    ensureNamedStaticMap(name) { return RootSet.ensureNamedStaticMap(name); }
+    static namedStaticMap(name) { return RootSet.namedStaticMap(name); }
+    static ensureNamedStaticMap(name) { return RootSet.ensureNamedStaticMap(name); }
+
</ins><span class="cx">     static ensureSingleton(measurementId, revisionList)
</span><span class="cx">     {
</span><span class="cx">         var rootSetId = measurementId + '-rootset';
</span></span></pre></div>
<a id="trunkWebsitesperfwebkitorgunittestsmeasurementsettestsjs"></a>
<div class="modfile"><h4>Modified: trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js (210672 => 210673)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js        2017-01-12 19:27:54 UTC (rev 210672)
+++ trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js        2017-01-12 19:32:20 UTC (rev 210673)
</span><span class="lines">@@ -1,12 +1,12 @@
</span><span class="cx"> 'use strict';
</span><span class="cx"> 
</span><del>-var assert = require('assert');
</del><ins>+const assert = require('assert');
</ins><span class="cx"> if (!assert.almostEqual)
</span><span class="cx">     assert.almostEqual = require('./resources/almost-equal.js');
</span><span class="cx"> 
</span><del>-let MockRemoteAPI = require('./resources/mock-remote-api.js').MockRemoteAPI;
</del><ins>+const MockRemoteAPI = require('./resources/mock-remote-api.js').MockRemoteAPI;
</ins><span class="cx"> require('../tools/js/v3-models.js');
</span><del>-let MockModels = require('./resources/mock-v3-models.js').MockModels;
</del><ins>+const MockModels = require('./resources/mock-v3-models.js').MockModels;
</ins><span class="cx"> 
</span><span class="cx"> describe('MeasurementSet', function () {
</span><span class="cx">     MockModels.inject();
</span><span class="lines">@@ -743,6 +743,245 @@
</span><span class="cx"> 
</span><span class="cx">     });
</span><span class="cx"> 
</span><ins>+    describe('fetchedTimeSeries', () =&gt; {
+
+        // Data from https://perf.webkit.org/v3/#/charts?paneList=((15-769))&amp;since=1476426488465
+        const sampleCluster = {
+            &quot;clusterStart&quot;: 946684800000,
+            &quot;clusterSize&quot;: 5184000000,
+            &quot;configurations&quot;: {
+                &quot;current&quot;: [
+                    [
+                        26530031, 135.26375, 80, 10821.1, 1481628.13, false,
+                        [ [27173, 1, &quot;210096&quot;, 1482398562950] ],
+                        1482398562950, 52999, 1482413222311, &quot;10877&quot;, 7
+                    ],
+                    [
+                        26530779, 153.2675, 80, 12261.4, 1991987.4, true, // changed to true.
+                        [ [27174,1,&quot;210097&quot;,1482424870729] ],
+                        1482424870729, 53000, 1482424992735, &quot;10878&quot;, 7
+                    ],
+                    [
+                        26532275, 134.2725, 80, 10741.8, 1458311.88, false,
+                        [ [ 27176, 1, &quot;210102&quot;, 1482431464371 ] ],
+                        1482431464371, 53002, 1482436041865, &quot;10879&quot;, 7
+                    ],
+                    [
+                        26547226, 150.9625, 80, 12077, 1908614.94, false,
+                        [ [ 27195, 1, &quot;210168&quot;, 1482852412735 ] ],
+                        1482852412735, 53022, 1482852452143, &quot;10902&quot;, 7
+                    ],
+                    [
+                        26559915, 141.72, 80, 11337.6, 1633126.8, false,
+                        [ [ 27211, 1, &quot;210222&quot;, 1483347732051 ] ],
+                        1483347732051, 53039, 1483347926429, &quot;10924&quot;, 7
+                    ],
+                    [
+                        26564388, 138.13125, 80, 11050.5, 1551157.93, false,
+                        [ [ 27217, 1, &quot;210231&quot;, 1483412171531 ] ],
+                        1483412171531, 53045, 1483415426049, &quot;10930&quot;, 7
+                    ],
+                    [
+                        26568867, 144.16, 80, 11532.8, 1694941.1, false,
+                        [ [ 27222, 1, &quot;210240&quot;, 1483469584347 ] ],
+                        1483469584347, 53051, 1483469642993, &quot;10935&quot;, 7
+                    ]
+                ]
+            },
+            &quot;formatMap&quot;: [
+                &quot;id&quot;, &quot;mean&quot;, &quot;iterationCount&quot;, &quot;sum&quot;, &quot;squareSum&quot;, &quot;markedOutlier&quot;,
+                &quot;revisions&quot;,
+                &quot;commitTime&quot;, &quot;build&quot;, &quot;buildTime&quot;, &quot;buildNumber&quot;, &quot;builder&quot;
+            ],
+            &quot;startTime&quot;: 1480636800000,
+            &quot;endTime&quot;: 1485820800000,
+            &quot;lastModified&quot;: 1484105738736,
+            &quot;clusterCount&quot;: 1,
+            &quot;elapsedTime&quot;: 56.421995162964,
+            &quot;status&quot;: &quot;OK&quot;
+        };
+
+        let builder;
+        let webkit;
+        beforeEach(function () {
+            builder = new Builder(7, {name: 'EFL Linux 64-bit Release WK2 (Perf)', buildUrl: 'http://build.webkit.org/builders/$builderName/$buildNumber'});
+            webkit = new Repository(1, {name: 'WebKit', url: 'http://trac.webkit.org/changeset/$1'});
+        });
+
+        function fetchSampleCluster() {
+            const set = MeasurementSet.findSet(15, 769, 1484105738736);
+            const promise = set.fetchBetween(1476426488465, 1484203801573);
+            assert.equal(requests.length, 1);
+            assert.equal(requests[0].url, '../data/measurement-set-15-769.json');
+
+            requests[0].resolve(sampleCluster);
+
+            return waitForMeasurementSet().then(() =&gt; { return set; })
+        }
+
+        it('should include all data points from the fetched cluster when includeOutliers is true', () =&gt; {
+            let points;
+            return fetchSampleCluster().then((set) =&gt; {
+                const includeOutliers = true;
+                const extendToFuture = false;
+                const fullSeries = set.fetchedTimeSeries('current', includeOutliers, extendToFuture);
+                assert.equal(fullSeries.length(), 7);
+
+                points = new Array(7);
+                for (let i = 0; i &lt; 7; i++)
+                    points[i] = fullSeries.findPointByIndex(i);
+            }).then(() =&gt; {
+                const point = points[0];
+                assert.equal(point.id, 26530031);
+
+                const commitTime = 1482398562950;
+                const rootSet = point.rootSet();
+                assert.equal(point.rootSet(), rootSet);
+                assert.deepEqual(rootSet.repositories(), [webkit]);
+                assert.equal(rootSet.revisionForRepository(webkit), '210096');
+                const commit = rootSet.commitForRepository(webkit);
+                assert.equal(commit.repository(), webkit);
+                assert.equal(+commit.time(), commitTime);
+                assert.equal(commit.author(), null);
+                assert.equal(commit.revision(), '210096');
+                assert.equal(commit.message(), null);
+                assert.equal(commit.url(), 'http://trac.webkit.org/changeset/210096');
+                assert.equal(commit.label(), 'r210096');
+                assert.equal(commit.title(), 'WebKit at r210096');
+                assert.equal(rootSet.latestCommitTime(), commitTime);
+
+                const build = point.build();
+                assert.equal(point.build(), build);
+                assert.equal(build.builder(), builder);
+                assert.equal(build.buildNumber(), 10877);
+                const buildTime = build.buildTime();
+                assert(buildTime instanceof Date);
+                assert.equal(+buildTime, 1482413222311);
+
+                assert.equal(point.time, commitTime);
+                assert.equal(point.value, 135.26375);
+                assert.equal(point.sum, 10821.1);
+                assert.equal(point.squareSum, 1481628.13);
+                assert.equal(point.iterationCount, 80);
+                assert.equal(point.markedOutlier, false);
+            }).then(() =&gt; {
+                const point = points[1];
+                assert.equal(point.id, 26530779);
+
+                const commitTime = 1482424870729;
+                const rootSet = point.rootSet();
+                assert.equal(rootSet.revisionForRepository(webkit), '210097');
+                const commit = rootSet.commitForRepository(webkit);
+                assert.equal(+commit.time(), commitTime);
+                assert.equal(commit.revision(), '210097');
+                assert.equal(rootSet.latestCommitTime(), commitTime);
+
+                const build = point.build();
+                assert.equal(build.builder(), builder);
+                assert.equal(build.buildNumber(), 10878);
+                assert.equal(+build.buildTime(), 1482424992735);
+
+                assert.equal(point.time, commitTime);
+                assert.equal(point.value, 153.2675);
+                assert.equal(point.sum, 12261.4);
+                assert.equal(point.squareSum, 1991987.4);
+                assert.equal(point.iterationCount, 80);
+                assert.equal(point.markedOutlier, true);
+            }).then(() =&gt; {
+                assert.equal(points[2].id, 26532275);
+                assert.equal(points[2].rootSet().revisionForRepository(webkit), '210102');
+                assert.equal(+points[2].build().buildTime(), 1482436041865);
+                assert.equal(points[2].build().buildNumber(), 10879);
+                assert.equal(points[2].time, 1482431464371);
+                assert.equal(points[2].value, 134.2725);
+
+                assert.equal(points[3].id, 26547226);
+                assert.equal(points[3].rootSet().revisionForRepository(webkit), '210168');
+                assert.equal(+points[3].build().buildTime(), 1482852452143);
+                assert.equal(points[3].build().buildNumber(), 10902);
+                assert.equal(points[3].time, 1482852412735);
+                assert.equal(points[3].value, 150.9625);
+
+                assert.equal(points[4].id, 26559915);
+                assert.equal(points[4].rootSet().revisionForRepository(webkit), '210222');
+                assert.equal(+points[4].build().buildTime(), 1483347926429);
+                assert.equal(points[4].build().buildNumber(), 10924);
+                assert.equal(points[4].time, 1483347732051);
+                assert.equal(points[4].value, 141.72);
+
+                assert.equal(points[5].id, 26564388);
+                assert.equal(points[5].rootSet().revisionForRepository(webkit), '210231');
+                assert.equal(+points[5].build().buildTime(), 1483415426049);
+                assert.equal(points[5].build().buildNumber(), 10930);
+                assert.equal(points[5].time, 1483412171531);
+                assert.equal(points[5].value, 138.13125);
+
+                assert.equal(points[6].id, 26568867);
+                assert.equal(points[6].rootSet().revisionForRepository(webkit), '210240');
+                assert.equal(+points[6].build().buildTime(), 1483469642993);
+                assert.equal(points[6].build().buildNumber(), 10935);
+                assert.equal(points[6].time, 1483469584347);
+                assert.equal(points[6].value, 144.16);
+            });
+        });
+
+        it('should include all data points from the fetched cluster when includeOutliers is false', () =&gt; {
+            return fetchSampleCluster().then((set) =&gt; {
+                const includeOutliers = false;
+                const extendToFuture = false;
+                const fullSeries = set.fetchedTimeSeries('current', includeOutliers, extendToFuture);
+                assert.equal(fullSeries.length(), 6);
+
+                const points = new Array(6);
+                for (let i = 0; i &lt; 6; i++)
+                    points[i] = fullSeries.findPointByIndex(i);
+
+                assert.equal(points[0].id, 26530031);
+                assert.equal(points[0].rootSet().revisionForRepository(webkit), '210096');
+                assert.equal(+points[0].build().buildTime(), 1482413222311);
+                assert.equal(points[0].build().buildNumber(), 10877);
+                assert.equal(points[0].time, 1482398562950);
+                assert.equal(points[0].value, 135.26375);
+
+                assert.equal(points[1].id, 26532275);
+                assert.equal(points[1].rootSet().revisionForRepository(webkit), '210102');
+                assert.equal(+points[1].build().buildTime(), 1482436041865);
+                assert.equal(points[1].build().buildNumber(), 10879);
+                assert.equal(points[1].time, 1482431464371);
+                assert.equal(points[1].value, 134.2725);
+
+                assert.equal(points[2].id, 26547226);
+                assert.equal(points[2].rootSet().revisionForRepository(webkit), '210168');
+                assert.equal(+points[2].build().buildTime(), 1482852452143);
+                assert.equal(points[2].build().buildNumber(), 10902);
+                assert.equal(points[2].time, 1482852412735);
+                assert.equal(points[2].value, 150.9625);
+
+                assert.equal(points[3].id, 26559915);
+                assert.equal(points[3].rootSet().revisionForRepository(webkit), '210222');
+                assert.equal(+points[3].build().buildTime(), 1483347926429);
+                assert.equal(points[3].build().buildNumber(), 10924);
+                assert.equal(points[3].time, 1483347732051);
+                assert.equal(points[3].value, 141.72);
+
+                assert.equal(points[4].id, 26564388);
+                assert.equal(points[4].rootSet().revisionForRepository(webkit), '210231');
+                assert.equal(+points[4].build().buildTime(), 1483415426049);
+                assert.equal(points[4].build().buildNumber(), 10930);
+                assert.equal(points[4].time, 1483412171531);
+                assert.equal(points[4].value, 138.13125);
+
+                assert.equal(points[5].id, 26568867);
+                assert.equal(points[5].rootSet().revisionForRepository(webkit), '210240');
+                assert.equal(+points[5].build().buildTime(), 1483469642993);
+                assert.equal(points[5].build().buildNumber(), 10935);
+                assert.equal(points[5].time, 1483469584347);
+                assert.equal(points[5].value, 144.16);
+            });
+        });
+
+    });
+
</ins><span class="cx">     describe('fetchSegmentation', function () {
</span><span class="cx"> 
</span><span class="cx">         var simpleSegmentableValues = [
</span></span></pre>
</div>
</div>

</body>
</html>