From 307eaa2cf80ef878d9f79570250ec17bc78e19f4 Mon Sep 17 00:00:00 2001 From: Maurice Kalinowski Date: Mon, 16 Apr 2018 11:40:31 +0200 Subject: MQTT5: Update tests Some tests require checks for MQTT5 Change-Id: If3c22c9c805a137d90b27bae0bdc9d77e17cd8a1 Reviewed-by: Maurice Kalinowski --- tests/auto/conformance/tst_conformance.cpp | 70 +++++++++--- tests/auto/qmqttclient/tst_qmqttclient.cpp | 123 +++++++++++++++------ .../qmqttsubscription/tst_qmqttsubscription.cpp | 42 ++++--- tests/common/broker_connection.h | 12 ++ 4 files changed, 187 insertions(+), 60 deletions(-) (limited to 'tests') 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("mqttVersion"); QTest::addColumn("messages"); QTest::addColumn("expectedMsgCount"); - const QStringList topics1{"qos 0", "qos 1", "qos 2"}; - const QStringList topics2{"", "", ""}; + QList 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("mqttVersion"); QTest::addColumn("session"); - QTest::newRow("noncleanSession") << false; - QTest::newRow("cleanSession") << true; + QList 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("mqttVersion"); QTest::addColumn("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 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("mqttVersion"); QTest::addColumn("topic"); - QTest::newRow("simple") << QString::fromLatin1("topic"); - QTest::newRow("subPath") << QString::fromLatin1("topic/subtopic"); - QString l; - l.fill(QLatin1Char('T'), std::numeric_limits::max()); - QTest::newRow("maxSize") << l; + QList 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::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("mqttVersion"); QTest::addColumn("subscription"); QTest::addColumn("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 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 #include #include +#include #include #include @@ -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("mqttVersion"); \ + QTest::newRow("V3.1.1") << QMqttClient::MQTT_3_1_1; \ + QTest::newRow("V5.0.0") << QMqttClient::MQTT_5_0; \ +} -- cgit v1.2.3