Add another variety of the QueueBrowser close test.
diff --git a/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.cpp b/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.cpp
index fe5cbca..5de5061 100644
--- a/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.cpp
+++ b/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.cpp
@@ -242,3 +242,37 @@
browser.reset(NULL);
}
}
+
+////////////////////////////////////////////////////////////////////////////////
+void QueueBrowserTest::testRepeatedQueueBrowserCreateDestroyWithMessageInQueue() {
+
+ ActiveMQConnection* connection = dynamic_cast<ActiveMQConnection*>(cmsProvider->getConnection());
+ CPPUNIT_ASSERT(connection != NULL);
+
+ std::auto_ptr<cms::Session> session(connection->createSession(cms::Session::AUTO_ACKNOWLEDGE));
+ std::auto_ptr<cms::Queue> queue(session->createTemporaryQueue());
+
+ std::auto_ptr<cms::MessageProducer> producer(session->createProducer(queue.get()));
+ std::auto_ptr<cms::TextMessage> textMessage(session->createTextMessage("Test"));
+
+ producer->setDeliveryMode(cms::DeliveryMode::NON_PERSISTENT);
+ for (int i = 0 ; i < 10; ++i) {
+ producer->send(textMessage.get());
+ }
+
+ connection->start();
+
+ std::auto_ptr<cms::QueueBrowser> browser(session->createBrowser(queue.get()));
+
+ for (int i = 0; i < 200; i++) {
+ browser.reset(session->createBrowser(queue.get()));
+ cms::MessageEnumeration* browserView = browser->getEnumeration();
+
+ if (browserView->hasMoreMessages()) {
+ std::auto_ptr<cms::Message> message(browserView->nextMessage());
+ CPPUNIT_ASSERT(message.get() != NULL);
+ }
+
+ browser.reset(NULL);
+ }
+}
diff --git a/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.h b/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.h
index c47568d..c8ed201 100644
--- a/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.h
+++ b/activemq-cpp/src/test-integration/activemq/test/QueueBrowserTest.h
@@ -34,6 +34,7 @@
void testBrowseReceive();
void testQueueBrowserWith2Consumers();
void testRepeatedQueueBrowserCreateDestroy();
+ void testRepeatedQueueBrowserCreateDestroyWithMessageInQueue();
};
diff --git a/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireQueueBrowserTest.h b/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireQueueBrowserTest.h
index 1b9f2ff..97d8779 100644
--- a/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireQueueBrowserTest.h
+++ b/activemq-cpp/src/test-integration/activemq/test/openwire/OpenwireQueueBrowserTest.h
@@ -32,6 +32,7 @@
CPPUNIT_TEST( testBrowseReceive );
CPPUNIT_TEST( testQueueBrowserWith2Consumers );
CPPUNIT_TEST( testRepeatedQueueBrowserCreateDestroy );
+ CPPUNIT_TEST( testRepeatedQueueBrowserCreateDestroyWithMessageInQueue );
CPPUNIT_TEST_SUITE_END();
public: