diff --git a/common/Util-desktop.cpp b/common/Util-desktop.cpp index db9c88de8..5de50e674 100644 --- a/common/Util-desktop.cpp +++ b/common/Util-desktop.cpp @@ -458,6 +458,7 @@ std::chrono::microseconds SysStopwatch::elapsedTime() const uint64_t totalUs = (nowCPU - _startCPU) + (nowSys - _startSys); return std::chrono::microseconds(totalUs); } + } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/configure.ac b/configure.ac index d5886aebf..52ae5dbc7 100644 --- a/configure.ac +++ b/configure.ac @@ -405,7 +405,6 @@ AC_ARG_ENABLE([experimental], AS_HELP_STRING([--enable-experimental], [Enable experimental features and behavior])) - # Handle options AS_IF([test "$enable_debug" = yes -a -n "$with_poco_libs"], [POCO_DEBUG_SUFFIX=d], @@ -1283,6 +1282,23 @@ else fi AC_SUBST(SIMD_CFLAGS) + +has_pfm=no +LIBPFM_LIBS= +if test "$mobile_app" != "true"; then + AC_MSG_CHECKING([whether we have perf counter support]) + AC_CHECK_LIB(pfm, pfm_initialize, [has_pfm=yes], [has_pfm=no]) + AC_MSG_RESULT([${has_pfm}]) +fi + +if test "${has_pfm}" = "no" ; then + AC_DEFINE([ENABLE_PFM],0,[Whether to enable PFM]) +else + AC_DEFINE([ENABLE_PFM],1,[Whether to enable PFM]) + LIBPFM_LIBS="$LIBS -lpfm" +fi +AC_SUBST(LIBPFM_LIBS) + ENABLE_SSL=true if test "$enable_ssl" != "no" -a "$mobile_app" != "true"; then ssl_msg="ssl enabled" diff --git a/test/Makefile.am b/test/Makefile.am index 3b8d56bf8..dca495eb2 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -32,6 +32,7 @@ AM_CXXFLAGS = $(CPPUNIT_CFLAGS) -DTDOC=\"$(abs_top_srcdir)/test/data\" -DTDIST=\ # 'Finished in' in the `make check` output. # When adding new tests, please maintain order. all_la_unit_tests = \ + unit-perf.la \ unit-synthetic-lok.la \ unit-wopi-async-slow.la \ unit-tiletest.la \ @@ -308,6 +309,8 @@ unit_hosting_la_SOURCES = UnitHosting.cpp unit_hosting_la_LIBADD = $(CPPUNIT_LIBS) unit_quarantine_la_SOURCES = UnitQuarantine.cpp unit_quarantine_la_LIBADD = $(CPPUNIT_LIBS) +unit_perf_la_SOURCES = UnitPerf.cpp +unit_perf_la_LIBADD = $(CPPUNIT_LIBS) $(LIBPFM_LIBS) if HAVE_LO_PATH SYSTEM_STAMP = @SYSTEMPLATE_PATH@/system_stamp diff --git a/test/UnitPerf.cpp b/test/UnitPerf.cpp new file mode 100644 index 000000000..92ce6d0ea --- /dev/null +++ b/test/UnitPerf.cpp @@ -0,0 +1,98 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * Copyright the Collabora Online contributors. + * + * SPDX-License-Identifier: MPL-2.0 + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + + +/// Save torture testcase. +class UnitPerf : public UnitWSD +{ + void testPerf(); + + void configure(Poco::Util::LayeredConfiguration& config) override + { + config.setString("logging.level", "critical"); + config.setString("logging.level_startup", "critical"); + +// pfm_initialize(); + UnitWSD::configure(config); + } + +public: + UnitPerf(); + void invokeWSDTest() override; + std::unique_ptr _timer; +}; + +void UnitPerf::testPerf() +{ + auto stats = std::make_shared(); + + TerminatingPoll poll("performance test"); + + std::string docName = "empty.odt"; + + std::string filePath, dummy; + helpers::getDocumentPathAndURL(docName, filePath, dummy, "testPerf"); + + const std::string tracePath; + StressSocketHandler::addPollFor( + poll, helpers::getTestServerURI("ws"), + filePath, TDOC "/../traces/perf-writer.txt", + stats); + + do { + poll.poll(TerminatingPoll::DefaultPollTimeoutMicroS); + } while (poll.continuePolling() && poll.getSocketCount() > 0); + + stats->dump(); +} + +UnitPerf::UnitPerf() : UnitWSD("UnitPerf") +{ + // Double of the default. + constexpr std::chrono::minutes timeout_minutes(1); + setTimeout(timeout_minutes); + + _timer.reset(new Util::SysStopwatch()); +} + +void UnitPerf::invokeWSDTest() +{ + std::cerr << "startup: " << _timer->elapsedTime().count() << "us\n"; + _timer->restart(); + + testPerf(); + + std::cerr << "test: " << _timer->elapsedTime().count() << "us\n"; + + exitTest(TestResult::Ok); +} + +UnitBase* unit_create_wsd(void) { return new UnitPerf(); } + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/test/helpers.hpp b/test/helpers.hpp index d9053bd60..4fcfae720 100644 --- a/test/helpers.hpp +++ b/test/helpers.hpp @@ -360,10 +360,10 @@ inline bool haveSsl() } /// Return a fully-qualified URI, with schema, to the test loopback server. -inline std::string const& getTestServerURI() +inline std::string const& getTestServerURI(std::string proto = "http") { static std::string serverURI( - (haveSsl() && config::isSslEnabled() ? "https://127.0.0.1:" : "http://127.0.0.1:") + (haveSsl() && config::isSslEnabled() ? proto + "s://127.0.0.1:" : proto + "://127.0.0.1:") + std::to_string(ClientPortNumber)); return serverURI; diff --git a/test/traces/perf-writer.txt b/test/traces/perf-writer.txt new file mode 100644 index 000000000..3329a194e --- /dev/null +++ b/test/traces/perf-writer.txt @@ -0,0 +1,185 @@ +~+3008950~FoWfKnRzxrKHTLC4~000~NewSession: https://localhost:9980/wopi/files/opt/libreoffice/online/test/data/hello-world.odt?access_token=test&access_token_ttl=0 +~+141759~FoWfKnRzxrKHTLC4~05f~NewSession: https://localhost:9980/wopi/files/opt/libreoffice/online/test/data/hello-world.odt?access_token=test&access_token_ttl=0 +>+480>FoWfKnRzxrKHTLC4>05f>coolclient 0.1 1716920949623 169.39999999850988 +>+5524>FoWfKnRzxrKHTLC4>05f>load url=https%3A%2F%2Flocalhost%3A9980%2Fwopi%2Ffiles%2Fopt%2Flibreoffice%2Fonline%2Ftest%2Fdata%2Fhello-world.odt accessibilityState=false deviceFormFactor=desktop spreadsheetDarkTheme=false timezone=Europe/London +>+636629>FoWfKnRzxrKHTLC4>05f>uno .uno:ToolbarMode?Mode:string=notebookbar_online.ui +>+18435>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:StyleApply +>+60>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:CharFontName +>+1526>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:AcceptTrackedChanges +>+12557>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:LanguageStatus +>+44>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:ViewAnnotations +>+38>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:StyleApply +>+78>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:CharFontName +>+15139>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-3195 y=0 width=19185 height=8685 splitx=0 splity=0 +>+172>FoWfKnRzxrKHTLC4>05f>clientzoom tilepixelwidth=256 tilepixelheight=256 tiletwipwidth=2560 tiletwipheight=2560 +>+191>FoWfKnRzxrKHTLC4>05f>tilecombine nviewid=0 part=0 width=256 height=256 tileposx=0,2560,5120,7680,10240,12800,0,2560,5120,7680,10240,12800,0,2560,5120,7680,10240,12800,0,2560,5120,7680,10240,12800 tileposy=0,0,0,0,0,0,2560,2560,2560,2560,2560,2560,5120,5120,5120,5120,5120,5120,7680,7680,7680,7680,7680,7680 oldwid=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 tilewidth=2560 tileheight=2560 +>+73031>FoWfKnRzxrKHTLC4>05f>commandvalues command=.uno:ViewAnnotations +>+191674>FoWfKnRzxrKHTLC4>05f>uno .uno:SidebarShow +>+156>FoWfKnRzxrKHTLC4>05f>uno .uno:Navigator +>+31468>FoWfKnRzxrKHTLC4>05f>tilecombine nviewid=0 part=0 width=256 height=256 tileposx=0,2560,5120,7680,10240,12800,0,2560,5120,7680,10240,12800,0,2560,5120,7680,10240,12800,0,2560,5120,7680,10240,12800 tileposy=7680,7680,7680,7680,7680,7680,10240,10240,10240,10240,10240,10240,12800,12800,12800,12800,12800,12800,15360,15360,15360,15360,15360,15360 oldwid=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 tilewidth=2560 tileheight=2560 +>+204079>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-3045 y=0 width=18900 height=6975 splitx=0 splity=0 +>+14437>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-2910 y=0 width=18615 height=6975 splitx=0 splity=0 +>+18439>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-2640 y=0 width=18090 height=6975 splitx=0 splity=0 +>+8919>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-2490 y=0 width=17790 height=6975 splitx=0 splity=0 +>+9385>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-2340 y=0 width=17475 height=6975 splitx=0 splity=0 +>+8400>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-2190 y=0 width=17175 height=6975 splitx=0 splity=0 +>+8378>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-2040 y=0 width=16875 height=6975 splitx=0 splity=0 +>+8204>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-1875 y=0 width=16545 height=6975 splitx=0 splity=0 +>+9187>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-1680 y=0 width=16170 height=6975 splitx=0 splity=0 +>+7962>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-1545 y=0 width=15885 height=6975 splitx=0 splity=0 +>+8336>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-1425 y=0 width=15645 height=6975 splitx=0 splity=0 +>+8305>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-1275 y=0 width=15360 height=6975 splitx=0 splity=0 +>+7706>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-1155 y=0 width=15120 height=6975 splitx=0 splity=0 +>+8592>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-1050 y=0 width=14895 height=6975 splitx=0 splity=0 +>+10255>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-945 y=0 width=14685 height=6975 splitx=0 splity=0 +>+7821>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-870 y=0 width=14550 height=6975 splitx=0 splity=0 +>+7816>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-825 y=0 width=14445 height=6975 splitx=0 splity=0 +>+8780>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-795 y=0 width=14385 height=6975 splitx=0 splity=0 +>+7607>FoWfKnRzxrKHTLC4>05f>clientvisiblearea x=-780 y=0 width=14370 height=6975 splitx=0 splity=0 +>+577925>FoWfKnRzxrKHTLC4>05f>mouse type=move x=4365 y=1609.99992 count=1 buttons=0 modifier=0 +>+309728>FoWfKnRzxrKHTLC4>05f>mouse type=buttondown x=4365 y=1609.99992 count=1 buttons=1 modifier=0 +>+358>FoWfKnRzxrKHTLC4>05f>mouse type=buttonup x=4365 y=1609.99992 count=1 buttons=1 modifier=0 +>+518611>FoWfKnRzxrKHTLC4>05f>key type=input char=13 key=1280 +>+119539>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1280 +>+536327>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3540 y=334.99992 count=1 buttons=0 modifier=0 +>+2265776>FoWfKnRzxrKHTLC4>05f>mouse type=move x=4800 y=3259.99992 count=1 buttons=0 modifier=0 +>+693554>FoWfKnRzxrKHTLC4>05f>key type=input char=0 key=1025 +>+135560>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1025 +>+137413>FoWfKnRzxrKHTLC4>05f>key type=input char=0 key=8449 +>+274371>FoWfKnRzxrKHTLC4>05f>key type=input char=0 key=1024 +>+143563>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1024 +>+820784>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=T +>+128839>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=h +>+79753>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=i +>+47507>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+46055>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+226>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+92795>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=i +>+47172>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+62862>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+196>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+217181>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+26635>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=o +>+121809>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=n +>+133808>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=e +>+207015>FoWfKnRzxrKHTLC4>05f>removetextcontext id=0 before=1 after=0 +>+146397>FoWfKnRzxrKHTLC4>05f>removetextcontext id=0 before=1 after=0 +>+114113>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=m +>+69434>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=e +>+93323>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+269>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+99473>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=b +>+61278>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=o +>+208416>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=y +>+610658>FoWfKnRzxrKHTLC4>05f>removetextcontext id=0 before=1 after=0 +>+57365>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=d +>+145549>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=y +>+88078>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+201>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+84196>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=c +>+74114>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=o +>+52910>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=n +>+96059>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=t +>+50147>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=e +>+66415>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=n +>+70558>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=t +>+80991>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+269>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+136830>FoWfKnRzxrKHTLC4>05f>key type=input char=46 key=0 +>+365>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=190 +>+115502>FoWfKnRzxrKHTLC4>05f>key type=input char=46 key=0 +>+268>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=190 +>+124098>FoWfKnRzxrKHTLC4>05f>key type=input char=46 key=0 +>+332>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=190 +>+33281>FoWfKnRzxrKHTLC4>05f>key type=input char=13 key=1280 +>+122510>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1280 +>+1761983>FoWfKnRzxrKHTLC4>05f>mouse type=move x=2910 y=394.99992 count=1 buttons=0 modifier=0 +>+3990487>FoWfKnRzxrKHTLC4>05f>tilecombine nviewid=0 part=0 width=256 height=256 tileposx=0,2560,5120,7680,10240 tileposy=10240,10240,10240,10240,10240 oldwid=25,26,27,28,29 tilewidth=2560 tileheight=2560 +>+748309>FoWfKnRzxrKHTLC4>05f>tilecombine nviewid=0 part=0 width=256 height=256 tileposx=0,2560,5120,7680,10240 tileposy=12800,12800,12800,12800,12800 oldwid=31,32,33,34,35 tilewidth=2560 tileheight=2560 +>+281386>FoWfKnRzxrKHTLC4>05f>uno .uno:InsertTable { "Columns": { "type": "long","value": 6 }, "Rows": { "type": "long","value": 4 }} +>+1253134>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3000 y=4579.99992 count=1 buttons=0 modifier=0 +>+449447>FoWfKnRzxrKHTLC4>05f>mouse type=move x=4005 y=79.99992 count=1 buttons=0 modifier=0 +>+575509>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3600 y=4879.99992 count=1 buttons=0 modifier=0 +>+232572>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3120 y=3484.99992 count=1 buttons=0 modifier=0 +>+225083>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3030 y=3169.99992 count=1 buttons=0 modifier=0 +>+225273>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3060 y=3049.99992 count=1 buttons=0 modifier=0 +>+449690>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=T +>+111812>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=h +>+33086>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=i +>+69187>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+60276>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3060 y=3049.99992 count=1 buttons=0 modifier=0 +>+2025>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+64>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+83090>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=m +>+207642>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+138232>FoWfKnRzxrKHTLC4>05f>removetextcontext id=0 before=1 after=0 +>+160223>FoWfKnRzxrKHTLC4>05f>removetextcontext id=0 before=1 after=0 +>+191466>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=i +>+76631>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+61878>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+179>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+94738>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=m +>+31653>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=e +>+161862>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+266>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+122203>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=t +>+144730>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=y +>+52627>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=p +>+160828>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=i +>+30744>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=n +>+33887>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=g +>+96272>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+228>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+108560>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+34002>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=o +>+41278>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=m +>+87440>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=e +>+38380>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=t +>+299116>FoWfKnRzxrKHTLC4>05f>removetextcontext id=0 before=1 after=0 +>+128532>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=w +>+130235>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=h +>+39439>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=a +>+55210>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=t +>+320095>FoWfKnRzxrKHTLC4>05f>key type=input char=0 key=1282 +>+42673>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1282 +>+559222>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=A +>+112521>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=n +>+51091>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=d +>+96998>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+241>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+102527>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=t +>+94058>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=h +>+140060>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3060 y=3049.99992 count=1 buttons=0 modifier=0 +>+120911>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=a +>+42703>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=t +>+96769>FoWfKnRzxrKHTLC4>05f>key type=input char=39 key=0 +>+229>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=192 +>+111310>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=s +>+54611>FoWfKnRzxrKHTLC4>05f>key type=input char=32 key=0 +>+206>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1284 +>+213756>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=g +>+95040>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=o +>+103548>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=o +>+536356>FoWfKnRzxrKHTLC4>05f>textinput id=0 text=d +>+163764>FoWfKnRzxrKHTLC4>05f>key type=input char=46 key=0 +>+156>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=190 +>+977226>FoWfKnRzxrKHTLC4>05f>mouse type=move x=2520 y=5809.99992 count=1 buttons=0 modifier=0 +>+22104>FoWfKnRzxrKHTLC4>05f>mouse type=buttondown x=2520 y=5809.99992 count=1 buttons=1 modifier=0 +>+199>FoWfKnRzxrKHTLC4>05f>mouse type=buttonup x=2520 y=5809.99992 count=1 buttons=1 modifier=0 +>+569814>FoWfKnRzxrKHTLC4>05f>key type=input char=13 key=1280 +>+83931>FoWfKnRzxrKHTLC4>05f>key type=up char=0 key=1280 +>+806824>FoWfKnRzxrKHTLC4>05f>mouse type=move x=2430 y=769.99992 count=1 buttons=0 modifier=0 +>+6240141>FoWfKnRzxrKHTLC4>05f>uno .uno:SymbolShapes.smiley +>+57352>FoWfKnRzxrKHTLC4>05f>rendershapeselection mimetype=image/svg+xml +>+12851>FoWfKnRzxrKHTLC4>05f>rendershapeselection mimetype=image/svg+xml +>+817152>FoWfKnRzxrKHTLC4>05f>mouse type=move x=5760 y=4009.99992 count=1 buttons=0 modifier=0 +>+618579>FoWfKnRzxrKHTLC4>05f>uno .uno:TransformDialog {"TransformPosX":{"type":"long","value":4209},"TransformPosY":{"type":"long","value":4186}} +>+15637>FoWfKnRzxrKHTLC4>05f>rendershapeselection mimetype=image/svg+xml +>+778430>FoWfKnRzxrKHTLC4>05f>mouse type=move x=1935 y=6199.99992 count=1 buttons=0 modifier=0 +>+40579>FoWfKnRzxrKHTLC4>05f>mouse type=buttondown x=1935 y=6199.99992 count=1 buttons=1 modifier=0 +>+237>FoWfKnRzxrKHTLC4>05f>mouse type=buttonup x=1935 y=6199.99992 count=1 buttons=1 modifier=0 +>+558805>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3195 y=5749.99992 count=1 buttons=0 modifier=0 +>+48773>FoWfKnRzxrKHTLC4>05f>mouse type=buttondown x=3195 y=5749.99992 count=1 buttons=1 modifier=0 +>+235>FoWfKnRzxrKHTLC4>05f>mouse type=buttonup x=3195 y=5749.99992 count=1 buttons=1 modifier=0 +>+136577>FoWfKnRzxrKHTLC4>05f>mouse type=move x=3780 y=5059.99992 count=1 buttons=0 modifier=0 +~+4801295~FoWfKnRzxrKHTLC4~05f~EndSession: https://localhost:9980/wopi/files/opt/libreoffice/online/test/data/hello-world.odt?access_token=test&access_token_ttl=0 diff --git a/tools/Replay.hpp b/tools/Replay.hpp index dad812d07..30b69b44b 100644 --- a/tools/Replay.hpp +++ b/tools/Replay.hpp @@ -397,7 +397,7 @@ public: return; } else - Util::forcedExit(EX_SOFTWARE); + Util::forcedExit(70); } // FIXME: implement code to send new view-ports based