diff options
Diffstat (limited to 'mobile/android/tests/browser/chrome/test_awsy_lite.html')
-rw-r--r-- | mobile/android/tests/browser/chrome/test_awsy_lite.html | 258 |
1 files changed, 0 insertions, 258 deletions
diff --git a/mobile/android/tests/browser/chrome/test_awsy_lite.html b/mobile/android/tests/browser/chrome/test_awsy_lite.html deleted file mode 100644 index 066aaf2ea..000000000 --- a/mobile/android/tests/browser/chrome/test_awsy_lite.html +++ /dev/null @@ -1,258 +0,0 @@ -<!DOCTYPE HTML> -<html> -<!-- - This test reports Firefox memory use to Perfherder. - - Inspired by https://areweslimyet.com/mobile - - https://bugzilla.mozilla.org/show_bug.cgi?id=1233220 ---> -<head> - <meta charset="utf-8"> - <title>Test for Bug 1233220</title> - <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script> - <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/MemoryStats.js"></script> - <link rel="stylesheet" type="text/css" href="chrome://global/skin"/> - <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/> - <script type="application/javascript;version=1.8" src="head.js"></script> - <script type="application/javascript;version=1.8"> - - "use strict"; - - const { interfaces: Ci, utils: Cu, classes: Cc } = Components; - - var kUrls = [ - "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/tp5/baidu.com/www.baidu.com/s@wd=mozilla.html", - "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/tp5/twitter.com/twitter.com/ICHCheezburger.html", - "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/tp5/msn.com/www.msn.com/index.html", - "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/tp5/163.com/www.163.com/index.html", - "http://mochi.test:8888/chrome/mobile/android/tests/browser/chrome/tp5/bbc.co.uk/www.bbc.co.uk/news/index.html" - ]; - - var gTabsOpened = 0; - var gWindow = null; - var gLastTab = null; - var gResults = []; - - Cu.import("resource://gre/modules/Services.jsm"); - - var BrowserApp = Services.wm.getMostRecentWindow("navigator:browser").BrowserApp; - SimpleTest.waitForExplicitFinish(); - SimpleTest.requestLongerTimeout(3); // several long waits and GCs make for a long-running test - SimpleTest.requestCompleteLog(); // so that "PERFHERDER_DATA" can be scraped from the log - - function checkpoint(aName) { - var mrm = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager); - gResults.push( { name: aName, resident: mrm.resident } ); - info(`${aName} | Resident Memory: ${mrm.resident}`); - } - - var browserListener = { - onOpenWindow: function(aWindow) { - var win = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindow); - win.addEventListener("UIReady", function listener(aEvent) { - win.removeEventListener("UIReady", listener, false); - attachTo(win); - }, false); - }, - - onCloseWindow: function(aWindow) { - detachFrom(aWindow); - }, - - onWindowTitleChange: function(aWindow, aTitle) { - } - }; - - function doFullGc(aCallback, aIterations) { - var threadMan = Cc["@mozilla.org/thread-manager;1"].getService(Ci.nsIThreadManager); - var domWindowUtils = gWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor).getInterface(Components.interfaces.nsIDOMWindowUtils); - - function runSoon(f) { - threadMan.mainThread.dispatch({ run: f }, Ci.nsIThread.DISPATCH_NORMAL); - } - - function cc() { - if (domWindowUtils.cycleCollect) { - domWindowUtils.cycleCollect(); - } - Services.obs.notifyObservers(null, "child-cc-request", null); - } - - function minimizeInner() { - // In order of preference: schedulePreciseShrinkingGC, schedulePreciseGC - // garbageCollect - if (++j <= aIterations) { - var schedGC = Cu.schedulePreciseShrinkingGC; - if (!schedGC) { - schedGC = Cu.schedulePreciseGC; - } - - Services.obs.notifyObservers(null, "child-gc-request", null); - - if (schedGC) { - schedGC.call(Cu, { callback: function () { - runSoon(function () { cc(); runSoon(minimizeInner); }); - } }); - } else { - if (domWindowUtils.garbageCollect) { - domWindowUtils.garbageCollect(); - } - runSoon(function () { cc(); runSoon(minimizeInner); }); - } - } else { - runSoon(aCallback); - } - } - - var j = 0; - minimizeInner(); - } - - function attachTo(aWindow) { - if (gWindow != null) { - info("attempting to attach to a second window [" + aWindow + "] while already attached to one window [" + gWindow + "]"); - return; - } - gWindow = aWindow; - setTimeout(startTest, 0); - } - - function detachFrom(aWindow) { - if (gWindow == aWindow) { - gWindow = null; - } - } - - function startup() { - var enumerator = Services.wm.getEnumerator("navigator:browser"); - while (enumerator.hasMoreElements()) { - // potential race condition here - the window may not be ready yet at - // this point, so ideally we would test for that. but i can't find a - // property that reflects whether or not UIReady has been fired, so - // for now just assume the window is ready - attachTo(enumerator.getNext().QueryInterface(Ci.nsIDOMWindow)); - } - Services.wm.addListener(browserListener); - } - - function startTest() { - checkpoint("Fresh start"); - setTimeout(settle, 30000); - } - - function settle() { - checkpoint("Fresh start [+30s]"); - openTab(); - } - - function openTab() { - var urlIndex = gTabsOpened++; - if (urlIndex >= kUrls.length) { - checkpoint("After tabs"); - setTimeout(postOpening, 30000); - return; - } - - info("opening tab with url [" + kUrls[urlIndex] + "]"); - gLastTab = BrowserApp.addTab(kUrls[urlIndex], { selected: true }); - setTimeout(waitForTab, 10000); - } - - function waitForTab() { - if (gLastTab.browser.contentDocument.readyState === "complete") { - gLastTab = null; - openTab(); - } else { - setTimeout(waitForTab, 10000); - } - } - - function postOpening() { - checkpoint("After tabs [+30s]"); - doFullGc(() => closeTabs()); - } - - function closeTabs() { - checkpoint("After tabs [+30s, forced GC]"); - var tabCount = BrowserApp.tabs.length; - for (var i = 1; i < tabCount; i++) { - BrowserApp.closeTab(BrowserApp.tabs[i]); - } - - var closeListener = { - observe: function(aSubject, aTopic, aData) { - tabCount--; - dump("tab count dropped to [" + tabCount + "]"); - if (tabCount == 1) { - Services.obs.removeObserver(this, "Tab:Closed", false); - setTimeout(tabsClosed, 0); - } - } - }; - Services.obs.addObserver(closeListener, "Tab:Closed", false); - } - - function tabsClosed() { - checkpoint("Tabs closed"); - setTimeout(postClosing, 30000); - } - - function postClosing() { - checkpoint("Tabs closed [+30s]"); - doFullGc(() => { - checkpoint("Tabs closed [+30s, forced GC]"); - finalReport(); - ok(true, "memory logging complete -- view results in Perfherder"); - SimpleTest.finish(); - }); - } - - function geomean(aProperty) { - // https://en.wikipedia.org/wiki/Geometric_mean#Relationship_with_arithmetic_mean_of_logarithms - var logsum = 0; - var i; - for (i = 0; i < gResults.length; i++) { - var result = gResults[i]; - logsum += Math.log(result[aProperty]); - } - return Math.round(Math.exp(logsum/gResults.length)); - } - - function finalReport() { - var i; - var perfherder = "PERFHERDER_DATA: "; - perfherder += "{\"framework\": {\"name\": \"awsy\"}, "; - perfherder += "\"suites\": ["; - perfherder += "{\"name\": \"Resident Memory\", "; - perfherder += "\"subtests\": ["; - for (i = 0; i < gResults.length; i++) { - var result = gResults[i]; - if (i > 0) { - perfherder += ", "; - } - perfherder += `{\"name\": \"${result.name}\", \"value\": ${result.resident}}`; - } - perfherder += "], "; // end subtests - perfherder += "\"value\": "+geomean("resident"); - perfherder += "}"; // end Resident Memory suite - perfherder += "]"; // end suites - perfherder += "}"; // end PERFHERDER_DATA - info(perfherder); - } - - startup(); - - </script> -</head> -<body> -<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1233220">Mozilla Bug 1233220</a> -<br> -<p id="display"></p> -<div id="content" style="display: none"> - -</div> -<pre id="test"> -</pre> -</body> -</html> |