updated queue tests to include purge test, and reenable removeIfEmpty test
This commit is contained in:
parent
4ff7683536
commit
478597063c
|
|
@ -25,10 +25,9 @@ private Q_SLOTS:
|
||||||
|
|
||||||
void remove();
|
void remove();
|
||||||
void removeIfUnused();
|
void removeIfUnused();
|
||||||
void unbind();
|
|
||||||
|
|
||||||
private: // disabled
|
|
||||||
void removeIfEmpty();
|
void removeIfEmpty();
|
||||||
|
void unbind();
|
||||||
|
void purge();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QScopedPointer<Client> client;
|
QScopedPointer<Client> client;
|
||||||
|
|
@ -169,22 +168,34 @@ void tst_QAMQPQueue::removeIfUnused()
|
||||||
|
|
||||||
void tst_QAMQPQueue::removeIfEmpty()
|
void tst_QAMQPQueue::removeIfEmpty()
|
||||||
{
|
{
|
||||||
// NOTE: this will work once I refactor messages to easily
|
// declare the queue and send messages to it
|
||||||
// add propertis for e.g. persistence
|
|
||||||
|
|
||||||
Queue *queue = client->createQueue("test-remove-if-empty");
|
Queue *queue = client->createQueue("test-remove-if-empty");
|
||||||
queue->declare(Queue::Durable);
|
queue->declare(Queue::Durable);
|
||||||
QVERIFY(waitForSignal(queue, SIGNAL(declared())));
|
QVERIFY(waitForSignal(queue, SIGNAL(declared())));
|
||||||
queue->consume();
|
|
||||||
|
|
||||||
Exchange *defaultExchange = client->createExchange();
|
Exchange *defaultExchange = client->createExchange();
|
||||||
defaultExchange->publish("test-remove-if-empty", "first message");
|
defaultExchange->publish("test-remove-if-empty", "first message");
|
||||||
QVERIFY(waitForSignal(queue, SIGNAL(messageReceived())));
|
|
||||||
|
|
||||||
queue->remove(Queue::roIfEmpty);
|
// create a second client and try to delete the queue
|
||||||
QVERIFY(waitForSignal(queue, SIGNAL(error(ChannelError))));
|
{
|
||||||
QCOMPARE(queue->error(), Channel::PreconditionFailedError);
|
Client secondClient;
|
||||||
QVERIFY(!queue->errorString().isEmpty());
|
secondClient.connectToHost();
|
||||||
|
QVERIFY(waitForSignal(&secondClient, SIGNAL(connected())));
|
||||||
|
Queue *testDeleteQueue = secondClient.createQueue("test-remove-if-empty");
|
||||||
|
testDeleteQueue->declare(Queue::Passive);
|
||||||
|
QVERIFY(waitForSignal(testDeleteQueue, SIGNAL(declared())));
|
||||||
|
|
||||||
|
testDeleteQueue->remove(Queue::roIfEmpty);
|
||||||
|
QVERIFY(waitForSignal(testDeleteQueue, SIGNAL(error(ChannelError))));
|
||||||
|
QCOMPARE(testDeleteQueue->error(), Channel::PreconditionFailedError);
|
||||||
|
QVERIFY(!testDeleteQueue->errorString().isEmpty());
|
||||||
|
|
||||||
|
secondClient.disconnectFromHost();
|
||||||
|
QVERIFY(waitForSignal(&secondClient, SIGNAL(disconnected())));
|
||||||
|
}
|
||||||
|
|
||||||
|
// clean up queue
|
||||||
|
queue->forceRemove();
|
||||||
|
QVERIFY(waitForSignal(queue, SIGNAL(removed())));
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QAMQPQueue::unbind()
|
void tst_QAMQPQueue::unbind()
|
||||||
|
|
@ -201,5 +212,41 @@ void tst_QAMQPQueue::unbind()
|
||||||
QVERIFY(waitForSignal(queue, SIGNAL(unbound())));
|
QVERIFY(waitForSignal(queue, SIGNAL(unbound())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QAMQPQueue::purge()
|
||||||
|
{
|
||||||
|
Queue *queue = client->createQueue("test-purge");
|
||||||
|
queue->declare(Queue::Durable);
|
||||||
|
QVERIFY(waitForSignal(queue, SIGNAL(declared())));
|
||||||
|
Exchange *defaultExchange = client->createExchange();
|
||||||
|
defaultExchange->publish("test-purge", "first message");
|
||||||
|
defaultExchange->publish("test-purge", "second message");
|
||||||
|
defaultExchange->publish("test-purge", "third message");
|
||||||
|
|
||||||
|
// create second client to listen to messages and attempt purge
|
||||||
|
{
|
||||||
|
Client secondClient;
|
||||||
|
secondClient.connectToHost();
|
||||||
|
QVERIFY(waitForSignal(&secondClient, SIGNAL(connected())));
|
||||||
|
Queue *testPurgeQueue = secondClient.createQueue("test-purge");
|
||||||
|
testPurgeQueue->declare(Queue::Passive);
|
||||||
|
QVERIFY(waitForSignal(testPurgeQueue, SIGNAL(declared())));
|
||||||
|
|
||||||
|
QSignalSpy spy(testPurgeQueue, SIGNAL(purged(int)));
|
||||||
|
testPurgeQueue->purge();
|
||||||
|
QVERIFY(waitForSignal(testPurgeQueue, SIGNAL(purged(int))));
|
||||||
|
QCOMPARE(spy.count(), 1);
|
||||||
|
QCOMPARE(testPurgeQueue->size(), 0);
|
||||||
|
QList<QVariant> arguments = spy.takeFirst();
|
||||||
|
QCOMPARE(arguments.at(0).toInt(), 3);
|
||||||
|
|
||||||
|
secondClient.disconnectFromHost();
|
||||||
|
QVERIFY(waitForSignal(&secondClient, SIGNAL(disconnected())));
|
||||||
|
}
|
||||||
|
|
||||||
|
// clean up queue
|
||||||
|
queue->forceRemove();
|
||||||
|
QVERIFY(waitForSignal(queue, SIGNAL(removed())));
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QAMQPQueue)
|
QTEST_MAIN(tst_QAMQPQueue)
|
||||||
#include "tst_qamqpqueue.moc"
|
#include "tst_qamqpqueue.moc"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue