From 62b349c5cf157479041969dc41e98597912de8d4 Mon Sep 17 00:00:00 2001 From: Jonas Karlsson Date: Wed, 20 Nov 2024 19:34:09 +0100 Subject: [PATCH] BaselineProtocol: add FinalizeTesting command Also adds a helper function QBaselineTest::finalizeAndDisconnect() that calls the finalize command, prints the optional report URL and disconnects to the server. Pick-to: 6.8 Change-Id: Iabdba77f9eebad3e3f3fa67ab8977d1e49c49fb4 Reviewed-by: Eirik Aavitsland --- tests/baseline/shared/baselineprotocol.cpp | 5 +++++ tests/baseline/shared/baselineprotocol.h | 2 ++ tests/baseline/shared/qbaselinetest.cpp | 17 +++++++++++++++++ tests/baseline/shared/qbaselinetest.h | 2 ++ 4 files changed, 26 insertions(+) diff --git a/tests/baseline/shared/baselineprotocol.cpp b/tests/baseline/shared/baselineprotocol.cpp index 311b003c075..49cc94ce95a 100644 --- a/tests/baseline/shared/baselineprotocol.cpp +++ b/tests/baseline/shared/baselineprotocol.cpp @@ -384,6 +384,11 @@ bool BaselineProtocol::submitMismatch(const ImageItem &item, QByteArray *serverM return false; } +bool BaselineProtocol::finalizeTesting(QByteArray *serverMsg) +{ + Command cmd; + return sendBlock(Command::FinalizeTesting, {}) && receiveBlock(&cmd, serverMsg) && cmd == Ack; +} bool BaselineProtocol::sendItem(Command cmd, const ImageItem &item) { diff --git a/tests/baseline/shared/baselineprotocol.h b/tests/baseline/shared/baselineprotocol.h index 93d416fcd8f..91aaed1b5e6 100644 --- a/tests/baseline/shared/baselineprotocol.h +++ b/tests/baseline/shared/baselineprotocol.h @@ -105,6 +105,7 @@ public: AcceptMatch = 3, AcceptNewBaseline = 4, AcceptMismatch = 5, + FinalizeTesting = 6, // Responses Ack = 128, Abort = 129, @@ -122,6 +123,7 @@ public: bool submitMatch(const ImageItem &item, QByteArray *serverMsg); bool submitNewBaseline(const ImageItem &item, QByteArray *serverMsg); bool submitMismatch(const ImageItem &item, QByteArray *serverMsg, bool *fuzzyMatch = nullptr); + bool finalizeTesting(QByteArray *serverMsg); // For server: bool acceptConnection(PlatformInfo *pi); diff --git a/tests/baseline/shared/qbaselinetest.cpp b/tests/baseline/shared/qbaselinetest.cpp index 964266f1b4d..ad571be2a3c 100644 --- a/tests/baseline/shared/qbaselinetest.cpp +++ b/tests/baseline/shared/qbaselinetest.cpp @@ -228,6 +228,23 @@ bool connectToBaselineServer(QByteArray *msg) return connect(msg ? msg : &dummyMsg, &dummy); } +bool finalizeTesting(QByteArray *msg) { + QByteArray dummyMsg; + return proto.finalizeTesting(msg ? msg : &dummyMsg); +} + +void finalizeAndDisconnect() +{ + if (QByteArray msg; finalizeTesting(&msg)) { + if (msg.isEmpty()) + qInfo() << "No baseline server report produced."; + else + qInfo() << "Baseline server report:" << msg.data(); + } + + disconnectFromBaselineServer(); +} + void setAutoMode(bool mode) { customInfo.setAdHocRun(!mode); diff --git a/tests/baseline/shared/qbaselinetest.h b/tests/baseline/shared/qbaselinetest.h index 73bb5dfda9b..4dfb2a2a30b 100644 --- a/tests/baseline/shared/qbaselinetest.h +++ b/tests/baseline/shared/qbaselinetest.h @@ -15,12 +15,14 @@ void setProject(const QString &projectName); // Selects server config settings a void setProjectImageKeys(const QStringList &keys); // Overrides the ItemPathKeys config setting void addClientProperty(const QString& key, const QString& value); bool connectToBaselineServer(QByteArray *msg = nullptr); +bool finalizeTesting(QByteArray *msg = nullptr); bool checkImage(const QImage& img, const char *name, quint16 checksum, QByteArray *msg, bool *error, int manualdatatag = 0); bool testImage(const QImage& img, QByteArray *msg, bool *error); QTestData &newRow(const char *dataTag, quint16 checksum = 0); bool isCurrentItemBlacklisted(); bool disconnectFromBaselineServer(); bool shouldAbortIfUnstable(); +void finalizeAndDisconnect(); } #define QBASELINE_CHECK_SUM(image, name, checksum)\