summaryrefslogtreecommitdiff
path: root/cpp/src/tests/ClientChannelTest.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-04-04 15:45:37 +0000
committerAlan Conway <aconway@apache.org>2007-04-04 15:45:37 +0000
commit67674e50665e7def7b90569e3b3d33c3f047db5b (patch)
tree0ee59b838ebd64a5fe49c58d39c9124418edc07c /cpp/src/tests/ClientChannelTest.cpp
parent48660237ad577023aa17c860fdc91fec583763fd (diff)
downloadqpid-python-67674e50665e7def7b90569e3b3d33c3f047db5b.tar.gz
* Made client::Channel bi-modal: 0-8 or 0-9 modes.
* Added dummy impl of client::MessageMessageChannel. * Generalised ClientChannelTest to be able to test both modes. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@525542 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/ClientChannelTest.cpp')
-rw-r--r--cpp/src/tests/ClientChannelTest.cpp96
1 files changed, 56 insertions, 40 deletions
diff --git a/cpp/src/tests/ClientChannelTest.cpp b/cpp/src/tests/ClientChannelTest.cpp
index 458931c4f4..d5d1005aa9 100644
--- a/cpp/src/tests/ClientChannelTest.cpp
+++ b/cpp/src/tests/ClientChannelTest.cpp
@@ -26,6 +26,7 @@
#include "../client/ClientQueue.h"
#include "../client/ClientExchange.h"
#include "../client/MessageListener.h"
+#include "../client/BasicMessageChannel.h"
using namespace std;
using namespace boost;
@@ -38,19 +39,12 @@ const size_t FRAME_MAX = 256;
/**
- * Test client API using an in-process broker.
+ * Test base for client API using an in-process broker.
+ * The test base defines the tests methods, derived classes
+ * instantiate the channel in Basic or Message mode.
*/
-class ClientChannelTest : public CppUnit::TestCase
+class ClientChannelTestBase : public CppUnit::TestCase
{
- CPPUNIT_TEST_SUITE(ClientChannelTest);
- CPPUNIT_TEST(testPublishGet);
- CPPUNIT_TEST(testGetNoContent);
- CPPUNIT_TEST(testConsumeCancel);
- CPPUNIT_TEST(testConsumePublished);
- CPPUNIT_TEST(testGetFragmentedMessage);
- CPPUNIT_TEST(testConsumeFragmentedMessage);
- CPPUNIT_TEST_SUITE_END();
-
struct Listener: public qpid::client::MessageListener {
vector<Message> messages;
Monitor monitor;
@@ -62,43 +56,48 @@ class ClientChannelTest : public CppUnit::TestCase
};
InProcessBrokerClient connection; // client::connection + local broker
- Channel channel;
const std::string qname;
const std::string data;
Queue queue;
Exchange exchange;
Listener listener;
+ protected:
+ boost::scoped_ptr<Channel> channel;
+
public:
- ClientChannelTest()
+ ClientChannelTestBase()
: connection(FRAME_MAX),
qname("testq"), data("hello"),
queue(qname, true), exchange("", Exchange::DIRECT_EXCHANGE)
- {
- connection.openChannel(channel);
- CPPUNIT_ASSERT(channel.getId() != 0);
- channel.declareQueue(queue);
+ {}
+
+ void setUp() {
+ CPPUNIT_ASSERT(channel);
+ connection.openChannel(*channel);
+ CPPUNIT_ASSERT(channel->getId() != 0);
+ channel->declareQueue(queue);
}
void testPublishGet() {
Message pubMsg(data);
pubMsg.getHeaders().setString("hello", "world");
- channel.publish(pubMsg, exchange, qname);
+ channel->publish(pubMsg, exchange, qname);
Message getMsg;
- CPPUNIT_ASSERT(channel.get(getMsg, queue));
+ CPPUNIT_ASSERT(channel->get(getMsg, queue));
CPPUNIT_ASSERT_EQUAL(data, getMsg.getData());
CPPUNIT_ASSERT_EQUAL(string("world"),
getMsg.getHeaders().getString("hello"));
- CPPUNIT_ASSERT(!channel.get(getMsg, queue)); // Empty queue
+ CPPUNIT_ASSERT(!channel->get(getMsg, queue)); // Empty queue
}
void testGetNoContent() {
Message pubMsg;
pubMsg.getHeaders().setString("hello", "world");
- channel.publish(pubMsg, exchange, qname);
+ channel->publish(pubMsg, exchange, qname);
Message getMsg;
- CPPUNIT_ASSERT(channel.get(getMsg, queue));
+ CPPUNIT_ASSERT(channel->get(getMsg, queue));
CPPUNIT_ASSERT(getMsg.getData().empty());
CPPUNIT_ASSERT_EQUAL(string("world"),
getMsg.getHeaders().getString("hello"));
@@ -106,10 +105,10 @@ class ClientChannelTest : public CppUnit::TestCase
void testConsumeCancel() {
string tag; // Broker assigned
- channel.consume(queue, tag, &listener);
- channel.start();
+ channel->consume(queue, tag, &listener);
+ channel->start();
CPPUNIT_ASSERT_EQUAL(size_t(0), listener.messages.size());
- channel.publish(Message("a"), exchange, qname);
+ channel->publish(Message("a"), exchange, qname);
{
Mutex::ScopedLock l(listener.monitor);
Time deadline(now() + 1*TIME_SEC);
@@ -120,8 +119,8 @@ class ClientChannelTest : public CppUnit::TestCase
CPPUNIT_ASSERT_EQUAL(size_t(1), listener.messages.size());
CPPUNIT_ASSERT_EQUAL(string("a"), listener.messages[0].getData());
- channel.publish(Message("b"), exchange, qname);
- channel.publish(Message("c"), exchange, qname);
+ channel->publish(Message("b"), exchange, qname);
+ channel->publish(Message("c"), exchange, qname);
{
Mutex::ScopedLock l(listener.monitor);
while (listener.messages.size() != 3) {
@@ -132,15 +131,15 @@ class ClientChannelTest : public CppUnit::TestCase
CPPUNIT_ASSERT_EQUAL(string("b"), listener.messages[1].getData());
CPPUNIT_ASSERT_EQUAL(string("c"), listener.messages[2].getData());
- channel.cancel(tag);
- channel.publish(Message("d"), exchange, qname);
+ channel->cancel(tag);
+ channel->publish(Message("d"), exchange, qname);
CPPUNIT_ASSERT_EQUAL(size_t(3), listener.messages.size());
{
Mutex::ScopedLock l(listener.monitor);
CPPUNIT_ASSERT(!listener.monitor.wait(TIME_SEC/2));
}
Message msg;
- CPPUNIT_ASSERT(channel.get(msg, queue));
+ CPPUNIT_ASSERT(channel->get(msg, queue));
CPPUNIT_ASSERT_EQUAL(string("d"), msg.getData());
}
@@ -148,11 +147,11 @@ class ClientChannelTest : public CppUnit::TestCase
void testConsumePublished() {
Message pubMsg("x");
pubMsg.getHeaders().setString("y", "z");
- channel.publish(pubMsg, exchange, qname);
+ channel->publish(pubMsg, exchange, qname);
string tag;
- channel.consume(queue, tag, &listener);
+ channel->consume(queue, tag, &listener);
CPPUNIT_ASSERT_EQUAL(size_t(0), listener.messages.size());
- channel.start();
+ channel->start();
{
Mutex::ScopedLock l(listener.monitor);
while (listener.messages.size() != 1)
@@ -165,19 +164,19 @@ class ClientChannelTest : public CppUnit::TestCase
void testGetFragmentedMessage() {
string longStr(FRAME_MAX*2, 'x'); // Longer than max frame size.
- channel.publish(Message(longStr), exchange, qname);
+ channel->publish(Message(longStr), exchange, qname);
Message getMsg;
- CPPUNIT_ASSERT(channel.get(getMsg, queue));
+ CPPUNIT_ASSERT(channel->get(getMsg, queue));
}
void testConsumeFragmentedMessage() {
string xx(FRAME_MAX*2, 'x');
- channel.publish(Message(xx), exchange, qname);
- channel.start();
+ channel->publish(Message(xx), exchange, qname);
+ channel->start();
string tag;
- channel.consume(queue, tag, &listener);
+ channel->consume(queue, tag, &listener);
string yy(FRAME_MAX*2, 'y');
- channel.publish(Message(yy), exchange, qname);
+ channel->publish(Message(yy), exchange, qname);
{
Mutex::ScopedLock l(listener.monitor);
while (listener.messages.size() != 2)
@@ -188,6 +187,23 @@ class ClientChannelTest : public CppUnit::TestCase
}
};
+class BasicClientChannelTest : public ClientChannelTestBase {
+ CPPUNIT_TEST_SUITE(BasicClientChannelTest);
+ CPPUNIT_TEST(testPublishGet);
+ CPPUNIT_TEST(testGetNoContent);
+ CPPUNIT_TEST(testConsumeCancel);
+ CPPUNIT_TEST(testConsumePublished);
+ CPPUNIT_TEST(testGetFragmentedMessage);
+ CPPUNIT_TEST(testConsumeFragmentedMessage);
+ CPPUNIT_TEST_SUITE_END();
+
+ public:
+ BasicClientChannelTest(){
+ channel.reset(new Channel(false, 500, Channel::AMQP_08));
+ }
+};
+
+
// Make this test suite a plugin.
CPPUNIT_PLUGIN_IMPLEMENT();
-CPPUNIT_TEST_SUITE_REGISTRATION(ClientChannelTest);
+CPPUNIT_TEST_SUITE_REGISTRATION(BasicClientChannelTest);