summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMaurice Kalinowski <maurice.kalinowski@qt.io>2018-04-16 11:40:31 +0200
committerMaurice Kalinowski <maurice.kalinowski@qt.io>2018-07-20 11:53:40 +0000
commit307eaa2cf80ef878d9f79570250ec17bc78e19f4 (patch)
tree72736a3c1c2ead5fde7c64097efd2a438b15ae0e /tests
parentdf381fc98e18588a16e56b1bf9360876c83aec58 (diff)
MQTT5: Update tests
Some tests require checks for MQTT5 Change-Id: If3c22c9c805a137d90b27bae0bdc9d77e17cd8a1 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/conformance/tst_conformance.cpp70
-rw-r--r--tests/auto/qmqttclient/tst_qmqttclient.cpp123
-rw-r--r--tests/auto/qmqttsubscription/tst_qmqttsubscription.cpp42
-rw-r--r--tests/common/broker_connection.h12
4 files changed, 187 insertions, 60 deletions
diff --git a/tests/auto/conformance/tst_conformance.cpp b/tests/auto/conformance/tst_conformance.cpp
index fcca6db..1c7f869 100644
--- a/tests/auto/conformance/tst_conformance.cpp
+++ b/tests/auto/conformance/tst_conformance.cpp
@@ -50,15 +50,19 @@ private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
+ void basic_test_data();
void basic_test();
void retained_message_test_data();
void retained_message_test();
+ void will_message_test_data();
void will_message_test();
void zero_length_clientid_test_data();
void zero_length_clientid_test();
+ void offline_message_queueing_test_data();
void offline_message_queueing_test();
// overlapping_subscriptions_test // Skipped at the module emits multiple messages for each sub
// keepalive_test // The module handles sending ping requests
+ void subscribe_failure_test_data();
void subscribe_failure_test();
private:
QProcess m_brokerProcess;
@@ -83,9 +87,13 @@ void Tst_MqttConformance::cleanupTestCase()
{
}
+DefaultVersionTestData(Tst_MqttConformance::basic_test_data)
+
void Tst_MqttConformance::basic_test()
{
- QMqttClient client;
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
@@ -96,6 +104,13 @@ void Tst_MqttConformance::basic_test()
client.disconnectFromHost();
QTRY_VERIFY2(client.state() == QMqttClient::Disconnected, "Could not disconnect from broker");
+ // The MQTT 5 broker might provide topic alias by default. Hence, disable it.
+ if (mqttVersion == QMqttClient::MQTT_5_0) {
+ QMqttConnectionProperties p;
+ p.setMaximumTopicAlias(0);
+ client.setConnectionProperties(p);
+ }
+
client.connectToHost();
QTRY_VERIFY2(client.state() == QMqttClient::Connected, "Could not connect to broker");
@@ -106,7 +121,6 @@ void Tst_MqttConformance::basic_test()
int msgCount = 0;
connect(sub, &QMqttSubscription::messageReceived, this, [&msgCount](QMqttMessage msg) {
- qDebug() << "Message received:" << msg.payload();
msgCount++;
});
@@ -132,22 +146,28 @@ void Tst_MqttConformance::basic_test()
void Tst_MqttConformance::retained_message_test_data()
{
+ QTest::addColumn<QMqttClient::ProtocolVersion>("mqttVersion");
QTest::addColumn<QStringList>("messages");
QTest::addColumn<int>("expectedMsgCount");
- const QStringList topics1{"qos 0", "qos 1", "qos 2"};
- const QStringList topics2{"", "", ""};
+ QList<QMqttClient::ProtocolVersion> versions{QMqttClient::MQTT_3_1_1, QMqttClient::MQTT_5_0};
- QTest::newRow("receiveRetain") << topics1 << 3;
- QTest::newRow("clearRetain") << topics2 << 0;
+ for (int i = 0; i < 2; ++i) {
+ const QStringList topics1{"qos 0", "qos 1", "qos 2"};
+ const QStringList topics2{"", "", ""};
+
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":receiveRetain")) << versions[i] << topics1 << 3;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":clearRetain")) << versions[i] << topics2 << 0;
+ }
}
void Tst_MqttConformance::retained_message_test()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
QFETCH(QStringList, messages);
QFETCH(int, expectedMsgCount);
- QMqttClient client;
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
@@ -187,9 +207,13 @@ void Tst_MqttConformance::retained_message_test()
QTRY_VERIFY2(client.state() == QMqttClient::Disconnected, "Could not disconnect");
}
+DefaultVersionTestData(Tst_MqttConformance::will_message_test_data)
+
void Tst_MqttConformance::will_message_test()
{
- QMqttClient client;
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
@@ -205,7 +229,7 @@ void Tst_MqttConformance::will_message_test()
QTRY_VERIFY2(client.state() == QMqttClient::Connected, "Could not connect to broker");
- QMqttClient recipient;
+ VersionClient(mqttVersion, recipient);
recipient.setHostname(m_testBroker);
recipient.setPort(m_port);
recipient.connectToHost();
@@ -227,17 +251,23 @@ void Tst_MqttConformance::will_message_test()
void Tst_MqttConformance::zero_length_clientid_test_data()
{
+ QTest::addColumn<QMqttClient::ProtocolVersion>("mqttVersion");
QTest::addColumn<bool>("session");
- QTest::newRow("noncleanSession") << false;
- QTest::newRow("cleanSession") << true;
+ QList<QMqttClient::ProtocolVersion> versions{QMqttClient::MQTT_3_1_1, QMqttClient::MQTT_5_0};
+
+ for (int i = 0; i < 2; ++i) {
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":noncleanSession")) << versions[i] << false;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":cleanSession")) << versions[i] << true;
+ }
}
void Tst_MqttConformance::zero_length_clientid_test()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
QFETCH(bool, session);
- QMqttClient client;
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
@@ -263,9 +293,12 @@ void Tst_MqttConformance::zero_length_clientid_test()
}
}
+DefaultVersionTestData(Tst_MqttConformance::offline_message_queueing_test_data)
+
void Tst_MqttConformance::offline_message_queueing_test()
{
- QMqttClient client;
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
@@ -280,7 +313,7 @@ void Tst_MqttConformance::offline_message_queueing_test()
client.disconnectFromHost();
QTRY_VERIFY2(client.state() == QMqttClient::Disconnected, "Could not disconnect.");
- QMqttClient publisher;
+ VersionClient(mqttVersion, publisher);
publisher.setHostname(m_testBroker);
publisher.setPort(m_port);
publisher.connectToHost();
@@ -300,15 +333,22 @@ void Tst_MqttConformance::offline_message_queueing_test()
client.connectToHost();
QTRY_VERIFY2(client.state() == QMqttClient::Connected, "Could not connect to broker.");
+ // ### TODO: MQTT5 Investigate / Fixme
+ if (client.protocolVersion() == QMqttClient::MQTT_5_0)
+ QEXPECT_FAIL("", "Offline messages seem not supported with MQTT5", Continue);
QTRY_VERIFY2(receiveCounter.size() == 3, "Did not receive all offline messages.");
client.disconnectFromHost();
QTRY_VERIFY2(client.state() == QMqttClient::Disconnected, "Could not disconnect.");
}
+DefaultVersionTestData(Tst_MqttConformance::subscribe_failure_test_data)
+
void Tst_MqttConformance::subscribe_failure_test()
{
- QMqttClient client;
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
+ VersionClient(mqttVersion, client);
const QByteArray forbiddenTopic{"nosubscribe"};
// We do not have a test broker with forbidden topics.
diff --git a/tests/auto/qmqttclient/tst_qmqttclient.cpp b/tests/auto/qmqttclient/tst_qmqttclient.cpp
index 68e0556..e6d4fc3 100644
--- a/tests/auto/qmqttclient/tst_qmqttclient.cpp
+++ b/tests/auto/qmqttclient/tst_qmqttclient.cpp
@@ -46,17 +46,25 @@ public:
private Q_SLOTS:
void initTestCase();
void cleanupTestCase();
+ void getSetCheck_data();
void getSetCheck();
void sendReceive_data();
void sendReceive();
+ void retainMessage_data();
void retainMessage();
+ void willMessage_data();
void willMessage();
void compliantTopic_data();
void compliantTopic();
+ void subscribeLongTopic_data();
void subscribeLongTopic();
+ void dataIncludingZero_data();
void dataIncludingZero();
+ void publishLongTopic_data();
void publishLongTopic();
+ void reconnect_QTBUG65726_data();
void reconnect_QTBUG65726();
+ void openIODevice_QTBUG66955_data();
void openIODevice_QTBUG66955();
private:
QProcess m_brokerProcess;
@@ -79,9 +87,12 @@ void Tst_QMqttClient::cleanupTestCase()
{
}
+DefaultVersionTestData(Tst_QMqttClient::getSetCheck_data)
+
void Tst_QMqttClient::getSetCheck()
{
- QMqttClient client;
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+ VersionClient(mqttVersion, client);
QVERIFY(client.clientId().size() > 0);
const QString clientId = QLatin1String("testclient123");
@@ -101,13 +112,17 @@ void Tst_QMqttClient::getSetCheck()
client.setKeepAlive(10);
QCOMPARE(client.keepAlive(), quint16(10));
- QCOMPARE(client.protocolVersion(), QMqttClient::MQTT_3_1_1);
- client.setProtocolVersion(QMqttClient::ProtocolVersion(0));
- QCOMPARE(client.protocolVersion(), QMqttClient::MQTT_3_1_1);
- client.setProtocolVersion(QMqttClient::ProtocolVersion(5));
- QCOMPARE(client.protocolVersion(), QMqttClient::MQTT_3_1_1);
- client.setProtocolVersion(QMqttClient::MQTT_3_1);
- QCOMPARE(client.protocolVersion(), QMqttClient::MQTT_3_1);
+ // Available protocol versions
+ QMqttClient client2;
+ QCOMPARE(client2.protocolVersion(), QMqttClient::MQTT_3_1_1);
+ client2.setProtocolVersion(QMqttClient::ProtocolVersion(0));
+ QCOMPARE(client2.protocolVersion(), QMqttClient::MQTT_3_1_1);
+ client2.setProtocolVersion(QMqttClient::ProtocolVersion(6));
+ QCOMPARE(client2.protocolVersion(), QMqttClient::MQTT_3_1_1);
+ client2.setProtocolVersion(QMqttClient::MQTT_3_1);
+ QCOMPARE(client2.protocolVersion(), QMqttClient::MQTT_3_1);
+ client2.setProtocolVersion(QMqttClient::MQTT_5_0);
+ QCOMPARE(client2.protocolVersion(), QMqttClient::MQTT_5_0);
#ifdef QT_BUILD_INTERNAL
if (qEnvironmentVariableIsSet("QT_MQTT_TEST_USERNAME"))
@@ -128,22 +143,29 @@ void Tst_QMqttClient::getSetCheck()
void Tst_QMqttClient::sendReceive_data()
{
+ QTest::addColumn<QMqttClient::ProtocolVersion>("mqttVersion");
QTest::addColumn<QByteArray>("data");
- QTest::newRow("empty") << QByteArray();
- QTest::newRow("simple") << QByteArray("This is a test message");
- QByteArray d;
- d.fill('A', 500);
- QTest::newRow("big") << d;
- d.fill('B', (128 * 128 * 128) + 4);
- QTest::newRow("huge") << d;
+
+ QList<QMqttClient::ProtocolVersion> versions{QMqttClient::MQTT_3_1_1, QMqttClient::MQTT_5_0};
+
+ for (int i = 0; i < 2; ++i) {
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":empty")) << versions[i] << QByteArray();
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":simple")) << versions[i] << QByteArray("This is a test message");
+ QByteArray d;
+ d.fill('A', 500);
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":big")) << versions[i] << d;
+ d.fill('B', (128 * 128 * 128) + 4);
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":huge")) << versions[i] << d;
+ }
}
void Tst_QMqttClient::sendReceive()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
QFETCH(QByteArray, data);
const QString testTopic = QLatin1String("Topic");
- QMqttClient publisher;
+ VersionClient(mqttVersion, publisher);
publisher.setClientId(QLatin1String("publisher"));
publisher.setHostname(m_testBroker);
publisher.setPort(m_port);
@@ -151,7 +173,7 @@ void Tst_QMqttClient::sendReceive()
publisher.connectToHost();
QTRY_COMPARE(publisher.state(), QMqttClient::Connected);
- QMqttClient subscriber;
+ VersionClient(mqttVersion, subscriber);
subscriber.setClientId(QLatin1String("subscriber"));
subscriber.setHostname(m_testBroker);
subscriber.setPort(m_port);
@@ -170,19 +192,26 @@ void Tst_QMqttClient::sendReceive()
QTRY_COMPARE(sub->state(), QMqttSubscription::Subscribed);
+ if (subscriber.protocolVersion() == QMqttClient::MQTT_5_0 &&
+ (quint32)data.size() > subscriber.serverConnectionProperties().maximumPacketSize())
+ QSKIP("The MQTT 5 test broker does not support huge packages.", SkipOnce);
publisher.publish(testTopic, data, 1);
QTRY_VERIFY2(received, "Subscriber did not receive message");
QVERIFY2(verified, "Subscriber received different message");
}
+DefaultVersionTestData(Tst_QMqttClient::retainMessage_data)
+
void Tst_QMqttClient::retainMessage()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
const QString testTopic = QLatin1String("Topic2");
const QByteArray testMessage("retainedMessage");
// Publisher
- QMqttClient publisher;
+ VersionClient(mqttVersion, publisher);
publisher.setClientId(QLatin1String("publisher"));
publisher.setHostname(m_testBroker);
publisher.setPort(m_port);
@@ -205,7 +234,7 @@ void Tst_QMqttClient::retainMessage()
publisher.publish(testTopic, testMessage, 1, i == 1 ? true : false);
QTRY_COMPARE(publishSpy.count(), 1);
- QMqttClient sub;
+ VersionClient(mqttVersion, sub);
sub.setClientId(QLatin1String("SubA"));
sub.setHostname(m_testBroker);
sub.setPort(m_port);
@@ -226,13 +255,17 @@ void Tst_QMqttClient::retainMessage()
publisher.disconnect();
}
+DefaultVersionTestData(Tst_QMqttClient::willMessage_data)
+
void Tst_QMqttClient::willMessage()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
const QString willTopic = QLatin1String("will/topic");
const QByteArray willMessage("The client died....");
// Client A connects
- QMqttClient client1;
+ VersionClient(mqttVersion, client1);
client1.setHostname(m_testBroker);
client1.setPort(m_port);
client1.connectToHost();
@@ -254,7 +287,7 @@ void Tst_QMqttClient::willMessage()
QVERIFY(sock.waitForConnected());
for (int i = 1; i > 0; --i) {
- QMqttClient willClient;
+ VersionClient(mqttVersion, willClient);
if (i == 1)
willClient.setTransport(&sock, QMqttClient::AbstractSocket);
else {
@@ -284,13 +317,21 @@ void Tst_QMqttClient::willMessage()
void Tst_QMqttClient::compliantTopic_data()
{
+ QTest::addColumn<QMqttClient::ProtocolVersion>("mqttVersion");
QTest::addColumn<QString>("topic");
- QTest::newRow("simple") << QString::fromLatin1("topic");
- QTest::newRow("subPath") << QString::fromLatin1("topic/subtopic");
- QString l;
- l.fill(QLatin1Char('T'), std::numeric_limits<std::uint16_t>::max());
- QTest::newRow("maxSize") << l;
+ QList<QMqttClient::ProtocolVersion> versions{QMqttClient::MQTT_3_1_1, QMqttClient::MQTT_5_0};
+
+ for (int i = 0; i < 2; ++i) {
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":simple")) << versions[i] << QString::fromLatin1("topic");
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":subPath")) << versions[i] << QString::fromLatin1("topic/subtopic");
+
+ if (versions[i] != QMqttClient::MQTT_5_0) {
+ QString l;
+ l.fill(QLatin1Char('T'), std::numeric_limits<std::uint16_t>::max());
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":maxSize")) << versions[i] << l;
+ }
+ }
}
void Tst_QMqttClient::compliantTopic()
@@ -331,9 +372,13 @@ void Tst_QMqttClient::compliantTopic()
QVERIFY2(verified, "Subscriber received different message");
}
+DefaultVersionTestData(Tst_QMqttClient::subscribeLongTopic_data)
+
void Tst_QMqttClient::subscribeLongTopic()
{
- QMqttClient subscriber;
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
+ VersionClient(mqttVersion, subscriber);
subscriber.setClientId(QLatin1String("subscriber"));
subscriber.setHostname(m_testBroker);
subscriber.setPort(m_port);
@@ -347,14 +392,18 @@ void Tst_QMqttClient::subscribeLongTopic()
QCOMPARE(sub, nullptr);
}
+DefaultVersionTestData(Tst_QMqttClient::dataIncludingZero_data)
+
void Tst_QMqttClient::dataIncludingZero()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
QByteArray data;
const int dataSize = 200;
data.fill('A', dataSize);
data[100] = '\0';
- QMqttClient client;
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
@@ -382,9 +431,13 @@ void Tst_QMqttClient::dataIncludingZero()
QVERIFY2(correctSize, "Subscriber received message of different size");
}
+DefaultVersionTestData(Tst_QMqttClient::publishLongTopic_data)
+
void Tst_QMqttClient::publishLongTopic()
{
- QMqttClient publisher;
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
+ VersionClient(mqttVersion, publisher);
publisher.setClientId(QLatin1String("publisher"));
publisher.setHostname(m_testBroker);
publisher.setPort(m_port);
@@ -435,11 +488,15 @@ public:
bool connectionSuccess{false};
};
+DefaultVersionTestData(Tst_QMqttClient::reconnect_QTBUG65726_data)
+
void Tst_QMqttClient::reconnect_QTBUG65726()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
FakeServer server;
- QMqttClient client;
+ VersionClient(mqttVersion, client);
client.setClientId(QLatin1String("bugclient"));
client.setHostname(QLatin1String("localhost"));
client.setPort(5726);
@@ -478,12 +535,16 @@ public:
QAtomicInt written{0};
};
+DefaultVersionTestData(Tst_QMqttClient::openIODevice_QTBUG66955_data)
+
void Tst_QMqttClient::openIODevice_QTBUG66955()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+
IOTransport trans;
trans.open(QIODevice::ReadWrite);
- QMqttClient client;
+ VersionClient(mqttVersion, client);
client.setTransport(&trans, QMqttClient::IODevice);
client.connectToHost();
diff --git a/tests/auto/qmqttsubscription/tst_qmqttsubscription.cpp b/tests/auto/qmqttsubscription/tst_qmqttsubscription.cpp
index fda8ef6..d19fa49 100644
--- a/tests/auto/qmqttsubscription/tst_qmqttsubscription.cpp
+++ b/tests/auto/qmqttsubscription/tst_qmqttsubscription.cpp
@@ -47,6 +47,7 @@ private Q_SLOTS:
void getSetCheck();
void wildCards_data();
void wildCards();
+ void reconnect_data();
void reconnect();
private:
QProcess m_brokerProcess;
@@ -75,35 +76,41 @@ void Tst_QMqttSubscription::getSetCheck()
void Tst_QMqttSubscription::wildCards_data()
{
+ QTest::addColumn<QMqttClient::ProtocolVersion>("mqttVersion");
QTest::addColumn<QString>("subscription");
QTest::addColumn<int>("expectedReceival");
- QTest::newRow("#") << "Qt/#" << 6;
- QTest::newRow("Qt/a/b/c/d/e/f") << "Qt/a/b/c/d/e/f" << 1;
- QTest::newRow("Qt/+/b/c/d/e/f") << "Qt/+/b/c/d/e/f" << 1;
- QTest::newRow("Qt/a/+/c/d/e/f") << "Qt/a/+/c/d/e/f" << 1;
- QTest::newRow("Qt/a/b/+/d/e/f") << "Qt/a/b/+/d/e/f" << 1;
- QTest::newRow("Qt/a/b/c/+/e/f") << "Qt/a/b/c/+/e/f" << 1;
- QTest::newRow("Qt/a/b/c/d/+/f") << "Qt/a/b/c/d/+/f" << 1;
- QTest::newRow("Qt/a/b/c/d/e/+") << "Qt/a/b/c/d/e/+" << 1;
- QTest::newRow("Qt/+/b/+/d/e/+") << "Qt/+/b/+/d/e/+" << 1;
- QTest::newRow("Qt/a/+") << "Qt/a/+" << 1;
- QTest::newRow("Qt/a/+/c") << "Qt/a/+/c" << 1;
+ QList<QMqttClient::ProtocolVersion> versions{QMqttClient::MQTT_3_1_1, QMqttClient::MQTT_5_0};
+
+ for (int i = 0; i < 2; ++i) {
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":#")) << versions[i] << "Qt/#" << 6;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/b/c/d/e/f")) << versions[i] << "Qt/a/b/c/d/e/f" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/+/b/c/d/e/f")) << versions[i] << "Qt/+/b/c/d/e/f" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/+/c/d/e/f")) << versions[i] << "Qt/a/+/c/d/e/f" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/b/+/d/e/f")) << versions[i] << "Qt/a/b/+/d/e/f" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/b/c/+/e/f")) << versions[i] << "Qt/a/b/c/+/e/f" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/b/c/d/+/f")) << versions[i] << "Qt/a/b/c/d/+/f" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/b/c/d/e/+")) << versions[i] << "Qt/a/b/c/d/e/+" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/+/b/+/d/e/+")) << versions[i] << "Qt/+/b/+/d/e/+" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/+")) << versions[i] << "Qt/a/+" << 1;
+ QTest::newRow(qPrintable(QString::number(versions[i]) + ":Qt/a/+/c")) << versions[i] << "Qt/a/+/c" << 1;
+ }
}
void Tst_QMqttSubscription::wildCards()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
QFETCH(QString, subscription);
QFETCH(int, expectedReceival);
- QMqttClient client;
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
client.connectToHost();
QTRY_VERIFY2(client.state() == QMqttClient::Connected, "Could not connect to broker.");
- QMqttClient publisher;
+ VersionClient(mqttVersion, publisher);
publisher.setHostname(m_testBroker);
publisher.setPort(m_port);
publisher.connectToHost();
@@ -142,11 +149,18 @@ void Tst_QMqttSubscription::wildCards()
QTRY_VERIFY2(publisher.state() == QMqttClient::Disconnected, "Could not disconnect.");
}
+DefaultVersionTestData(Tst_QMqttSubscription::reconnect_data)
+
void Tst_QMqttSubscription::reconnect()
{
+ QFETCH(QMqttClient::ProtocolVersion, mqttVersion);
+ // ### TODO: Should work with MQTT5, no?
+ if (mqttVersion == QMqttClient::MQTT_5_0)
+ QSKIP("Test does not work with MQTT5");
+
// QTBUG-64042
// - Connect with clean session
- QMqttClient client;
+ VersionClient(mqttVersion, client);
client.setHostname(m_testBroker);
client.setPort(m_port);
diff --git a/tests/common/broker_connection.h b/tests/common/broker_connection.h
index 593690c..32ab147 100644
--- a/tests/common/broker_connection.h
+++ b/tests/common/broker_connection.h
@@ -29,6 +29,7 @@
#include <QtCore/QFile>
#include <QtCore/QProcess>
#include <QtCore/QString>
+#include <QtMqtt/QMqttClient>
#include <QtNetwork/QTcpSocket>
#include <QtTest/QTest>
@@ -98,3 +99,14 @@ QString invokeOrInitializeBroker(QProcess *gBrokerProcess)
qWarning("Could not launch MQTT test broker.");
return QString();
}
+
+Q_DECLARE_METATYPE(QMqttClient::ProtocolVersion)
+#define VersionClient(MQTTVERSION, CLIENTNAME) QMqttClient CLIENTNAME; CLIENTNAME.setProtocolVersion(MQTTVERSION)
+
+#define DefaultVersionTestData(FUNCTION) \
+void FUNCTION() \
+{ \
+ QTest::addColumn<QMqttClient::ProtocolVersion>("mqttVersion"); \
+ QTest::newRow("V3.1.1") << QMqttClient::MQTT_3_1_1; \
+ QTest::newRow("V5.0.0") << QMqttClient::MQTT_5_0; \
+}