[Libreoffice-commits] online.git: loolwsd/test

Ashod Nakashian ashod.nakashian at collabora.co.uk
Wed Jul 27 15:59:48 UTC 2016


 loolwsd/test/httpwstest.cpp |   73 ++++++++++++++++++++++++++++----------------
 1 file changed, 48 insertions(+), 25 deletions(-)

New commits:
commit 219143cedaa79c8ce9ef49faa3af5af2ea5aad6a
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date:   Wed Jul 27 08:17:08 2016 -0400

    loolwsd: unittest fixes for multiview
    
    Three tests still fail and seem to be regressions
    due to multiview. When WSD is not running with
    multiview support, these tests pass.
    
    Change-Id: Ice3224d92d10f761cb8827d35c9c0c5dd82ae308
    Reviewed-on: https://gerrit.libreoffice.org/27587
    Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
    Tested-by: Ashod Nakashian <ashnakash at gmail.com>

diff --git a/loolwsd/test/httpwstest.cpp b/loolwsd/test/httpwstest.cpp
index c2c94bb..c25328f 100644
--- a/loolwsd/test/httpwstest.cpp
+++ b/loolwsd/test/httpwstest.cpp
@@ -63,7 +63,8 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
     CPPUNIT_TEST(testLoad);
     CPPUNIT_TEST(testBadLoad);
     CPPUNIT_TEST(testReload);
-    CPPUNIT_TEST(testSaveOnDisconnect);
+    CPPUNIT_TEST(testGetTextSelection);
+    CPPUNIT_TEST(testSaveOnDisconnect); // Broken with multiview.
     CPPUNIT_TEST(testReloadWhileDisconnecting);
     CPPUNIT_TEST(testExcelLoad);
     CPPUNIT_TEST(testPaste);
@@ -80,9 +81,9 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
     CPPUNIT_TEST(testMaxColumn);
     CPPUNIT_TEST(testMaxRow);
     CPPUNIT_TEST(testInsertAnnotationWriter);
-    CPPUNIT_TEST(testEditAnnotationWriter);
+    CPPUNIT_TEST(testEditAnnotationWriter);  // Broken with multiview.
     CPPUNIT_TEST(testInsertAnnotationCalc);
-    CPPUNIT_TEST(testCalcEditRendering);
+    CPPUNIT_TEST(testCalcEditRendering);  // Broken with multiview.
     CPPUNIT_TEST(testFontList);
     CPPUNIT_TEST(testStateUnoCommand);
 
@@ -95,6 +96,7 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
     void testLoad();
     void testBadLoad();
     void testReload();
+    void testGetTextSelection();
     void testSaveOnDisconnect();
     void testReloadWhileDisconnecting();
     void testExcelLoad();
@@ -421,6 +423,35 @@ void HTTPWSTest::testReload()
     }
 }
 
+void HTTPWSTest::testGetTextSelection()
+{
+    std::string documentPath, documentURL;
+    getDocumentPathAndURL("hello.odt", documentPath, documentURL);
+
+    try
+    {
+        // Load a document and get its status.
+        Poco::Net::HTTPRequest request(Poco::Net::HTTPRequest::HTTP_GET, documentURL);
+        Poco::Net::WebSocket socket = *connectLOKit(_uri, request, _response);
+
+        sendTextFrame(socket, "load url=" + documentURL);
+        CPPUNIT_ASSERT_MESSAGE("cannot load the document " + documentURL, isDocumentLoaded(socket));
+
+        Poco::Net::WebSocket socket2 = *connectLOKit(_uri, request, _response);
+        sendTextFrame(socket2, "load url=" + documentURL);
+        CPPUNIT_ASSERT_MESSAGE("cannot load the document " + documentURL, isDocumentLoaded(socket2, "", true));
+
+        sendTextFrame(socket, "uno .uno:SelectAll");
+        sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8");
+        const auto selection = assertResponseLine(socket, "textselectioncontent:");
+        CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: Hello world"), selection);
+    }
+    catch (const Poco::Exception& exc)
+    {
+        CPPUNIT_FAIL(exc.displayText());
+    }
+}
+
 void HTTPWSTest::testSaveOnDisconnect()
 {
     std::string documentPath, documentURL;
@@ -445,6 +476,12 @@ void HTTPWSTest::testSaveOnDisconnect()
         sendTextFrame(socket, "uno .uno:Delete");
         sendTextFrame(socket, "paste mimetype=text/plain;charset=utf-8\naaa bbb ccc");
 
+        // Check if the document contains the pasted text.
+        sendTextFrame(socket, "uno .uno:SelectAll");
+        sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8");
+        const auto selection = assertResponseLine(socket, "textselectioncontent:");
+        CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: aaa bbb ccc"), selection);
+
         // Closing connection too fast might not flush buffers.
         // Often nothing more than the SelectAll reaches the server before
         // the socket is closed, when the doc is not even modified yet.
@@ -481,28 +518,8 @@ void HTTPWSTest::testSaveOnDisconnect()
         // Check if the document contains the pasted text.
         sendTextFrame(socket, "uno .uno:SelectAll");
         sendTextFrame(socket, "gettextselection mimetype=text/plain;charset=utf-8");
-        std::string selection;
-        int flags;
-        int n;
-        do
-        {
-            char buffer[READ_BUFFER_SIZE];
-            n = socket.receiveFrame(buffer, sizeof(buffer), flags);
-            std::cout << "Got " << n << " bytes, flags: " << std::hex << flags << std::dec << '\n';
-            if (n > 0 && (flags & Poco::Net::WebSocket::FRAME_OP_BITMASK) != Poco::Net::WebSocket::FRAME_OP_CLOSE)
-            {
-                std::cout << "Received message: " << LOOLProtocol::getAbbreviatedMessage(buffer, n) << '\n';
-                const std::string line = LOOLProtocol::getFirstLine(buffer, n);
-                const std::string prefix = "textselectioncontent: ";
-                if (line.find(prefix) == 0)
-                {
-                    selection = line.substr(prefix.length());
-                    break;
-                }
-            }
-        }
-        while (n > 0 && (flags & Poco::Net::WebSocket::FRAME_OP_BITMASK) != Poco::Net::WebSocket::FRAME_OP_CLOSE);
-        CPPUNIT_ASSERT_EQUAL(std::string("aaa bbb ccc"), selection);
+        const auto selection = assertResponseLine(socket, "textselectioncontent:");
+        CPPUNIT_ASSERT_EQUAL(std::string("textselectioncontent: aaa bbb ccc"), selection);
     }
     catch (const Poco::Exception& exc)
     {
@@ -926,6 +943,12 @@ void HTTPWSTest::testInsertDelete()
 
 void HTTPWSTest::testEditLock()
 {
+    if (std::getenv("LOK_VIEW_CALLBACK"))
+    {
+        // Editlocking is disabled in multiview.
+        return;
+    }
+
     const std::string documentPath = Util::getTempFilePath(TDOC, "hello.odt");
     const std::string documentURL = "lool/ws/file://" + Poco::Path(documentPath).makeAbsolute().toString();
 


More information about the Libreoffice-commits mailing list