2014-06-04 01:48:50 +08:00
|
|
|
#include <QtTest/QtTest>
|
|
|
|
|
#include "amqp_testcase.h"
|
|
|
|
|
|
2014-06-06 04:09:52 +08:00
|
|
|
#include <QProcess>
|
2014-06-04 01:48:50 +08:00
|
|
|
#include "amqp_client.h"
|
2014-06-07 04:49:45 +08:00
|
|
|
#include "amqp_authenticator.h"
|
2014-06-04 01:48:50 +08:00
|
|
|
|
|
|
|
|
using namespace QAMQP;
|
|
|
|
|
class tst_QAMQPClient : public TestCase
|
|
|
|
|
{
|
|
|
|
|
Q_OBJECT
|
|
|
|
|
private Q_SLOTS:
|
|
|
|
|
void connect();
|
|
|
|
|
void connectDisconnect();
|
2014-06-07 04:49:45 +08:00
|
|
|
void invalidAuthenticationMechanism();
|
2014-06-10 07:27:24 +08:00
|
|
|
void tune();
|
|
|
|
|
|
2014-06-06 04:15:51 +08:00
|
|
|
private:
|
2014-06-06 04:09:52 +08:00
|
|
|
void autoReconnect();
|
2014-06-04 01:48:50 +08:00
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void tst_QAMQPClient::connect()
|
|
|
|
|
{
|
|
|
|
|
Client client;
|
|
|
|
|
client.connectToHost();
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(connected())));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void tst_QAMQPClient::connectDisconnect()
|
|
|
|
|
{
|
|
|
|
|
Client client;
|
|
|
|
|
client.connectToHost();
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(connected())));
|
|
|
|
|
client.disconnectFromHost();
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(disconnected())));
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-07 04:49:45 +08:00
|
|
|
class InvalidAuthenticator : public Authenticator
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
virtual QString type() const { return "CRAZYAUTH"; }
|
|
|
|
|
virtual void write(QDataStream &out) {
|
|
|
|
|
Q_UNUSED(out);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void tst_QAMQPClient::invalidAuthenticationMechanism()
|
|
|
|
|
{
|
|
|
|
|
Client client;
|
|
|
|
|
client.setAuth(new InvalidAuthenticator);
|
|
|
|
|
client.connectToHost();
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(disconnected())));
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-06 04:09:52 +08:00
|
|
|
void tst_QAMQPClient::autoReconnect()
|
2014-06-04 01:48:50 +08:00
|
|
|
{
|
2014-06-06 04:09:52 +08:00
|
|
|
// TODO: this is a fairly crude way of testing this, research
|
|
|
|
|
// better alternatives
|
|
|
|
|
|
|
|
|
|
Client client;
|
|
|
|
|
client.setAutoReconnect(true);
|
|
|
|
|
client.connectToHost();
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(connected())));
|
|
|
|
|
QProcess::execute("rabbitmqctl", QStringList() << "stop_app");
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(disconnected())));
|
|
|
|
|
QProcess::execute("rabbitmqctl", QStringList() << "start_app");
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(connected()), 2));
|
2014-06-04 01:48:50 +08:00
|
|
|
}
|
|
|
|
|
|
2014-06-10 07:27:24 +08:00
|
|
|
void tst_QAMQPClient::tune()
|
|
|
|
|
{
|
|
|
|
|
Client client;
|
|
|
|
|
client.setChannelMax(15);
|
2014-06-10 07:39:09 +08:00
|
|
|
client.setFrameMax(5000);
|
2014-06-10 07:27:24 +08:00
|
|
|
client.setHeartbeatDelay(600);
|
|
|
|
|
|
|
|
|
|
client.connectToHost();
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(connected())));
|
|
|
|
|
QCOMPARE((int)client.channelMax(), 15);
|
|
|
|
|
QCOMPARE((int)client.heartbeatDelay(), 600);
|
2014-06-10 07:39:09 +08:00
|
|
|
QCOMPARE((int)client.frameMax(), 5000);
|
2014-06-10 07:27:24 +08:00
|
|
|
|
|
|
|
|
client.disconnectFromHost();
|
|
|
|
|
QVERIFY(waitForSignal(&client, SIGNAL(disconnected())));
|
|
|
|
|
}
|
|
|
|
|
|
2014-06-04 01:48:50 +08:00
|
|
|
QTEST_MAIN(tst_QAMQPClient)
|
|
|
|
|
#include "tst_qamqpclient.moc"
|