Changeset 212520 in webkit
- Timestamp:
- Feb 16, 2017 7:50:12 PM (7 years ago)
- Location:
- trunk/Websites/perf.webkit.org
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Websites/perf.webkit.org/ChangeLog
r212421 r212520 1 2017-02-16 Ryosuke Niwa <rniwa@webkit.org> 2 3 Modernize and fix measurement-set tests 4 https://bugs.webkit.org/show_bug.cgi?id=168484 5 6 Reviewed by Joseph Pecoraro. 7 8 Modernized and fixed the tests in measurement-set-tests.js. 9 10 1. Return a promise instead of manually calling done in then/catch hanlders. 11 2. Use arrow function everywhere. 12 3. Explicitly assert the number of calls to callbacks instead of asserting never reached. 13 14 The test case labled "should return false when the range ends after the fetched cluster" 15 was incorrectly asserting that hasFetchedRange returns false when the end time is after 16 the primary cluster's end time. Test an interval before the primary cluster instead. 17 18 Added a test case for hasFetchedRange returning true when the end time appears after 19 the end of the primary cluster and fixed hasFetchedRange to that end. Since there are 20 no data points after the primary cluster which is chronologically the last cluster, 21 there is nothing to fetch beyond its end time. 22 23 * public/v3/models/measurement-set.js: 24 (MeasurementSet.prototype.hasFetchedRange): Fixed the bug that this function returned 25 false when the end time was after the primary cluster's end by truncating the range by 26 the end of the primary cluster. 27 * unit-tests/measurement-set-tests.js: 28 * unit-tests/resources/mock-remote-api.js: 29 (assert.notReached.assert.notReached): Deleted. It's no longer used by any tests. 30 1 31 2017-02-15 Ryosuke Niwa <rniwa@webkit.org> 2 32 -
trunk/Websites/perf.webkit.org/public/v3/models/measurement-set.js
r204296 r212520 162 162 { 163 163 console.assert(startTime < endTime); 164 var foundStart = false; 165 var previousEndTime = null; 164 let foundStart = false; 165 let previousEndTime = null; 166 endTime = Math.min(endTime, this._primaryClusterEndTime); 166 167 for (var cluster of this._sortedClusters) { 167 varcontainsStart = cluster.startTime() <= startTime && startTime <= cluster.endTime();168 varcontainsEnd = cluster.startTime() <= endTime && endTime <= cluster.endTime();169 varpreceedingClusterIsMissing = previousEndTime !== null && previousEndTime != cluster.startTime();168 const containsStart = cluster.startTime() <= startTime && startTime <= cluster.endTime(); 169 const containsEnd = cluster.startTime() <= endTime && endTime <= cluster.endTime(); 170 const preceedingClusterIsMissing = previousEndTime !== null && previousEndTime != cluster.startTime(); 170 171 if (containsStart && containsEnd) 171 172 return true; -
trunk/Websites/perf.webkit.org/unit-tests/measurement-set-tests.js
r210673 r212520 9 9 const MockModels = require('./resources/mock-v3-models.js').MockModels; 10 10 11 describe('MeasurementSet', function (){11 describe('MeasurementSet', () => { 12 12 MockModels.inject(); 13 13 let requests = MockRemoteAPI.inject(); 14 14 15 beforeEach( function (){15 beforeEach(() => { 16 16 MeasurementSet._set = null; 17 17 }); … … 19 19 function waitForMeasurementSet() 20 20 { 21 return Promise.resolve().then( function (){21 return Promise.resolve().then(() => { 22 22 return Promise.resolve(); 23 }).then( function (){23 }).then(() => { 24 24 return Promise.resolve(); 25 25 }); 26 26 } 27 27 28 describe('findSet', function (){29 it('should create a new MeasurementSet for a new pair of platform and matric', function (){28 describe('findSet', () => { 29 it('should create a new MeasurementSet for a new pair of platform and matric', () => { 30 30 assert.notEqual(MeasurementSet.findSet(1, 1, 3000), MeasurementSet.findSet(1, 2, 3000)); 31 31 assert.notEqual(MeasurementSet.findSet(1, 1, 3000), MeasurementSet.findSet(2, 1, 3000)); 32 32 }); 33 33 34 it('should not create a new MeasurementSet when the same pair of platform and matric are requested', function (){34 it('should not create a new MeasurementSet when the same pair of platform and matric are requested', () => { 35 35 assert.equal(MeasurementSet.findSet(1, 1), MeasurementSet.findSet(1, 1)); 36 36 }); 37 37 }); 38 38 39 describe('findClusters', function (){40 41 it('should return clusters that exist', function (done){42 varset = MeasurementSet.findSet(1, 1, 1467852503940);43 varcallCount = 0;44 var promise = set.fetchBetween(1465084800000, 1470268800000, function (){39 describe('findClusters', () => { 40 41 it('should return clusters that exist', () => { 42 const set = MeasurementSet.findSet(1, 1, 1467852503940); 43 let callCount = 0; 44 const promise = set.fetchBetween(1465084800000, 1470268800000, () => { 45 45 callCount++; 46 46 }); … … 59 59 'status': 'OK'}); 60 60 61 promise.then(function (){61 return promise.then(() => { 62 62 assert.deepEqual(set.findClusters(0, Date.now()), [1449532800000, 1454716800000, 1459900800000, 1465084800000, 1470268800000]); 63 done();64 }).catch(function (error) {65 done(error);66 63 }); 67 64 }); … … 69 66 }); 70 67 71 describe('fetchBetween', function () { 72 it('should always request the cached primary cluster first', function () { 73 var set = MeasurementSet.findSet(1, 1, 3000); 74 set.fetchBetween(1000, 2000, function () { assert.notReached(); }); 75 assert.equal(requests.length, 1); 76 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 77 }); 78 79 it('should not request the cached primary cluster twice', function () { 80 var set = MeasurementSet.findSet(1, 1, 3000); 81 set.fetchBetween(1000, 2000, function () { assert.notReached(); }); 82 assert.equal(requests.length, 1); 83 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 84 set.fetchBetween(2000, 3000, function () { assert.notReached(); }); 85 assert.equal(requests.length, 1); 86 }); 87 88 it('should invoke the callback when the up-to-date cached primary cluster is fetched and it matches the requested range', function (done) { 89 var set = MeasurementSet.findSet(1, 1, 3000); 90 var callCount = 0; 91 var promise = set.fetchBetween(2000, 3000, function () { 92 callCount++; 93 }); 68 describe('fetchBetween', () => { 69 it('should always request the cached primary cluster first', () => { 70 const set = MeasurementSet.findSet(1, 1, 3000); 71 let callCount = 0; 72 set.fetchBetween(1000, 2000, () => callCount++); 73 assert.equal(requests.length, 1); 74 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 75 assert.equal(callCount, 0); 76 }); 77 78 it('should not request the cached primary cluster twice', () => { 79 const set = MeasurementSet.findSet(1, 1, 3000); 80 let callCount = 0; 81 set.fetchBetween(1000, 2000, () => callCount++); 82 assert.equal(requests.length, 1); 83 assert.equal(callCount, 0); 84 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 85 set.fetchBetween(2000, 3000, () => callCount++); 86 assert.equal(requests.length, 1); 87 assert.equal(callCount, 0); 88 }); 89 90 it('should invoke the callback when the requested range is in the cached primary cluster', () => { 91 const set = MeasurementSet.findSet(1, 1, 3000); 92 let callCount = 0; 93 const promise = set.fetchBetween(2000, 3000, () => callCount++); 94 94 assert.equal(requests.length, 1); 95 95 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 106 106 'status': 'OK'}); 107 107 108 promise.then(function (){108 return promise.then(() => { 109 109 assert.equal(callCount, 1); 110 110 assert.equal(requests.length, 1); 111 done(); 112 }).catch(function (error) { 113 done(error); 114 }); 115 }); 116 117 it('should invoke the callback and fetch a secondary cluster when the cached primary cluster is up-to-date and within in the requested range', function (done) { 118 var set = MeasurementSet.findSet(1, 1, 3000); 119 var callCount = 0; 120 var promise = set.fetchBetween(1000, 3000, function () { 121 callCount++; 122 }); 111 }); 112 }); 113 114 it('should invoke the callback and fetch a secondary cluster when the cached primary cluster is within the requested range', () => { 115 const set = MeasurementSet.findSet(1, 1, 3000); 116 let callCount = 0; 117 const promise = set.fetchBetween(1000, 3000, () => callCount++); 123 118 assert.equal(requests.length, 1); 124 119 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 135 130 'status': 'OK'}); 136 131 137 waitForMeasurementSet().then(function (){132 return waitForMeasurementSet().then(() => { 138 133 assert.equal(callCount, 1); 139 134 assert.equal(requests.length, 2); 140 135 assert.equal(requests[1].url, '../data/measurement-set-1-1-2000.json'); 141 done(); 142 }).catch(function (error) { 143 done(error); 144 }); 145 }); 146 147 it('should request additional secondary clusters as requested', function (done) { 148 var set = MeasurementSet.findSet(1, 1, 5000); 149 set.fetchBetween(2000, 3000, function () { 150 assert.notReached(); 151 }); 136 }); 137 }); 138 139 it('should request additional secondary clusters as requested', () => { 140 const set = MeasurementSet.findSet(1, 1, 5000); 141 let callCountForWaitingCallback = 0; 142 set.fetchBetween(2000, 3000, () => callCountForWaitingCallback++); 152 143 assert.equal(requests.length, 1); 153 144 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 164 155 'status': 'OK'}); 165 156 166 varcallCount = 0;167 waitForMeasurementSet().then(function (){157 let callCount = 0; 158 return waitForMeasurementSet().then(() => { 168 159 assert.equal(requests.length, 2); 169 160 assert.equal(requests[1].url, '../data/measurement-set-1-1-3000.json'); 170 161 171 set.fetchBetween(0, 7000, function () { callCount++; }); 172 173 return waitForMeasurementSet(); 174 }).then(function () { 162 set.fetchBetween(0, 7000, () => callCount++); 163 164 return waitForMeasurementSet(); 165 }).then(() => { 166 assert.equal(callCountForWaitingCallback, 0); 175 167 assert.equal(callCount, 1); 176 168 assert.equal(requests.length, 4); 177 169 assert.equal(requests[2].url, '../data/measurement-set-1-1-2000.json'); 178 170 assert.equal(requests[3].url, '../data/measurement-set-1-1-4000.json'); 179 180 done(); 181 }).catch(function (error) { 182 done(error); 183 }); 184 }); 185 186 it('should request secondary clusters which forms a superset of the requested range', function (done) { 187 var set = MeasurementSet.findSet(1, 1, 5000); 188 set.fetchBetween(2707, 4207, function () { 189 assert.notReached(); 190 }); 171 }); 172 }); 173 174 it('should request secondary clusters which forms a superset of the requested range', () => { 175 const set = MeasurementSet.findSet(1, 1, 5000); 176 let callCount = 0; 177 const promise = set.fetchBetween(2707, 4207, () => callCount++); 191 178 assert.equal(requests.length, 1); 192 179 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 203 190 'status': 'OK'}); 204 191 205 waitForMeasurementSet().then(function (){192 return waitForMeasurementSet().then(() => { 206 193 assert.equal(requests.length, 3); 207 194 assert.equal(requests[1].url, '../data/measurement-set-1-1-3000.json'); 208 195 assert.equal(requests[2].url, '../data/measurement-set-1-1-4000.json'); 209 done(); 210 }).catch(function (error) { 211 done(error); 212 }); 213 }); 214 215 it('should not request secondary clusters that are not requested', function (done) { 216 var set = MeasurementSet.findSet(1, 1, 5000); 217 set.fetchBetween(3200, 3700, function () { 218 assert.notReached(); 219 }); 196 assert.equal(callCount, 1); // 4000-4207 197 }); 198 }); 199 200 it('should not request secondary clusters that are not requested', () => { 201 const set = MeasurementSet.findSet(1, 1, 5000); 202 let callCountForWaitingCallback = 0; 203 set.fetchBetween(3200, 3700, () => callCountForWaitingCallback++); 220 204 assert.equal(requests.length, 1); 221 205 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 232 216 'status': 'OK'}); 233 217 234 varcallCount = 0;235 waitForMeasurementSet().then(function (){218 let callCount = 0; 219 return waitForMeasurementSet().then(() => { 236 220 assert.equal(requests.length, 2); 237 221 assert.equal(requests[1].url, '../data/measurement-set-1-1-4000.json'); 238 set.fetchBetween(1207, 1293, function () { callCount++; }); 239 return waitForMeasurementSet(); 240 }).then(function () { 222 set.fetchBetween(1207, 1293, () => callCount++); 223 return waitForMeasurementSet(); 224 }).then(() => { 225 assert.equal(callCountForWaitingCallback, 0); 241 226 assert.equal(callCount, 0); 242 227 assert.equal(requests.length, 3); 243 228 assert.equal(requests[2].url, '../data/measurement-set-1-1-2000.json'); 244 set.fetchBetween(1964, 3401, function () { callCount++; }); 245 return waitForMeasurementSet(); 246 }).then(function () { 229 set.fetchBetween(1964, 3401, () => callCount++); 230 return waitForMeasurementSet(); 231 }).then(() => { 232 assert.equal(callCountForWaitingCallback, 0); 247 233 assert.equal(callCount, 0); 248 234 assert.equal(requests.length, 4); 249 235 assert.equal(requests[3].url, '../data/measurement-set-1-1-3000.json'); 250 done(); 251 }).catch(function (error) { 252 done(error); 253 }); 254 }); 255 256 it('should not request a cluster before the very first cluster', function (done) { 257 var set = MeasurementSet.findSet(1, 1, 5000); 258 set.fetchBetween(0, 3000, function () { 259 assert.notReached(); 260 }); 236 }); 237 }); 238 239 it('should not request a cluster before the very first cluster', () => { 240 const set = MeasurementSet.findSet(1, 1, 5000); 241 let callCount = 0; 242 set.fetchBetween(0, 3000, () => callCount++); 261 243 assert.equal(requests.length, 1); 262 244 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 273 255 'status': 'OK'}); 274 256 275 var callCount = 0; 276 waitForMeasurementSet().then(function () { 257 return waitForMeasurementSet().then(() => { 277 258 assert.equal(requests.length, 1); 278 done(); 279 }).catch(function (error) { 280 done(error); 281 }); 282 }); 283 284 it('should invoke the callback when the fetching of the primray cluster fails', function (done) { 285 var set = MeasurementSet.findSet(1, 1, 3000); 286 var callCount = 0; 287 set.fetchBetween(1000, 3000, function () { 288 callCount++; 289 }); 259 assert.equal(callCount, 1); 260 }); 261 }); 262 263 it('should invoke the callback when the fetching of the primray cluster fails', () => { 264 const set = MeasurementSet.findSet(1, 1, 3000); 265 let callCount = 0; 266 let rejected = false; 267 set.fetchBetween(1000, 3000, () => callCount++).catch(() => rejected = true); 290 268 assert.equal(requests.length, 1); 291 269 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 293 271 requests[0].reject(500); 294 272 295 waitForMeasurementSet().then(function (){273 return waitForMeasurementSet().then(() => { 296 274 assert.equal(callCount, 1); 297 275 assert.equal(requests.length, 1); 298 done(); 299 }).catch(function (error) { 300 done(error); 301 }); 302 }); 303 304 it('should request the uncached primary cluster when the cached cluster is outdated', function (done) { 305 var set = MeasurementSet.findSet(1, 1, 3005); 306 var callCount = 0; 307 set.fetchBetween(1000, 2000, function () { 308 callCount++; 309 }); 276 assert(rejected); 277 }); 278 }); 279 280 it('should request the uncached primary cluster when the cached cluster is outdated', () => { 281 const set = MeasurementSet.findSet(1, 1, 3005); 282 let callCount = 0; 283 set.fetchBetween(1000, 2000, () => callCount++); 310 284 assert.equal(requests.length, 1); 311 285 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 322 296 'status': 'OK'}); 323 297 324 Promise.resolve().then(function (){298 return waitForMeasurementSet().then(() => { 325 299 assert.equal(callCount, 0); 326 300 assert.equal(requests.length, 2); 327 301 assert.equal(requests[1].url, '../api/measurement-set?platform=1&metric=1'); 328 done(); 329 }).catch(function (error) { 330 done(error); 331 }); 332 }); 333 334 it('should request the uncached primary cluster when the cached cluster is 404', function (done) { 335 var set = MeasurementSet.findSet(1, 1, 3005); 336 var callCount = 0; 337 set.fetchBetween(1000, 2000, function () { 338 callCount++; 339 }); 302 }); 303 }); 304 305 it('should request the uncached primary cluster when the cached cluster is 404', () => { 306 const set = MeasurementSet.findSet(1, 1, 3005); 307 let callCount = 0; 308 set.fetchBetween(1000, 2000, () => callCount++); 340 309 assert.equal(requests.length, 1); 341 310 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 343 312 requests[0].reject(404); 344 313 345 waitForMeasurementSet().then(function (){314 return waitForMeasurementSet().then(() => { 346 315 assert.equal(callCount, 0); 347 316 assert.equal(requests.length, 2); 348 317 assert.equal(requests[1].url, '../api/measurement-set?platform=1&metric=1'); 349 done(); 350 }).catch(function (error) { 351 done(error); 352 }); 353 }); 354 355 it('should request the uncached primary cluster when noCache is true', function (done) { 356 var set = MeasurementSet.findSet(1, 1, 3000); 357 var callCount = 0; 358 set.fetchBetween(1000, 3000, function () { 359 callCount++; 360 }); 318 }); 319 }); 320 321 it('should request the uncached primary cluster when noCache is true', () => { 322 const set = MeasurementSet.findSet(1, 1, 3000); 323 let callCount = 0; 324 set.fetchBetween(1000, 3000, () => callCount++); 361 325 assert.equal(requests.length, 1); 362 326 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 373 337 'status': 'OK'}); 374 338 375 varnoCacheFetchCount = 0;376 waitForMeasurementSet().then(function (){339 let noCacheFetchCount = 0; 340 return waitForMeasurementSet().then(() => { 377 341 assert.equal(callCount, 1); 378 342 assert.equal(noCacheFetchCount, 0); … … 392 356 'status': 'OK'}); 393 357 394 set.fetchBetween(1000, 3000, function () { 395 noCacheFetchCount++; 396 }, true /* noCache */); 397 398 return waitForMeasurementSet(); 399 }).then(function () { 358 set.fetchBetween(1000, 3000, () => noCacheFetchCount++, true /* noCache */); 359 360 return waitForMeasurementSet(); 361 }).then(() => { 400 362 assert.equal(callCount, 2); 401 363 assert.equal(noCacheFetchCount, 0); … … 416 378 417 379 return waitForMeasurementSet(); 418 }).then( function (){380 }).then(() => { 419 381 assert.equal(callCount, 2); 420 382 assert.equal(noCacheFetchCount, 1); … … 435 397 436 398 return waitForMeasurementSet(); 437 }).then( function (){399 }).then(() => { 438 400 assert.equal(callCount, 3); 439 401 assert.equal(noCacheFetchCount, 2); 440 402 assert.equal(set._sortedClusters.length, 2); 441 403 assert.equal(requests.length, 4); 442 443 done(); 444 }).catch(function (error) { 445 done(error); 446 }); 447 }); 448 449 it('should not request the primary cluster twice when multiple clients request it but should invoke all callbacks', function (done) { 450 var set = MeasurementSet.findSet(1, 1, 3000); 451 var callCount = 0; 452 set.fetchBetween(2000, 3000, function () { 453 callCount++; 454 }); 455 assert.equal(requests.length, 1); 456 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 457 458 var alternativeCallCount = 0; 459 set.fetchBetween(2000, 3000, function () { 460 alternativeCallCount++; 461 }); 404 }); 405 }); 406 407 it('should not request the primary cluster twice when multiple clients request it but should invoke all callbacks', () => { 408 const set = MeasurementSet.findSet(1, 1, 3000); 409 let callCount = 0; 410 set.fetchBetween(2000, 3000, () => callCount++); 411 assert.equal(requests.length, 1); 412 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 413 414 let alternativeCallCount = 0; 415 set.fetchBetween(2000, 3000, () => alternativeCallCount++); 462 416 463 417 requests[0].resolve({ … … 472 426 'status': 'OK'}); 473 427 474 waitForMeasurementSet().then(function (){428 return waitForMeasurementSet().then(() => { 475 429 assert.equal(callCount, 1); 476 430 assert.equal(alternativeCallCount, 1); 477 431 assert.equal(requests.length, 1); 478 done(); 479 }).catch(function (error) { 480 done(error); 481 }); 482 }); 483 484 it('should invoke callback for each secondary clusters that are fetched or rejected', function (done) { 485 var set = MeasurementSet.findSet(1, 1, 5000); 486 var callCountFor4000 = 0; 487 set.fetchBetween(3200, 3700, function () { callCountFor4000++; }); 432 }); 433 }); 434 435 it('should invoke callback for each secondary clusters that are fetched or rejected', () => { 436 const set = MeasurementSet.findSet(1, 1, 5000); 437 let callCountFor4000 = 0; 438 set.fetchBetween(3200, 3700, () => callCountFor4000++); 488 439 assert.equal(requests.length, 1); 489 440 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 500 451 'status': 'OK'}); 501 452 502 varcallCountFor4000To5000 = 0;503 varcallCountFor2000 = 0;504 varcallCountFor2000To4000 = 0;505 waitForMeasurementSet().then(function (){453 let callCountFor4000To5000 = 0; 454 let callCountFor2000 = 0; 455 let callCountFor2000To4000 = 0; 456 return waitForMeasurementSet().then(() => { 506 457 assert.equal(callCountFor4000, 0); 507 458 assert.equal(requests.length, 2); 508 459 assert.equal(requests[1].url, '../data/measurement-set-1-1-4000.json'); 509 460 510 set.fetchBetween(3708, 4800, function () { callCountFor4000To5000++; });511 return waitForMeasurementSet(); 512 }).then( function (){461 set.fetchBetween(3708, 4800, () => callCountFor4000To5000++); 462 return waitForMeasurementSet(); 463 }).then(() => { 513 464 assert.equal(callCountFor4000To5000, 1); 514 465 assert.equal(requests.length, 2); 515 466 516 set.fetchBetween(1207, 1293, function () { callCountFor2000++; });517 return waitForMeasurementSet(); 518 }).then( function (){467 set.fetchBetween(1207, 1293, () => callCountFor2000++); 468 return waitForMeasurementSet(); 469 }).then(() => { 519 470 assert.equal(callCountFor2000, 0); 520 471 assert.equal(requests.length, 3); … … 529 480 'status': 'OK'}); 530 481 return waitForMeasurementSet(); 531 }).then( function (){482 }).then(() => { 532 483 assert.equal(requests.length, 3); 533 484 assert.equal(callCountFor4000, 0); … … 535 486 assert.equal(callCountFor2000, 1); 536 487 537 set.fetchBetween(1964, 3401, function (){ callCountFor2000To4000++; });538 return waitForMeasurementSet(); 539 }).then( function (){488 set.fetchBetween(1964, 3401, () => { callCountFor2000To4000++; }); 489 return waitForMeasurementSet(); 490 }).then(() => { 540 491 assert.equal(callCountFor2000To4000, 1); 541 492 assert.equal(requests.length, 4); … … 550 501 'status': 'OK'}); 551 502 return waitForMeasurementSet(); 552 }).then( function (){503 }).then(() => { 553 504 assert.equal(callCountFor4000, 0); 554 505 assert.equal(callCountFor4000To5000, 1); … … 565 516 'status': 'OK'}); 566 517 return waitForMeasurementSet(); 567 }).then( function (){518 }).then(() => { 568 519 assert.equal(callCountFor4000, 1); 569 520 assert.equal(callCountFor4000To5000, 2); … … 571 522 assert.equal(callCountFor2000To4000, 3); 572 523 assert.equal(requests.length, 4); 573 574 done(); 575 }).catch(function (error) { 576 done(error); 577 }) 524 }); 578 525 }); 579 526 580 527 }); 581 528 582 describe('hasFetchedRange', function (){583 584 it('should return false when no clusters had been fetched', function (){529 describe('hasFetchedRange', () => { 530 531 it('should return false when no clusters had been fetched', () => { 585 532 var set = MeasurementSet.findSet(1, 1, 3000); 586 533 assert(!set.hasFetchedRange(2000, 3000)); 587 534 }); 588 535 589 it('should return true when a single cluster contains the entire range', function (done){590 varset = MeasurementSet.findSet(1, 1, 3000);591 varpromise = set.fetchBetween(2000, 3000);536 it('should return true when a single cluster contains the entire range', () => { 537 const set = MeasurementSet.findSet(1, 1, 3000); 538 const promise = set.fetchBetween(2000, 3000); 592 539 assert.equal(requests.length, 1); 593 540 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 604 551 'status': 'OK'}); 605 552 606 promise.then(function (){553 return promise.then(() => { 607 554 assert(set.hasFetchedRange(2001, 2999)); 608 555 assert(set.hasFetchedRange(2000, 3000)); 609 done(); 610 }).catch(function (error) { 611 done(error); 612 }); 613 }); 614 615 it('should return false when the range starts before the fetched cluster', function (done) { 616 var set = MeasurementSet.findSet(1, 1, 3000); 617 var promise = set.fetchBetween(2000, 3000); 556 }); 557 }); 558 559 it('should return false when the range starts before the fetched cluster', () => { 560 const set = MeasurementSet.findSet(1, 1, 3000); 561 const promise = set.fetchBetween(2000, 3000); 618 562 assert.equal(requests.length, 1); 619 563 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 630 574 'status': 'OK'}); 631 575 632 promise.then(function (){576 return promise.then(() => { 633 577 assert(!set.hasFetchedRange(1500, 3000)); 634 done(); 635 }).catch(function (error) { 636 done(error); 637 }); 638 }); 639 640 it('should return false when the range ends after the fetched cluster', function (done) { 641 var set = MeasurementSet.findSet(1, 1, 3000); 642 var promise = set.fetchBetween(2000, 3000); 643 assert.equal(requests.length, 1); 644 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 645 646 requests[0].resolve({ 647 'clusterStart': 1000, 648 'clusterSize': 1000, 649 'formatMap': [], 650 'configurations': {current: []}, 651 'startTime': 2000, 652 'endTime': 3000, 653 'lastModified': 3000, 654 'clusterCount': 2, 655 'status': 'OK'}); 656 657 promise.then(function () { 578 }); 579 }); 580 581 it('should return false when the range ends after the fetched cluster', () => { 582 const set = MeasurementSet.findSet(1, 1, 5000); 583 const promise = set.fetchBetween(2000, 3000); 584 assert.equal(requests.length, 1); 585 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 586 587 requests[0].resolve({ 588 'clusterStart': 1000, 589 'clusterSize': 1000, 590 'formatMap': [], 591 'configurations': {current: []}, 592 'startTime': 4000, 593 'endTime': 5000, 594 'lastModified': 5000, 595 'clusterCount': 3, 596 'status': 'OK'}); 597 598 return waitForMeasurementSet().then(() => { 599 assert.equal(requests.length, 2); 600 assert.equal(requests[1].url, '../data/measurement-set-1-1-3000.json'); 601 requests[1].resolve({ 602 'clusterStart': 1000, 603 'clusterSize': 1000, 604 'formatMap': [], 605 'configurations': {current: []}, 606 'startTime': 2000, 607 'endTime': 3000, 608 'lastModified': 5000, 609 'clusterCount': 3, 610 'status': 'OK'}); 611 }).then(() => { 658 612 assert(!set.hasFetchedRange(2500, 3500)); 659 done(); 660 }).catch(function (error) { 661 done(error); 662 }); 663 }); 664 665 it('should return true when the range is within two fetched clusters', function (done) { 666 var set = MeasurementSet.findSet(1, 1, 5000); 667 var promise = set.fetchBetween(2000, 3000); 613 }); 614 }); 615 616 it('should return true when the range is within two fetched clusters', () => { 617 const set = MeasurementSet.findSet(1, 1, 5000); 618 set.fetchBetween(2000, 3000); 668 619 assert.equal(requests.length, 1); 669 620 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 680 631 'status': 'OK'}); 681 632 682 waitForMeasurementSet().then(function (){633 return waitForMeasurementSet().then(() => { 683 634 assert.equal(requests.length, 2); 684 635 assert.equal(requests[1].url, '../data/measurement-set-1-1-3000.json'); … … 693 644 'clusterCount': 2, 694 645 'status': 'OK'}); 695 }).then( function (){646 }).then(() => { 696 647 assert(set.hasFetchedRange(2500, 3500)); 697 done(); 698 }).catch(function (error) { 699 done(error); 700 }); 701 }); 702 703 it('should return false when there is a cluster missing in the range', function (done) { 704 var set = MeasurementSet.findSet(1, 1, 5000); 705 var promise = set.fetchBetween(2000, 5000); 648 }); 649 }); 650 651 it('should return false when there is a cluster missing in the range', () => { 652 const set = MeasurementSet.findSet(1, 1, 5000); 653 set.fetchBetween(2000, 5000); 706 654 assert.equal(requests.length, 1); 707 655 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 718 666 'status': 'OK'}); 719 667 720 waitForMeasurementSet().then(function (){668 return waitForMeasurementSet().then(() => { 721 669 assert.equal(requests.length, 3); 722 670 assert.equal(requests[1].url, '../data/measurement-set-1-1-3000.json'); … … 732 680 'clusterCount': 2, 733 681 'status': 'OK'}); 734 }).then( function (){682 }).then(() => { 735 683 assert(!set.hasFetchedRange(2500, 4500)); 736 684 assert(set.hasFetchedRange(2100, 2300)); 737 685 assert(set.hasFetchedRange(4000, 4800)); 738 done(); 739 }).catch(function (error) { 740 done(error); 686 }); 687 }); 688 689 it('should return true even when the range extends beyond the primary cluster', () => { 690 const set = MeasurementSet.findSet(1, 1, 3000); 691 const promise = set.fetchBetween(2000, 3000); 692 assert.equal(requests.length, 1); 693 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); 694 695 requests[0].resolve({ 696 'clusterStart': 1000, 697 'clusterSize': 1000, 698 'formatMap': [], 699 'configurations': {current: []}, 700 'startTime': 2000, 701 'endTime': 3000, 702 'lastModified': 3000, 703 'clusterCount': 2, 704 'status': 'OK'}); 705 706 return promise.then(() => { 707 assert(set.hasFetchedRange(2001, 5000)); 741 708 }); 742 709 }); … … 804 771 let builder; 805 772 let webkit; 806 beforeEach( function (){773 beforeEach(() => { 807 774 builder = new Builder(7, {name: 'EFL Linux 64-bit Release WK2 (Perf)', buildUrl: 'http://build.webkit.org/builders/$builderName/$buildNumber'}); 808 775 webkit = new Repository(1, {name: 'WebKit', url: 'http://trac.webkit.org/changeset/$1'}); … … 983 950 }); 984 951 985 describe('fetchSegmentation', function (){952 describe('fetchSegmentation', () => { 986 953 987 954 var simpleSegmentableValues = [ … … 1009 976 } 1010 977 1011 it('should be able to segment a single cluster', function (done){1012 varset = MeasurementSet.findSet(1, 1, 5000);1013 varpromise = set.fetchBetween(4000, 5000);978 it('should be able to segment a single cluster', () => { 979 const set = MeasurementSet.findSet(1, 1, 5000); 980 const promise = set.fetchBetween(4000, 5000); 1014 981 assert.equal(requests.length, 1); 1015 982 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 1028 995 var timeSeries; 1029 996 assert.equal(set.fetchedTimeSeries('current', false, false).length(), 0); 1030 waitForMeasurementSet().then(function (){997 return waitForMeasurementSet().then(() => { 1031 998 timeSeries = set.fetchedTimeSeries('current', false, false); 1032 999 assert.equal(timeSeries.length(), 45); … … 1034 1001 assert.equal(timeSeries.lastPoint().time, 4880); 1035 1002 return set.fetchSegmentation('segmentTimeSeriesByMaximizingSchwarzCriterion', [], 'current', false); 1036 }).then( function (segmentation){1003 }).then((segmentation) => { 1037 1004 assert.equal(segmentation.length, 4); 1038 1005 … … 1046 1013 assert.equal(segmentation[2].value, segmentation[3].value); 1047 1014 assert.equal(segmentation[3].time, 4880); 1048 done(); 1049 }).catch(done); 1050 }); 1051 1052 it('should be able to segment two clusters', function (done) { 1053 var set = MeasurementSet.findSet(1, 1, 5000); 1054 var promise = set.fetchBetween(3000, 5000); 1015 }); 1016 }); 1017 1018 it('should be able to segment two clusters', () => { 1019 const set = MeasurementSet.findSet(1, 1, 5000); 1020 const promise = set.fetchBetween(3000, 5000); 1055 1021 assert.equal(requests.length, 1); 1056 1022 assert.equal(requests[0].url, '../data/measurement-set-1-1.json'); … … 1067 1033 'status': 'OK'}); 1068 1034 1069 waitForMeasurementSet().then(function (){1035 return waitForMeasurementSet().then(() => { 1070 1036 assert.equal(requests.length, 2); 1071 1037 assert.equal(requests[1].url, '../data/measurement-set-1-1-4000.json'); 1072 1038 return set.fetchSegmentation('segmentTimeSeriesByMaximizingSchwarzCriterion', [], 'current', false); 1073 }).then( function (segmentation){1074 vartimeSeries = set.fetchedTimeSeries('current', false, false);1039 }).then((segmentation) => { 1040 const timeSeries = set.fetchedTimeSeries('current', false, false); 1075 1041 assert.equal(timeSeries.length(), 15); 1076 1042 assert.equal(timeSeries.firstPoint().time, 4000); … … 1099 1065 'status': 'OK'}); 1100 1066 return waitForMeasurementSet(); 1101 }).then( function (){1067 }).then(() => { 1102 1068 return set.fetchSegmentation('segmentTimeSeriesByMaximizingSchwarzCriterion', [], 'current', false); 1103 }).then( function (segmentation){1069 }).then((segmentation) => { 1104 1070 var timeSeries = set.fetchedTimeSeries('current', false, false); 1105 1071 assert.equal(timeSeries.length(), 45); … … 1117 1083 assert.equal(segmentation[2].value, segmentation[3].value); 1118 1084 assert.equal(segmentation[3].time, timeSeries.lastPoint().time); 1119 done(); 1120 }).catch(done); 1085 }); 1121 1086 }); 1122 1087 -
trunk/Websites/perf.webkit.org/unit-tests/resources/mock-remote-api.js
r202001 r212520 1 var assert = require('assert');2 3 if (!assert.notReached)4 assert.notReached = function () { assert(false, 'This code path should not be reached'); }5 6 1 var MockRemoteAPI = { 7 2 url: function (path)
Note: See TracChangeset
for help on using the changeset viewer.