[Libreoffice-commits] online.git: loolwsd/test
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Sun Oct 23 21:02:29 UTC 2016
loolwsd/test/TileCacheTests.cpp | 160 ++++++++++++++++++++++++++++++++++++++++
1 file changed, 160 insertions(+)
New commits:
commit 05a967e82731fb49edceb3abcb426b8f14d36d3b
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Fri Oct 21 22:10:43 2016 -0400
loolwsd: two new tests for tile rendering
Tiles are checked for correct count and whether or
not they are serviced from cache or rendered.
One test is done with a single view and another
with four views.
Change-Id: Ieadeef8547097d4a53fb1ce42c56c33ec16d849f
Reviewed-on: https://gerrit.libreoffice.org/30197
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/test/TileCacheTests.cpp b/loolwsd/test/TileCacheTests.cpp
index f988db4..33bf2b1 100644
--- a/loolwsd/test/TileCacheTests.cpp
+++ b/loolwsd/test/TileCacheTests.cpp
@@ -58,6 +58,8 @@ class TileCacheTests : public CPPUNIT_NS::TestFixture
CPPUNIT_TEST(testImpressTiles);
CPPUNIT_TEST(testClientPartImpress);
CPPUNIT_TEST(testClientPartCalc);
+ CPPUNIT_TEST(testTilesRenderedJustOnce);
+ CPPUNIT_TEST(testTilesRenderedJustOnceMultiClient);
#if ENABLE_DEBUG
CPPUNIT_TEST(testSimultaneousTilesRenderedJustOnce);
#endif
@@ -79,6 +81,8 @@ class TileCacheTests : public CPPUNIT_NS::TestFixture
void testImpressTiles();
void testClientPartImpress();
void testClientPartCalc();
+ void testTilesRenderedJustOnce();
+ void testTilesRenderedJustOnceMultiClient();
void testSimultaneousTilesRenderedJustOnce();
void testLoad12ods();
void testTileInvalidateWriter();
@@ -377,6 +381,162 @@ void TileCacheTests::testClientPartCalc()
}
}
+void TileCacheTests::testTilesRenderedJustOnce()
+{
+ const auto testname = "tilesRenderdJustOnce ";
+
+ auto socket = *loadDocAndGetSocket("empty.odt", _uri, testname);
+
+ assertResponseString(socket, "statechanged: .uno:AcceptTrackedChange=", testname);
+
+ for (int i = 0; i < 10; ++i)
+ {
+ // Get initial rendercount.
+ sendTextFrame(socket, "ping", testname);
+ const auto ping1 = assertResponseString(socket, "pong", testname);
+ int renderCount1 = 0;
+ CPPUNIT_ASSERT(LOOLProtocol::getTokenIntegerFromMessage(ping1, "rendercount", renderCount1));
+ CPPUNIT_ASSERT_EQUAL(i * 3, renderCount1);
+
+ // Modify.
+ sendText(socket, "a", testname);
+ assertResponseString(socket, "invalidatetiles:", testname);
+
+ // Get 3 tiles.
+ sendTextFrame(socket, "tilecombine part=0 width=256 height=256 tileposx=0,3840,7680 tileposy=0,0,0 tilewidth=3840 tileheight=3840", testname);
+ assertResponseString(socket, "tile:", testname);
+ assertResponseString(socket, "tile:", testname);
+ assertResponseString(socket, "tile:", testname);
+
+ // Get new rendercount.
+ sendTextFrame(socket, "ping", testname);
+ const auto ping2 = assertResponseString(socket, "pong", testname);
+ int renderCount2 = 0;
+ CPPUNIT_ASSERT(LOOLProtocol::getTokenIntegerFromMessage(ping2, "rendercount", renderCount2));
+ CPPUNIT_ASSERT_EQUAL((i+1) * 3, renderCount2);
+
+ // Get same 3 tiles.
+ sendTextFrame(socket, "tilecombine part=0 width=256 height=256 tileposx=0,3840,7680 tileposy=0,0,0 tilewidth=3840 tileheight=3840", testname);
+ const auto tile1 = assertResponseString(socket, "tile:", testname);
+ std::string renderId1;
+ LOOLProtocol::getTokenStringFromMessage(tile1, "renderid", renderId1);
+ CPPUNIT_ASSERT_EQUAL(std::string("cached"), renderId1);
+
+ const auto tile2 = assertResponseString(socket, "tile:", testname);
+ std::string renderId2;
+ LOOLProtocol::getTokenStringFromMessage(tile2, "renderid", renderId2);
+ CPPUNIT_ASSERT_EQUAL(std::string("cached"), renderId2);
+
+ const auto tile3 = assertResponseString(socket, "tile:", testname);
+ std::string renderId3;
+ LOOLProtocol::getTokenStringFromMessage(tile3, "renderid", renderId3);
+ CPPUNIT_ASSERT_EQUAL(std::string("cached"), renderId3);
+
+ // Get new rendercount.
+ sendTextFrame(socket, "ping", testname);
+ const auto ping3 = assertResponseString(socket, "pong", testname);
+ int renderCount3 = 0;
+ CPPUNIT_ASSERT(LOOLProtocol::getTokenIntegerFromMessage(ping3, "rendercount", renderCount3));
+ CPPUNIT_ASSERT_EQUAL(renderCount2, renderCount3);
+ }
+}
+
+void TileCacheTests::testTilesRenderedJustOnceMultiClient()
+{
+ const std::string testname = "tilesRenderdJustOnceMultiClient";
+ const auto testname1 = testname + "-1 ";
+ const auto testname2 = testname + "-2 ";
+ const auto testname3 = testname + "-3 ";
+ const auto testname4 = testname + "-4 ";
+
+ std::string documentPath, documentURL;
+ getDocumentPathAndURL("hello.odt", documentPath, documentURL);
+
+ std::cerr << "Connecting first client." << std::endl;
+ auto socket = *loadDocAndGetSocket(_uri, documentURL, testname1);
+ std::cerr << "Connecting second client." << std::endl;
+ auto socket2 = *loadDocAndGetSocket(_uri, documentURL, testname2);
+ std::cerr << "Connecting third client." << std::endl;
+ auto socket3 = *loadDocAndGetSocket(_uri, documentURL, testname3);
+ std::cerr << "Connecting fourth client." << std::endl;
+ auto socket4 = *loadDocAndGetSocket(_uri, documentURL, "tilesRenderdJustOnce-4 ");
+
+ for (int i = 0; i < 10; ++i)
+ {
+ // No tiles at this point.
+ assertNotInResponse(socket, "tile:", testname1);
+ assertNotInResponse(socket2, "tile:", testname2);
+ assertNotInResponse(socket3, "tile:", testname3);
+ assertNotInResponse(socket4, "tile:", testname4);
+
+ // Get initial rendercount.
+ sendTextFrame(socket, "ping", testname1);
+ const auto ping1 = assertResponseString(socket, "pong", testname1);
+ int renderCount1 = 0;
+ CPPUNIT_ASSERT(LOOLProtocol::getTokenIntegerFromMessage(ping1, "rendercount", renderCount1));
+ CPPUNIT_ASSERT_EQUAL(i * 3, renderCount1);
+
+ // Modify.
+ sendText(socket, "a", testname1);
+ assertResponseString(socket, "invalidatetiles:", testname1);
+
+ // Get 3 tiles.
+ sendTextFrame(socket, "tilecombine part=0 width=256 height=256 tileposx=0,3840,7680 tileposy=0,0,0 tilewidth=3840 tileheight=3840", testname1);
+ assertResponseString(socket, "tile:", testname1);
+ assertResponseString(socket, "tile:", testname1);
+ assertResponseString(socket, "tile:", testname1);
+
+ assertResponseString(socket2, "invalidatetiles:", testname2);
+ sendTextFrame(socket2, "tilecombine part=0 width=256 height=256 tileposx=0,3840,7680 tileposy=0,0,0 tilewidth=3840 tileheight=3840", testname2);
+ assertResponseString(socket2, "tile:", testname2);
+ assertResponseString(socket2, "tile:", testname2);
+ assertResponseString(socket2, "tile:", testname2);
+
+ assertResponseString(socket3, "invalidatetiles:", testname3);
+ sendTextFrame(socket3, "tilecombine part=0 width=256 height=256 tileposx=0,3840,7680 tileposy=0,0,0 tilewidth=3840 tileheight=3840", testname3);
+ assertResponseString(socket3, "tile:", testname3);
+ assertResponseString(socket3, "tile:", testname3);
+ assertResponseString(socket3, "tile:", testname3);
+
+ assertResponseString(socket4, "invalidatetiles:", testname4);
+ sendTextFrame(socket4, "tilecombine part=0 width=256 height=256 tileposx=0,3840,7680 tileposy=0,0,0 tilewidth=3840 tileheight=3840", testname4);
+ assertResponseString(socket4, "tile:", testname4);
+ assertResponseString(socket4, "tile:", testname4);
+ assertResponseString(socket4, "tile:", testname4);
+
+ // Get new rendercount.
+ sendTextFrame(socket, "ping", testname1);
+ const auto ping2 = assertResponseString(socket, "pong", testname1);
+ int renderCount2 = 0;
+ CPPUNIT_ASSERT(LOOLProtocol::getTokenIntegerFromMessage(ping2, "rendercount", renderCount2));
+ CPPUNIT_ASSERT_EQUAL((i+1) * 3, renderCount2);
+
+ // Get same 3 tiles.
+ sendTextFrame(socket, "tilecombine part=0 width=256 height=256 tileposx=0,3840,7680 tileposy=0,0,0 tilewidth=3840 tileheight=3840", testname1);
+ const auto tile1 = assertResponseString(socket, "tile:", testname1);
+ std::string renderId1;
+ LOOLProtocol::getTokenStringFromMessage(tile1, "renderid", renderId1);
+ CPPUNIT_ASSERT_EQUAL(std::string("cached"), renderId1);
+
+ const auto tile2 = assertResponseString(socket, "tile:", testname1);
+ std::string renderId2;
+ LOOLProtocol::getTokenStringFromMessage(tile2, "renderid", renderId2);
+ CPPUNIT_ASSERT_EQUAL(std::string("cached"), renderId2);
+
+ const auto tile3 = assertResponseString(socket, "tile:", testname1);
+ std::string renderId3;
+ LOOLProtocol::getTokenStringFromMessage(tile3, "renderid", renderId3);
+ CPPUNIT_ASSERT_EQUAL(std::string("cached"), renderId3);
+
+ // Get new rendercount.
+ sendTextFrame(socket, "ping", testname1);
+ const auto ping3 = assertResponseString(socket, "pong", testname1);
+ int renderCount3 = 0;
+ CPPUNIT_ASSERT(LOOLProtocol::getTokenIntegerFromMessage(ping3, "rendercount", renderCount3));
+ CPPUNIT_ASSERT_EQUAL(renderCount2, renderCount3);
+ }
+}
+
void TileCacheTests::testSimultaneousTilesRenderedJustOnce()
{
std::string documentPath, documentURL;
More information about the Libreoffice-commits
mailing list