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 <eirik.aavitsland@qt.io>
This commit is contained in:
Jonas Karlsson 2024-11-20 19:34:09 +01:00
parent 69315d6627
commit 62b349c5cf
4 changed files with 26 additions and 0 deletions

View File

@ -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)
{

View File

@ -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);

View File

@ -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);

View File

@ -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)\