15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)(function(){ 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var DRT = { 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) baseURL: "./resources/dromaeo/web/index.html", 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setup: function(testName) { 6926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var ITERATION_COUNT = 5; 7926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) PerfTestRunner.prepareToMeasureValuesAsync({dromaeoIterationCount: ITERATION_COUNT, doNotMeasureMemoryUsage: true, doNotIgnoreInitialRun: true, unit: 'runs/s'}); 8926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var iframe = document.createElement("iframe"); 10926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var url = DRT.baseURL + "?" + testName + '&numTests=' + ITERATION_COUNT; 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframe.setAttribute("src", url); 12926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) document.body.insertBefore(iframe, document.body.firstChild); 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) iframe.addEventListener( 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "load", function() { 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DRT.targetDocument = iframe.contentDocument; 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DRT.targetWindow = iframe.contentDocument.defaultView; 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.addEventListener( 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "message", 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function(event) { 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) switch(event.data.name) { 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "dromaeo:ready": 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DRT.start(); 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "dromaeo:progress": 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DRT.progress(event.data); 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) case "dromaeo:alldone": 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DRT.teardown(event.data); 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }); 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) start: function() { 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DRT.targetWindow.postMessage({ name: "dromaeo:start" } , "*"); 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) progress: function(message) { 41926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var score = message.status.score; 42926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (score) 43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) DRT.log(score.name + ': [' + score.times.join(', ') + ']'); 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) teardown: function(data) { 47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) PerfTestRunner.log(''); 48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var tests = data.result; 50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var times = []; 51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < tests.length; ++i) { 52926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var j = 0; j < tests[i].times.length; ++j) { 53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var runsPerSecond = tests[i].times[j]; 54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) times[j] = (times[j] || 0) + 1 / runsPerSecond; 55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < times.length; ++i) 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) PerfTestRunner.measureValueAsync(1 / times[i]); 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) targetDelegateOf: function(functionName) { 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return function() { 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DRT.targetWindow[functionName].apply(null, arguments); 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) log: function(text) { 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PerfTestRunner.log(text); 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // These functions are referred from htmlrunner.js 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.startTest = DRT.targetDelegateOf("startTest"); 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.test = DRT.targetDelegateOf("test"); 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.endTest = DRT.targetDelegateOf("endTest"); 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.prep = DRT.targetDelegateOf("prep"); 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) window.DRT = DRT; 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) })(); 81