loleaflet/spec/tilebench/TileBenchSpec.js |  337 +++++++++++++++++++++++++++++-
 loleaflet/src/core/Log.js                 |    6 
 2 files changed, 338 insertions(+), 5 deletions(-)

New commits:
commit 1f88357aa8917918a1a5fde10b5aa787be2fb6d9
Author: Mihai Varga <[email protected]>
Date:   Mon Jul 27 17:53:18 2015 +0300

    loleaflet: tilebench - replay an editing session
    
    Sends recorded key input commands to the server over a period
    about 20 seconds and then requests and empty tile so that the
    'alltilesloaded' event is fired in the end, letting us know that the
    editing session finished.

diff --git a/loleaflet/spec/tilebench/TileBenchSpec.js 
b/loleaflet/spec/tilebench/TileBenchSpec.js
index 6cb137a..28ac2b0 100644
--- a/loleaflet/spec/tilebench/TileBenchSpec.js
+++ b/loleaflet/spec/tilebench/TileBenchSpec.js
@@ -1,6 +1,6 @@
 describe('TileBench', function () {
-       // 20 s timeout
-       this.timeout(20000);
+       // 25 s timeout
+       this.timeout(25000);
        var map;
        var loadCount = 0;
 
@@ -30,6 +30,21 @@ describe('TileBench', function () {
                        edit: false,
                        readOnly: false
                });
+
+               // add a timestamp to tile messages so we can identify
+               // the response
+               docLayer.sendMessage = L.bind(function (msg, coords) {
+                       var now = Date.now();
+                       if (msg.startsWith('tile')) {
+                               msg += ' timestamp=' + now;
+                       }
+                       L.Log.log(msg, L.OUTGOING, coords, now);
+                       this._map.socket.send(msg);
+               }, docLayer);
+
+               // don't pre-fetch tiles
+               docLayer._preFetchTiles = L.Util.falseFn;
+
                map.addLayer(docLayer);
                map.addControl(L.control.scroll());
        });
@@ -48,12 +63,48 @@ describe('TileBench', function () {
                it('Load all new tiles', function (done) {
                        map.on('alltilesloaded', L.bind(function () {
                                loadCount += 1;
-                               console.log(loadCount);
                                done();
                        }, done));
 
                });
 
+               it('Edit the document', function (done) {
+                       L.Log.clear();
+
+                       // allow 2 seconds to pass after the last key input
+                       var aproxTime = keyInput[keyInput.length - 1][0] + 2000;
+
+                       setTimeout(L.bind(function () {
+                               map.on('alltilesloaded', L.bind(function () {
+                                       loadCount += 1;
+                                       getTimes(done);
+                               }, done));
+
+
+                               // request an empty tile and when it arrives we 
know that the
+                               // server has finished processing all other 
messages
+                               var docLayer = map._docLayer;
+                               var x = Math.floor(docLayer._docWidthTwips / 
docLayer._tileWidthTwips);
+                               var y = Math.floor(docLayer._docHeightTwips / 
docLayer._tileHeightTwips);
+                               var coords = new L.Point(x, y);
+                               coords.z = map.getZoom();
+                               coords.part = docLayer._currentPart;
+                               var key = docLayer._tileCoordsToKey(coords);
+                               if (docLayer._tiles[key]) {
+                                       // the tile is already here, the whole 
document is loaded
+                                       getTimes(done);
+                               }
+                               var fragment = 
document.createDocumentFragment();
+                               docLayer._addTile(coords, fragment);
+                       }, done), aproxTime);
+
+                       for (var i = 0; i < keyInput.length; i++) {
+                               setTimeout(L.bind(function () {
+                                       
map._docLayer.sendMessage(keyInput[this][1]);
+                               }, i), keyInput[i][0]);
+                       }
+               });
+
                it('Scroll to the bottom', function (done) {
                        $('.scroll-container').mCustomScrollbar('scrollTo', 
'bottom', {scrollInertia: 3000});
                        // check how we're doing 200ms after the scroll has 
ended
@@ -73,4 +124,284 @@ describe('TileBench', function () {
                        }, done), 3200);
                });
        });
+
+       var getTimes = function (done) {
+               var incoming = [];
+               var outgoing = [];
+               var logs = L.Log._logs;
+               for (var i = 0; i < logs.length; i++) {
+                       if (logs[i].coords !== undefined) {
+                               if (logs[i].direction === L.INCOMING) {
+                                       logs[i].msg = logs[i].msg.replace(':', 
'');
+                                       incoming.push(logs[i]);
+                               }
+                               else if (logs[i].direction === L.OUTGOING) {
+                                       outgoing.push(logs[i]);
+                               }
+                       }
+               }
+               time_deltas = [];
+               for (i = 0; i < outgoing.length; i++) {
+                       for (j = 0; j < incoming.length; j++) {
+                               if (outgoing[i].msg === incoming[j].msg) {
+                                       time_deltas.push(incoming[j].time - 
outgoing[i].time);
+                               }
+                       }
+               }
+               var min = 20000,
+                       max = 0,
+                       avg = 0;
+               for (i = 0; i < time_deltas.length; i++) {
+                       min = Math.min(min, time_deltas[i]);
+                       max = Math.max(max, time_deltas[i]);
+                       avg += time_deltas[i];
+               }
+               avg = Math.round(avg / time_deltas.length);
+
+               log('Min time: ' + min + ' ms');
+               log('Max time: ' + max + ' ms');
+               log('Avg time: ' + avg + ' ms');
+
+               done();
+       };
+
+       var keyInput = [
+               [135, 'key type=input char=84 key=0'],
+               [237, 'key type=up char=0 key=16'],
+               [254, 'key type=up char=0 key=84'],
+               [372, 'key type=input char=104 key=0'],
+               [455, 'key type=input char=105 key=0'],
+               [510, 'key type=up char=0 key=72'],
+               [520, 'key type=input char=115 key=0'],
+               [580, 'key type=up char=0 key=73'],
+               [603, 'key type=input char=32 key=0'],
+               [635, 'key type=up char=0 key=83'],
+               [701, 'key type=up char=0 key=1284'],
+               [875, 'key type=input char=116 key=0'],
+               [915, 'key type=input char=101 key=0'],
+               [993, 'key type=up char=0 key=84'],
+               [1014, 'key type=up char=0 key=69'],
+               [1148, 'key type=input char=115 key=0'],
+               [1244, 'key type=up char=0 key=83'],
+               [1319, 'key type=input char=116 key=0'],
+               [1377, 'key type=input char=115 key=0'],
+               [1418, 'key type=up char=0 key=84'],
+               [1466, 'key type=input char=32 key=0'],
+               [1493, 'key type=up char=0 key=83'],
+               [1544, 'key type=up char=0 key=1284'],
+               [1687, 'key type=input char=116 key=0'],
+               [1760, 'key type=input char=104 key=0'],
+               [1773, 'key type=up char=0 key=84'],
+               [1828, 'key type=input char=101 key=0'],
+               [1886, 'key type=up char=0 key=72'],
+               [1952, 'key type=up char=0 key=69'],
+               [1957, 'key type=input char=32 key=0'],
+               [2071, 'key type=up char=0 key=1284'],
+               [2176, 'key type=input char=115 key=0'],
+               [2250, 'key type=input char=101 key=0'],
+               [2282, 'key type=up char=0 key=83'],
+               [2349, 'key type=up char=0 key=69'],
+               [2430, 'key type=input char=114 key=0'],
+               [2512, 'key type=up char=0 key=82'],
+               [2702, 'key type=input char=118 key=0'],
+               [2751, 'key type=input char=101 key=0'],
+               [2806, 'key type=up char=0 key=86'],
+               [2873, 'key type=up char=0 key=69'],
+               [2927, 'key type=input char=114 key=0'],
+               [3032, 'key type=up char=0 key=82'],
+               [3064, 'key type=input char=39 key=0'],
+               [3160, 'key type=input char=115 key=0'],
+               [3175, 'key type=up char=0 key=222'],
+               [3243, 'key type=input char=32 key=0'],
+               [3269, 'key type=up char=0 key=83'],
+               [3337, 'key type=up char=0 key=1284'],
+               [3535, 'key type=input char=114 key=0'],
+               [3574, 'key type=input char=101 key=0'],
+               [3646, 'key type=up char=0 key=82'],
+               [3705, 'key type=up char=0 key=69'],
+               [3804, 'key type=input char=112 key=0'],
+               [3868, 'key type=input char=111 key=0'],
+               [3953, 'key type=up char=0 key=80'],
+               [4056, 'key type=up char=0 key=79'],
+               [4262, 'key type=input char=110 key=0'],
+               [4362, 'key type=input char=115 key=0'],
+               [4390, 'key type=up char=0 key=78'],
+               [4449, 'key type=input char=101 key=0'],
+               [4513, 'key type=up char=0 key=83'],
+               [4535, 'key type=input char=32 key=0'],
+               [4560, 'key type=up char=0 key=69'],
+               [4631, 'key type=up char=0 key=1284'],
+               [4771, 'key type=input char=116 key=0'],
+               [4818, 'key type=input char=105 key=0'],
+               [4853, 'key type=up char=0 key=84'],
+               [4908, 'key type=up char=0 key=73'],
+               [4990, 'key type=input char=109 key=0'],
+               [5038, 'key type=input char=101 key=0'],
+               [5118, 'key type=up char=0 key=77'],
+               [5157, 'key type=input char=32 key=0'],
+               [5195, 'key type=up char=0 key=69'],
+               [5273, 'key type=up char=0 key=1284'],
+               [5410, 'key type=input char=119 key=0'],
+               [5462, 'key type=input char=104 key=0'],
+               [5522, 'key type=up char=0 key=87'],
+               [5523, 'key type=input char=105 key=0'],
+               [5591, 'key type=up char=0 key=72'],
+               [5632, 'key type=up char=0 key=73'],
+               [5857, 'key type=input char=108 key=0'],
+               [5941, 'key type=input char=101 key=0'],
+               [5990, 'key type=up char=0 key=76'],
+               [6039, 'key type=input char=32 key=0'],
+               [6057, 'key type=up char=0 key=69'],
+               [6126, 'key type=up char=0 key=1284'],
+               [6274, 'key type=input char=101 key=0'],
+               [6354, 'key type=up char=0 key=69'],
+               [6450, 'key type=input char=100 key=0'],
+               [6563, 'key type=input char=105 key=0'],
+               [6566, 'key type=up char=0 key=68'],
+               [6673, 'key type=up char=0 key=73'],
+               [6695, 'key type=input char=116 key=0'],
+               [6794, 'key type=input char=105 key=0'],
+               [6799, 'key type=up char=0 key=84'],
+               [6850, 'key type=input char=110 key=0'],
+               [6885, 'key type=up char=0 key=73'],
+               [6970, 'key type=input char=103 key=0'],
+               [6974, 'key type=up char=0 key=78'],
+               [7064, 'key type=up char=0 key=71'],
+               [7176, 'key type=input char=46 key=0'],
+               [7297, 'key type=up char=0 key=190'],
+               [7323, 'key type=input char=32 key=0'],
+               [7422, 'key type=up char=0 key=1284'],
+               [7580, 'key type=input char=73 key=0'],
+               [7655, 'key type=up char=0 key=16'],
+               [7679, 'key type=up char=0 key=73'],
+               [7829, 'key type=input char=39 key=0'],
+               [7875, 'key type=up char=0 key=222'],
+               [7922, 'key type=input char=109 key=0'],
+               [8072, 'key type=input char=32 key=0'],
+               [8082, 'key type=up char=0 key=77'],
+               [8169, 'key type=up char=0 key=1284'],
+               [8340, 'key type=input char=116 key=0'],
+               [8399, 'key type=up char=0 key=84'],
+               [8503, 'key type=input char=114 key=0'],
+               [8553, 'key type=input char=121 key=0'],
+               [8618, 'key type=up char=0 key=82'],
+               [8640, 'key type=up char=0 key=89'],
+               [8773, 'key type=input char=105 key=0'],
+               [8862, 'key type=input char=110 key=0'],
+               [8935, 'key type=input char=103 key=0'],
+               [8945, 'key type=up char=0 key=73'],
+               [9019, 'key type=input char=32 key=0'],
+               [9025, 'key type=up char=0 key=78'],
+               [9047, 'key type=up char=0 key=71'],
+               [9124, 'key type=up char=0 key=1284'],
+               [9257, 'key type=input char=116 key=0'],
+               [9357, 'key type=input char=111 key=0'],
+               [9396, 'key type=input char=32 key=0'],
+               [9397, 'key type=up char=0 key=84'],
+               [9487, 'key type=up char=0 key=79'],
+               [9488, 'key type=up char=0 key=1284'],
+               [9646, 'key type=input char=119 key=0'],
+               [9766, 'key type=up char=0 key=87'],
+               [9919, 'key type=input char=114 key=0'],
+               [9988, 'key type=input char=105 key=0'],
+               [10024, 'key type=up char=0 key=82'],
+               [10098, 'key type=up char=0 key=73'],
+               [10200, 'key type=input char=116 key=0'],
+               [10253, 'key type=input char=101 key=0'],
+               [10334, 'key type=up char=0 key=84'],
+               [10349, 'key type=input char=32 key=0'],
+               [10388, 'key type=up char=0 key=69'],
+               [10462, 'key type=up char=0 key=1284'],
+               [10620, 'key type=input char=97 key=0'],
+               [10727, 'key type=up char=0 key=65'],
+               [10847, 'key type=input char=115 key=0'],
+               [10953, 'key type=input char=32 key=0'],
+               [10978, 'key type=up char=0 key=83'],
+               [11059, 'key type=up char=0 key=1284'],
+               [11262, 'key type=input char=105 key=0'],
+               [11341, 'key type=input char=102 key=0'],
+               [11385, 'key type=up char=0 key=73'],
+               [11428, 'key type=input char=32 key=0'],
+               [11454, 'key type=up char=0 key=70'],
+               [11537, 'key type=up char=0 key=1284'],
+               [11696, 'key type=input char=73 key=0'],
+               [11797, 'key type=up char=0 key=73'],
+               [11814, 'key type=up char=0 key=16'],
+               [11917, 'key type=input char=39 key=0'],
+               [12028, 'key type=input char=109 key=0'],
+               [12034, 'key type=up char=0 key=222'],
+               [12171, 'key type=up char=0 key=77'],
+               [12195, 'key type=input char=32 key=0'],
+               [12302, 'key type=up char=0 key=1284'],
+               [12422, 'key type=input char=110 key=0'],
+               [12510, 'key type=input char=111 key=0'],
+               [12565, 'key type=up char=0 key=78'],
+               [12631, 'key type=input char=116 key=0'],
+               [12654, 'key type=up char=0 key=79'],
+               [12726, 'key type=input char=32 key=0'],
+               [12751, 'key type=up char=0 key=84'],
+               [12830, 'key type=up char=0 key=1284'],
+               [12963, 'key type=input char=101 key=0'],
+               [13044, 'key type=up char=0 key=69'],
+               [13176, 'key type=input char=120 key=0'],
+               [13319, 'key type=up char=0 key=88'],
+               [13460, 'key type=input char=112 key=0'],
+               [13542, 'key type=input char=101 key=0'],
+               [13606, 'key type=up char=0 key=80'],
+               [13637, 'key type=up char=0 key=69'],
+               [13788, 'key type=input char=99 key=0'],
+               [13908, 'key type=up char=0 key=67'],
+               [14061, 'key type=input char=116 key=0'],
+               [14130, 'key type=input char=105 key=0'],
+               [14167, 'key type=up char=0 key=84'],
+               [14216, 'key type=input char=110 key=0'],
+               [14272, 'key type=up char=0 key=73'],
+               [14339, 'key type=input char=103 key=0'],
+               [14363, 'key type=up char=0 key=78'],
+               [14457, 'key type=up char=0 key=71'],
+               [14500, 'key type=input char=32 key=0'],
+               [14590, 'key type=up char=0 key=1284'],
+               [15056, 'key type=input char=97 key=0'],
+               [15139, 'key type=input char=110 key=0'],
+               [15158, 'key type=up char=0 key=65'],
+               [15268, 'key type=up char=0 key=78'],
+               [15383, 'key type=input char=121 key=0'],
+               [15503, 'key type=input char=32 key=0'],
+               [15505, 'key type=up char=0 key=89'],
+               [15613, 'key type=up char=0 key=1284'],
+               [15769, 'key type=input char=108 key=0'],
+               [15888, 'key type=input char=97 key=0'],
+               [15903, 'key type=up char=0 key=76'],
+               [15981, 'key type=up char=0 key=65'],
+               [16148, 'key type=input char=116 key=0'],
+               [16196, 'key type=input char=101 key=0'],
+               [16275, 'key type=up char=0 key=84'],
+               [16308, 'key type=input char=110 key=0'],
+               [16341, 'key type=up char=0 key=69'],
+               [16441, 'key type=up char=0 key=78'],
+               [16833, 'key type=input char=99 key=0'],
+               [16875, 'key type=input char=121 key=0'],
+               [16948, 'key type=up char=0 key=67'],
+               [16966, 'key type=up char=0 key=89'],
+               [17582, 'key type=input char=32 key=0'],
+               [17672, 'key type=up char=0 key=1284'],
+               [17773, 'key type=input char=102 key=0'],
+               [17898, 'key type=up char=0 key=70'],
+               [17962, 'key type=input char=111 key=0'],
+               [18102, 'key type=input char=114 key=0'],
+               [18133, 'key type=up char=0 key=79'],
+               [18214, 'key type=up char=0 key=82'],
+               [18294, 'key type=input char=109 key=0'],
+               [18423, 'key type=input char=32 key=0'],
+               [18428, 'key type=up char=0 key=77'],
+               [18529, 'key type=up char=0 key=1284'],
+               [18563, 'key type=input char=105 key=0'],
+               [18674, 'key type=up char=0 key=73'],
+               [18703, 'key type=input char=116 key=0'],
+               [18799, 'key type=up char=0 key=84'],
+               [19067, 'key type=input char=46 key=0'],
+               [19147, 'key type=up char=0 key=190'],
+               [19440, 'key type=input char=32 key=0'],
+               [19511, 'key type=up char=0 key=1284'],
+       ];
 });
commit 88f32c61bed15780a7edd1a42b348c9996ea4264
Author: Mihai Varga <[email protected]>
Date:   Mon Jul 27 17:51:45 2015 +0300

    loleaflet: log method accepts a timestamp parameter
    
    This will be used for tests, to add timestamps to tile requests

diff --git a/loleaflet/src/core/Log.js b/loleaflet/src/core/Log.js
index dcb9045..e8f731f 100644
--- a/loleaflet/src/core/Log.js
+++ b/loleaflet/src/core/Log.js
@@ -3,8 +3,10 @@
  */
 
 L.Log = {
-       log: function (msg, direction, tileCoords) {
-               var time = Date.now();
+       log: function (msg, direction, tileCoords, time) {
+               if (!time) {
+                       var time = Date.now();
+               }
                if (!this._logs) {
                        this._logs = [];
                }
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to