loleaflet/spec/loadtest.html | 56 ++++++++++++++++++ loleaflet/spec/loadtest/LoadTestSpec.js | 96 ++++++++++++++++++++++++++++++++ loleaflet/spec/runLoadTest.sh | 20 ++++++ 3 files changed, 172 insertions(+)
New commits: commit 079b8c562f24908e19b0a55d8fcfc589ea9cee30 Author: Mihai Varga <mihai.va...@collabora.com> Date: Tue Aug 11 17:21:25 2015 +0300 loleaflet: script to launch more clients I think we need to use chrome as firefox doesn't load inactive tabs. And also we need to load the clients (chrome tabs) synchronously as starting too many tabs at once will cause it to fail. diff --git a/loleaflet/spec/runLoadTest.sh b/loleaflet/spec/runLoadTest.sh new file mode 100755 index 0000000..bb35673 --- /dev/null +++ b/loleaflet/spec/runLoadTest.sh @@ -0,0 +1,20 @@ +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 +google-chrome loadtest.html & +sleep 0.2 commit f9a7c800314fcd1b5d16ecc9f887b36363712d19 Author: Mihai Varga <mihai.va...@collabora.com> Date: Tue Aug 11 17:20:12 2015 +0300 loleafet: document loading test. Opening loadtest.html in the browser launches a 'client' that opens several documents and scrolls them diff --git a/loleaflet/spec/loadtest.html b/loleaflet/spec/loadtest.html new file mode 100644 index 0000000..9fc91d6 --- /dev/null +++ b/loleaflet/spec/loadtest.html @@ -0,0 +1,56 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>LOOL Spec Runner</title> + <link rel="stylesheet" type="text/css" href="../node_modules/mocha/mocha.css"> + <link rel="stylesheet" type="text/css" href="../dist/leaflet.css"> + <link rel="stylesheet" type="text/css" href="../src/scrollbar/jquery.mCustomScrollbar.css"> + <link rel="stylesheet" type="text/css" href="../dist/dialog/vex.css" /> + <link rel="stylesheet" type="text/css" href="../dist/dialog/vex-theme-plain.css" /> +</head> +<body> + <script src="expect.js"></script> + <script type="text/javascript" src="../node_modules/mocha/mocha.js"></script> + <script type="text/javascript" src="../node_modules/happen/happen.js"></script> + <script type="text/javascript" src="sinon.js"></script> + <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> + <script>window.jQuery || document.write('<script src="../src/scrollbar/jquery-1.11.0.min.js"><\/script>')</script> + <script src="../src/scrollbar/jquery.mCustomScrollbar.js"></script> + <script src="../dist/dialog/vex.combined.min.js"></script> + <script>vex.defaultOptions.className = 'vex-theme-plain';</script> + + <!-- source files --> + <script type="text/javascript" src="../build/deps.js"></script> + + <script type="text/javascript" src="../debug/leaflet-include.js"></script> + + <script> + mocha.setup({ + ui: 'bdd', + ignoreLeaks: true + }); + </script> + + <!-- spec files --> + <script type="text/javascript" src="loadtest/LoadTestSpec.js"></script> + + <div id="toolbar" style="hidden"> + </div> + <div id="map-test" style="height:300px; width:100%; position:absolute; top:0; opacity:0.5"></div> + <div id="mocha" style="top:300px; position:absolute"></div> + + <style> + #mocha-stats { + top: 300px; + } + #mocha-report { + min-width: 250px; + } + </style> + + <script> + (window.mochaPhantomJS || window.mocha).run(); + </script> +</body> +</html> diff --git a/loleaflet/spec/loadtest/LoadTestSpec.js b/loleaflet/spec/loadtest/LoadTestSpec.js new file mode 100644 index 0000000..bc4b624 --- /dev/null +++ b/loleaflet/spec/loadtest/LoadTestSpec.js @@ -0,0 +1,96 @@ +describe('LoadTest', function () { + // 25 s timeout + this.timeout(25000); + var testsRan = 0, + checkTimeOut = null, + map = null, + docLayer = null, + x = 0, + y = 0; + + before(function() { + map = L.map('map-test', { + center: [0, 0], + zoom: 10, + minZoom: 1, + maxZoom: 20, + server: 'ws://localhost:9980', + doubleClickZoom: false + }); + map.on('docsize', function (e) { x = e.x; y = e.y; }, this); + }); + + var docPath = 'file:///PATH'; + var docs = ['eval.odt', 'lorem.odt']; + + docs.forEach(function (testDoc) { + testsRan += 1; + describe('Document #' + testsRan + ' (' + testDoc + ')', function () { + + afterEach(function () { + map.off('statusindicator'); + }); + + after(function () { + map.socket.onmessage = function () {}; + map.socket.onclose = function () {}; + map.socket.onerror = function () {}; + map.socket.close(); + }); + + it('Load the document', function (done) { + map._initSocket(); + map.on('statusindicator', function (e) { + if (e.statusType === 'alltilesloaded') { + done(); + } + }); + + if (docLayer) { + map.removeLayer(docLayer); + } + + docLayer = new L.TileLayer('', { + doc: docPath + testDoc, + useSocket : true, + edit: false, + readOnly: false + }); + + // don't pre-fetch tiles + docLayer._preFetchTiles = L.Util.falseFn; + + map.addLayer(docLayer); + }); + + it('Scroll to the middle', function (done) { + map.on('statusindicator', function (e) { + if (e.statusType === 'alltilesloaded') { + clearTimeout(checkTimeOut); + done(); + } + }); + map.scrollTop(y / 2); + checkTimeOut = setTimeout(function () { + expect(map._docLayer._emptyTilesCount).to.eql(1); + done(); + }, 2000); + }); + + it('Scroll to the bottom', function (done) { + map.on('statusindicator', function (e) { + if (e.statusType === 'alltilesloaded') { + clearTimeout(checkTimeOut); + done(); + } + }); + map.scrollTop(y); + checkTimeOut = setTimeout(function () { + expect(map._docLayer._emptyTilesCount).to.eql(1); + done(); + }, 2000); + }); + + }); + }); +}); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits