From 4d1c51feb4a89b2a38c94c3f4e96c907a418a26b Mon Sep 17 00:00:00 2001 From: Philip Peitsch Date: Thu, 21 Nov 2013 21:53:40 +1100 Subject: [PATCH] Isolate document download speed from open speed in benchmark --- programs/benchmark/js/HTMLBenchmark.js | 12 ++-- .../js/{LoadDocument.js => OpenDocument.js} | 4 +- programs/benchmark/js/PreloadDocument.js | 68 +++++++++++++++++++ 3 files changed, 77 insertions(+), 7 deletions(-) rename programs/benchmark/js/{LoadDocument.js => OpenDocument.js} (97%) create mode 100644 programs/benchmark/js/PreloadDocument.js diff --git a/programs/benchmark/js/HTMLBenchmark.js b/programs/benchmark/js/HTMLBenchmark.js index 74e1833b..493a16ae 100644 --- a/programs/benchmark/js/HTMLBenchmark.js +++ b/programs/benchmark/js/HTMLBenchmark.js @@ -39,17 +39,18 @@ define([ "Benchmark", "HTMLResultsRenderer", - "LoadDocument", + "OpenDocument", "EnterEditMode", "MoveCursorToEndDirect", "InsertLetterA", "Remove1Position", "MoveCursor1StepLeft", "SelectEntireDocument", - "RemoveCurrentSelection" + "RemoveCurrentSelection", + "PreloadDocument" ], function (Benchmark, HTMLResultsRenderer, - LoadDocument, EnterEditMode, MoveCursorToEndDirect,InsertLetterA, Remove1Position, MoveCursor1StepLeft, - SelectEntireDocument, RemoveCurrentSelection) { + OpenDocument, EnterEditMode, MoveCursorToEndDirect,InsertLetterA, Remove1Position, MoveCursor1StepLeft, + SelectEntireDocument, RemoveCurrentSelection, PreloadDocument) { "use strict"; /** @@ -64,7 +65,8 @@ define([ loadingScreen.style.display = "none"; - benchmark.actions.push(new LoadDocument(fileUrl)); + benchmark.actions.push(new PreloadDocument(fileUrl)); + benchmark.actions.push(new OpenDocument(fileUrl)); benchmark.actions.push(new EnterEditMode()); // TODO currently times out // benchmark.addAction(new MoveCursorToEndViaCtrlEnd()); diff --git a/programs/benchmark/js/LoadDocument.js b/programs/benchmark/js/OpenDocument.js similarity index 97% rename from programs/benchmark/js/LoadDocument.js rename to programs/benchmark/js/OpenDocument.js index 87e5c9da..5a17279b 100644 --- a/programs/benchmark/js/LoadDocument.js +++ b/programs/benchmark/js/OpenDocument.js @@ -44,7 +44,7 @@ define(["BenchmarkAction"], function(BenchmarkAction) { * @param {!string} docUrl * @constructor */ - function LoadDocument(docUrl) { + function OpenDocument(docUrl) { var state = {description: "Open document " + docUrl}, action = new BenchmarkAction(state); @@ -65,5 +65,5 @@ define(["BenchmarkAction"], function(BenchmarkAction) { }; } - return LoadDocument; + return OpenDocument; }); diff --git a/programs/benchmark/js/PreloadDocument.js b/programs/benchmark/js/PreloadDocument.js new file mode 100644 index 00000000..b4da8a22 --- /dev/null +++ b/programs/benchmark/js/PreloadDocument.js @@ -0,0 +1,68 @@ +/** + * @license + * Copyright (C) 2013 KO GmbH + * + * @licstart + * The JavaScript code in this page is free software: you can redistribute it + * and/or modify it under the terms of the GNU Affero General Public License + * (GNU AGPL) as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. The code is distributed + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU AGPL for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this code. If not, see . + * + * As additional permission under GNU AGPL version 3 section 7, you + * may distribute non-source (e.g., minimized or compacted) forms of + * that code without the copy of the GNU GPL normally required by + * section 4, provided you include this license notice and a URL + * through which recipients can access the Corresponding Source. + * + * As a special exception to the AGPL, any HTML file which merely makes function + * calls to this code, and for that purpose includes it by reference shall be + * deemed a separate work for copyright law purposes. In addition, the copyright + * holders of this code give you permission to combine this code with free + * software libraries that are released under the GNU LGPL. You may copy and + * distribute such a system following the terms of the GNU AGPL for this code + * and the LGPL for the libraries. If you modify this code, you may extend this + * exception to your version of the code, but you are not obligated to do so. + * If you do not wish to do so, delete this exception statement from your + * version. + * + * This license applies to this entire compilation. + * @licend + * @source: http://www.webodf.org/ + * @source: https://github.com/kogmbh/WebODF/ + */ + +define(["BenchmarkAction"], function(BenchmarkAction) { + "use strict"; + + /** + * Fetch the specified document from the remote location and cache in the runtime + * @param {!string} docUrl + * @constructor + */ + function DownloadDocument(docUrl) { + var state = {description: "Download document " + docUrl}, + action = new BenchmarkAction(state); + + function onDocumentDownloaded() { + action.complete(true); + } + + this.subscribe = action.subscribe; + this.state = state; + + /** + * @param {!SharedState} sharedState + */ + this.start = function(sharedState) { + action.start(); + runtime.readFile(docUrl, 'binary', onDocumentDownloaded); + }; + } + + return DownloadDocument; +});