From aff5fb70b7c59698cd28f8a629fe3f8610b71be7 Mon Sep 17 00:00:00 2001 From: Matt Broadstone Date: Mon, 9 Jun 2014 15:10:35 -0400 Subject: [PATCH] added autotests for exclusive queues --- tests/auto/qamqpqueue/tst_qamqpqueue.cpp | 55 +++++++++++++++++++++--- 1 file changed, 49 insertions(+), 6 deletions(-) diff --git a/tests/auto/qamqpqueue/tst_qamqpqueue.cpp b/tests/auto/qamqpqueue/tst_qamqpqueue.cpp index 603e0cf..5a2770a 100644 --- a/tests/auto/qamqpqueue/tst_qamqpqueue.cpp +++ b/tests/auto/qamqpqueue/tst_qamqpqueue.cpp @@ -19,7 +19,9 @@ private Q_SLOTS: void standardExchanges_data(); void standardExchanges(); - void unnamedQueue(); + void unnamed(); + void exclusiveAccess(); + void exclusiveRemoval(); void remove(); void removeIfUnused(); @@ -42,8 +44,10 @@ void tst_QAMQPQueue::init() void tst_QAMQPQueue::cleanup() { - client->disconnectFromHost(); - QVERIFY(waitForSignal(client.data(), SIGNAL(disconnected()))); + if (client->isConnected()) { + client->disconnectFromHost(); + QVERIFY(waitForSignal(client.data(), SIGNAL(disconnected()))); + } } void tst_QAMQPQueue::defaultExchange() @@ -92,7 +96,7 @@ void tst_QAMQPQueue::standardExchanges() QCOMPARE(queue->getMessage().payload(), QByteArray("test message")); } -void tst_QAMQPQueue::unnamedQueue() +void tst_QAMQPQueue::unnamed() { Queue *queue = client->createQueue(); queue->declare(); @@ -102,6 +106,45 @@ void tst_QAMQPQueue::unnamedQueue() QVERIFY(!queue->name().isEmpty()); } +void tst_QAMQPQueue::exclusiveAccess() +{ + Queue *queue = client->createQueue("test-exclusive-queue"); + queue->declare(Queue::Exclusive); + QVERIFY(waitForSignal(queue, SIGNAL(declared()))); + + Client secondClient; + secondClient.connectToHost(); + QVERIFY(waitForSignal(&secondClient, SIGNAL(connected()))); + Queue *passiveQueue = secondClient.createQueue("test-exclusive-queue"); + passiveQueue->declare(Queue::Passive); + QVERIFY(waitForSignal(passiveQueue, SIGNAL(error(ChannelError)))); + QCOMPARE(passiveQueue->error(), Channel::ResourceLockedError); + + secondClient.disconnectFromHost(); + QVERIFY(waitForSignal(&secondClient, SIGNAL(disconnected()))); +} + +void tst_QAMQPQueue::exclusiveRemoval() +{ + Queue *queue = client->createQueue("test-exclusive-queue"); + queue->declare(Queue::Exclusive); + QVERIFY(waitForSignal(queue, SIGNAL(declared()))); + client.data()->disconnectFromHost(); + QVERIFY(waitForSignal(client.data(), SIGNAL(disconnected()))); + + // create a new client and try to access the queue that should + // no longer exist + Client secondClient; + secondClient.connectToHost(); + QVERIFY(waitForSignal(&secondClient, SIGNAL(connected()))); + Queue *passiveQueue = secondClient.createQueue("test-exclusive-queue"); + passiveQueue->declare(Queue::Passive); + QVERIFY(waitForSignal(passiveQueue, SIGNAL(error(ChannelError)))); + QCOMPARE(passiveQueue->error(), Channel::NotFoundError); + secondClient.disconnectFromHost(); + QVERIFY(waitForSignal(&secondClient, SIGNAL(disconnected()))); +} + void tst_QAMQPQueue::remove() { Queue *queue = client->createQueue("test-remove"); @@ -120,7 +163,7 @@ void tst_QAMQPQueue::removeIfUnused() queue->remove(Queue::roIfUnused); QVERIFY(waitForSignal(queue, SIGNAL(error(ChannelError)))); - QCOMPARE(queue->error(), Channel::PreconditionFailed); + QCOMPARE(queue->error(), Channel::PreconditionFailedError); QVERIFY(!queue->errorString().isEmpty()); } @@ -140,7 +183,7 @@ void tst_QAMQPQueue::removeIfEmpty() queue->remove(Queue::roIfEmpty); QVERIFY(waitForSignal(queue, SIGNAL(error(ChannelError)))); - QCOMPARE(queue->error(), Channel::PreconditionFailed); + QCOMPARE(queue->error(), Channel::PreconditionFailedError); QVERIFY(!queue->errorString().isEmpty()); }