[Libreoffice-commits] online.git: test/httpwstest.cpp test/Makefile.am test/UnitEachView.cpp
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Tue Nov 12 07:48:24 UTC 2019
test/Makefile.am | 4 +
test/UnitEachView.cpp | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++
test/httpwstest.cpp | 108 ----------------------------
3 files changed, 196 insertions(+), 108 deletions(-)
New commits:
commit 3cf185a5767ced554d58eeb29bff8fd5a7553ff6
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Tue Nov 12 08:47:39 2019 +0100
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Tue Nov 12 08:47:47 2019 +0100
Convert "each view" tests to a new-style one
So that they are in-process, which means it's easier to debug when they
fail.
Change-Id: Ia16009f6047acdba531a7bfc50419dfb8ad0ca29
diff --git a/test/Makefile.am b/test/Makefile.am
index f3d4fcf6f..243939595 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -28,6 +28,7 @@ noinst_LTLIBRARIES = \
unit-rendering-options.la \
unit-password-protected.la \
unit-render-shape.la \
+ unit-each-view.la \
unit-wopi-loadencoded.la unit-wopi-temp.la
MAGIC_TO_FORCE_SHLIB_CREATION = -rpath /dummy
@@ -142,6 +143,8 @@ unit_password_protected_la_SOURCES = UnitPasswordProtected.cpp
unit_password_protected_la_LIBADD = $(CPPUNIT_LIBS)
unit_render_shape_la_SOURCES = UnitRenderShape.cpp
unit_render_shape_la_LIBADD = $(CPPUNIT_LIBS)
+unit_each_view_la_SOURCES = UnitEachView.cpp
+unit_each_view_la_LIBADD = $(CPPUNIT_LIBS)
if HAVE_LO_PATH
SYSTEM_STAMP = @SYSTEMPLATE_PATH@/system_stamp
@@ -168,6 +171,7 @@ TESTS = unit-copy-paste.la unit-typing.la unit-convert.la unit-prefork.la unit-t
unit-rendering-options.la \
unit-password-protected.la \
unit-render-shape.la \
+ unit-each-view.la \
unit-wopi-loadencoded.la unit-wopi-temp.la
# TESTS = unit-client.la
# TESTS += unit-admin.la
diff --git a/test/UnitEachView.cpp b/test/UnitEachView.cpp
new file mode 100644
index 000000000..40f4b1302
--- /dev/null
+++ b/test/UnitEachView.cpp
@@ -0,0 +1,192 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * 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 <memory>
+#include <string>
+
+#include <Poco/URI.h>
+#include <cppunit/TestAssert.h>
+
+#include <Unit.hpp>
+#include <Util.hpp>
+#include <helpers.hpp>
+
+// Include config.h last, so the test server URI is still HTTP, even in SSL builds.
+#include <config.h>
+
+class LOOLWebSocket;
+
+namespace
+{
+void testEachView(const std::string& doc, const std::string& type, const std::string& protocol,
+ const std::string& protocolView, const std::string& testname)
+{
+ const std::string view = testname + "view %d -> ";
+ const std::string error = testname + "view %d, did not receive a %s message as expected";
+
+ try
+ {
+ // Load a document
+ std::string documentPath, documentURL;
+ helpers::getDocumentPathAndURL(doc, documentPath, documentURL, testname);
+
+ int itView = 0;
+ std::shared_ptr<LOOLWebSocket> socket = helpers::loadDocAndGetSocket(
+ Poco::URI(helpers::getTestServerURI()), documentURL, Poco::format(view, itView));
+
+ // Check document size
+ helpers::sendTextFrame(socket, "status", Poco::format(view, itView));
+ auto response
+ = helpers::assertResponseString(socket, "status:", Poco::format(view, itView));
+ int docPart = -1;
+ int docParts = 0;
+ int docHeight = 0;
+ int docWidth = 0;
+ int docViewId = -1;
+ helpers::parseDocSize(response.substr(7), type, docPart, docParts, docWidth, docHeight,
+ docViewId);
+
+ // Send click message
+ std::string text;
+ Poco::format(text, "mouse type=%s x=%d y=%d count=1 buttons=1 modifier=0",
+ std::string("buttondown"), docWidth / 2, docHeight / 6);
+ helpers::sendTextFrame(socket, text, Poco::format(view, itView));
+ text.clear();
+
+ Poco::format(text, "mouse type=%s x=%d y=%d count=1 buttons=1 modifier=0",
+ std::string("buttonup"), docWidth / 2, docHeight / 6);
+ helpers::sendTextFrame(socket, text, Poco::format(view, itView));
+ response = helpers::getResponseString(socket, protocol, Poco::format(view, itView));
+ CPPUNIT_ASSERT_MESSAGE(Poco::format(error, itView, protocol), !response.empty());
+
+ // Connect and load 0..N Views, where N<=limit
+ std::vector<std::shared_ptr<LOOLWebSocket>> views;
+ static_assert(MAX_DOCUMENTS >= 2, "MAX_DOCUMENTS must be at least 2");
+ const int limit = std::min(4, MAX_DOCUMENTS - 1); // +1 connection above
+ for (itView = 0; itView < limit; ++itView)
+ {
+ views.emplace_back(helpers::loadDocAndGetSocket(
+ Poco::URI(helpers::getTestServerURI()), documentURL, Poco::format(view, itView)));
+ }
+
+ // main view should receive response each view
+ itView = 0;
+ for (const auto& socketView : views)
+ {
+ helpers::getResponseString(socket, protocolView, Poco::format(view, itView));
+ CPPUNIT_ASSERT_MESSAGE(Poco::format(error, itView, protocolView), !response.empty());
+ ++itView;
+ (void)socketView;
+ }
+ }
+ catch (const Poco::Exception& exc)
+ {
+ CPPUNIT_FAIL(exc.displayText());
+ }
+ catch (const std::exception& exc)
+ {
+ CPPUNIT_FAIL(exc.what());
+ }
+}
+}
+
+/// Test suite that asserts a state for each view.
+class UnitEachView : public UnitWSD
+{
+ TestResult testInvalidateViewCursor();
+ TestResult testViewCursorVisible();
+ TestResult testCellViewCursor();
+ TestResult testGraphicViewSelectionWriter();
+ TestResult testGraphicViewSelectionCalc();
+ TestResult testGraphicViewSelectionImpress();
+
+public:
+ UnitEachView();
+ void invokeTest() override;
+};
+
+UnitBase::TestResult UnitEachView::testInvalidateViewCursor()
+{
+ testEachView("viewcursor.odp", "presentation",
+ "invalidatecursor:", "invalidateviewcursor:", "invalidateViewCursor ");
+ return TestResult::Ok;
+}
+
+UnitBase::TestResult UnitEachView::testViewCursorVisible()
+{
+ testEachView("viewcursor.odp", "presentation",
+ "cursorvisible:", "viewcursorvisible:", "viewCursorVisible ");
+ return TestResult::Ok;
+}
+
+UnitBase::TestResult UnitEachView::testCellViewCursor()
+{
+ testEachView("empty.ods", "spreadsheet", "cellcursor:", "cellviewcursor:", "cellViewCursor");
+ return TestResult::Ok;
+}
+
+UnitBase::TestResult UnitEachView::testGraphicViewSelectionWriter()
+{
+ testEachView("graphicviewselection.odt", "text",
+ "graphicselection:", "graphicviewselection:", "graphicViewSelection-odt ");
+ return TestResult::Ok;
+}
+
+UnitBase::TestResult UnitEachView::testGraphicViewSelectionCalc()
+{
+ testEachView("graphicviewselection.ods", "spreadsheet",
+ "graphicselection:", "graphicviewselection:", "graphicViewSelection-ods ");
+ return TestResult::Ok;
+}
+
+UnitBase::TestResult UnitEachView::testGraphicViewSelectionImpress()
+{
+ testEachView("graphicviewselection.odp", "presentation",
+ "graphicselection:", "graphicviewselection:", "graphicViewSelection-odp ");
+ return TestResult::Ok;
+}
+
+UnitEachView::UnitEachView()
+{
+ // Double of the default.
+ setTimeout(60 * 1000);
+}
+
+void UnitEachView::invokeTest()
+{
+ UnitBase::TestResult result = testInvalidateViewCursor();
+ if (result != TestResult::Ok)
+ exitTest(result);
+
+ result = testViewCursorVisible();
+ if (result != TestResult::Ok)
+ exitTest(result);
+
+ result = testCellViewCursor();
+ if (result != TestResult::Ok)
+ exitTest(result);
+
+ result = testGraphicViewSelectionWriter();
+ if (result != TestResult::Ok)
+ exitTest(result);
+
+ result = testGraphicViewSelectionCalc();
+ if (result != TestResult::Ok)
+ exitTest(result);
+
+ result = testGraphicViewSelectionImpress();
+ if (result != TestResult::Ok)
+ exitTest(result);
+
+ exitTest(TestResult::Ok);
+}
+
+UnitBase* unit_create_wsd(void) { return new UnitEachView(); }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/test/httpwstest.cpp b/test/httpwstest.cpp
index bd5c11ec9..92276cd46 100644
--- a/test/httpwstest.cpp
+++ b/test/httpwstest.cpp
@@ -90,12 +90,6 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
CPPUNIT_TEST(testStateUnoCommandImpress);
// FIXME CPPUNIT_TEST(testColumnRowResize);
// FIXME CPPUNIT_TEST(testOptimalResize);
- CPPUNIT_TEST(testInvalidateViewCursor);
- CPPUNIT_TEST(testViewCursorVisible);
- CPPUNIT_TEST(testCellViewCursor);
- CPPUNIT_TEST(testGraphicViewSelectionWriter);
- CPPUNIT_TEST(testGraphicViewSelectionCalc);
- CPPUNIT_TEST(testGraphicViewSelectionImpress);
CPPUNIT_TEST(testGraphicInvalidate);
CPPUNIT_TEST(testCursorPosition);
CPPUNIT_TEST(testAlertAllUsers);
@@ -135,12 +129,6 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
void testStateUnoCommandImpress();
void testColumnRowResize();
void testOptimalResize();
- void testInvalidateViewCursor();
- void testViewCursorVisible();
- void testCellViewCursor();
- void testGraphicViewSelectionWriter();
- void testGraphicViewSelectionCalc();
- void testGraphicViewSelectionImpress();
void testGraphicInvalidate();
void testCursorPosition();
void testAlertAllUsers();
@@ -171,7 +159,6 @@ class HTTPWSTest : public CPPUNIT_NS::TestFixture
void testStateChanged(const std::string& filename, std::set<std::string>& vecComands);
double getColRowSize(const std::string& property, const std::string& message, int index);
double getColRowSize(const std::shared_ptr<LOOLWebSocket>& socket, const std::string& item, int index, const std::string& testname);
- void testEachView(const std::string& doc, const std::string& type, const std::string& protocol, const std::string& view, const std::string& testname);
public:
HTTPWSTest()
@@ -1956,101 +1943,6 @@ void HTTPWSTest::testOptimalResize()
}
}
-void HTTPWSTest::testEachView(const std::string& doc, const std::string& type,
- const std::string& protocol, const std::string& protocolView,
- const std::string& testname)
-{
- const std::string view = testname + "view %d -> ";
- const std::string error = testname + "view %d, did not receive a %s message as expected";
-
- try
- {
- // Load a document
- std::string documentPath, documentURL;
- getDocumentPathAndURL(doc, documentPath, documentURL, testname);
-
- int itView = 0;
- std::shared_ptr<LOOLWebSocket> socket = loadDocAndGetSocket(_uri, documentURL, Poco::format(view, itView));
-
- // Check document size
- sendTextFrame(socket, "status", Poco::format(view, itView));
- auto response = assertResponseString(socket, "status:", Poco::format(view, itView));
- int docPart = -1;
- int docParts = 0;
- int docHeight = 0;
- int docWidth = 0;
- int docViewId = -1;
- parseDocSize(response.substr(7), type, docPart, docParts, docWidth, docHeight, docViewId);
-
- // Send click message
- std::string text;
- Poco::format(text, "mouse type=%s x=%d y=%d count=1 buttons=1 modifier=0", std::string("buttondown"), docWidth/2, docHeight/6);
- sendTextFrame(socket, text, Poco::format(view, itView));
- text.clear();
-
- Poco::format(text, "mouse type=%s x=%d y=%d count=1 buttons=1 modifier=0", std::string("buttonup"), docWidth/2, docHeight/6);
- sendTextFrame(socket, text, Poco::format(view, itView));
- response = getResponseString(socket, protocol, Poco::format(view, itView));
- CPPUNIT_ASSERT_MESSAGE(Poco::format(error, itView, protocol), !response.empty());
-
- // Connect and load 0..N Views, where N<=limit
- std::vector<std::shared_ptr<LOOLWebSocket>> views;
- static_assert(MAX_DOCUMENTS >= 2, "MAX_DOCUMENTS must be at least 2");
- const int limit = std::min(4, MAX_DOCUMENTS - 1); // +1 connection above
- for (itView = 0; itView < limit; ++itView)
- {
- views.emplace_back(loadDocAndGetSocket(_uri, documentURL, Poco::format(view, itView)));
- }
-
- // main view should receive response each view
- itView = 0;
- for (const auto& socketView : views)
- {
- getResponseString(socket, protocolView, Poco::format(view, itView));
- CPPUNIT_ASSERT_MESSAGE(Poco::format(error, itView, protocolView), !response.empty());
- ++itView; (void)socketView;
- }
- }
- catch (const Poco::Exception& exc)
- {
- CPPUNIT_FAIL(exc.displayText());
- }
- catch (const std::exception& exc)
- {
- CPPUNIT_FAIL(exc.what());
- }
-}
-
-void HTTPWSTest::testInvalidateViewCursor()
-{
- testEachView("viewcursor.odp", "presentation", "invalidatecursor:", "invalidateviewcursor:", "invalidateViewCursor ");
-}
-
-void HTTPWSTest::testViewCursorVisible()
-{
- testEachView("viewcursor.odp", "presentation", "cursorvisible:", "viewcursorvisible:", "viewCursorVisible ");
-}
-
-void HTTPWSTest::testCellViewCursor()
-{
- testEachView("empty.ods", "spreadsheet", "cellcursor:", "cellviewcursor:", "cellViewCursor");
-}
-
-void HTTPWSTest::testGraphicViewSelectionWriter()
-{
- testEachView("graphicviewselection.odt", "text", "graphicselection:", "graphicviewselection:", "graphicViewSelection-odt ");
-}
-
-void HTTPWSTest::testGraphicViewSelectionCalc()
-{
- testEachView("graphicviewselection.ods", "spreadsheet", "graphicselection:", "graphicviewselection:", "graphicViewSelection-ods ");
-}
-
-void HTTPWSTest::testGraphicViewSelectionImpress()
-{
- testEachView("graphicviewselection.odp", "presentation", "graphicselection:", "graphicviewselection:", "graphicViewSelection-odp ");
-}
-
void HTTPWSTest::testGraphicInvalidate()
{
const char* testname = "graphicInvalidate ";
More information about the Libreoffice-commits
mailing list