From 8109e5343cc5a39fada4fe6cc735880e424a9384 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Tue, 8 Mar 2016 08:46:46 -0500 Subject: [PATCH] test(issue38): show how to avoid issue #38 --- tests/auto/qamqpclient/tst_qamqpclient.cpp | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/auto/qamqpclient/tst_qamqpclient.cpp b/tests/auto/qamqpclient/tst_qamqpclient.cpp index ffcf8db..c562286 100644 --- a/tests/auto/qamqpclient/tst_qamqpclient.cpp +++ b/tests/auto/qamqpclient/tst_qamqpclient.cpp @@ -4,6 +4,8 @@ #include "qamqptestcase.h" #include "qamqpauthenticator.h" +#include "qamqpexchange.h" +#include "qamqpqueue.h" #include "qamqpclient_p.h" #include "qamqpclient.h" @@ -20,6 +22,7 @@ private Q_SLOTS: void socketError(); void validateUri_data(); void validateUri(); + void issue38(); public Q_SLOTS: // temporarily disabled void autoReconnect(); @@ -27,6 +30,7 @@ public Q_SLOTS: // temporarily disabled private: QSslConfiguration createSslConfiguration(); + void issue38_helper(QAmqpClient *client); }; @@ -222,5 +226,34 @@ void tst_QAMQPClient::validateUri() QCOMPARE(clientPrivate.virtualHost, expectedVirtualHost); } +void tst_QAMQPClient::issue38_helper(QAmqpClient *client) +{ + // connect + client->connectToHost(); + QVERIFY(waitForSignal(client, SIGNAL(connected()))); + + // create then declare, remove and close queue + QAmqpQueue *queue = client->createQueue(); + QVERIFY(waitForSignal(queue, SIGNAL(opened()))); + queue->declare(); + QVERIFY(waitForSignal(queue, SIGNAL(declared()))); + queue->remove(QAmqpExchange::roForce); + QVERIFY(waitForSignal(queue, SIGNAL(removed()))); + queue->close(); + QVERIFY(waitForSignal(queue, SIGNAL(closed()))); + queue->deleteLater(); + + // disconnect + client->disconnectFromHost(); + QVERIFY(waitForSignal(client, SIGNAL(disconnected()))); +} + +void tst_QAMQPClient::issue38() +{ + QAmqpClient client; + issue38_helper(&client); + issue38_helper(&client); +} + QTEST_MAIN(tst_QAMQPClient) #include "tst_qamqpclient.moc"