summaryrefslogtreecommitdiff
path: root/qpid/cpp/tests/AcceptorTest.cpp
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2007-03-21 02:08:18 +0000
committerAlan Conway <aconway@apache.org>2007-03-21 02:08:18 +0000
commitd2eb3361494710466280341c98f76c03536d2ebe (patch)
treef16ec2eacd8383e388657e54a22fc0214a0ce023 /qpid/cpp/tests/AcceptorTest.cpp
parent732544fe86089ab86c03fcc48d5ca4c72667c275 (diff)
downloadqpid-python-d2eb3361494710466280341c98f76c03536d2ebe.tar.gz
Renamed cpp-0-9 to cpp
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@520706 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/tests/AcceptorTest.cpp')
-rw-r--r--qpid/cpp/tests/AcceptorTest.cpp95
1 files changed, 95 insertions, 0 deletions
diff --git a/qpid/cpp/tests/AcceptorTest.cpp b/qpid/cpp/tests/AcceptorTest.cpp
new file mode 100644
index 0000000000..34a51888d4
--- /dev/null
+++ b/qpid/cpp/tests/AcceptorTest.cpp
@@ -0,0 +1,95 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+#include <iostream>
+#include <boost/bind.hpp>
+
+#include "sys/Thread.h"
+#include "sys/Acceptor.h"
+#include "sys/Socket.h"
+#include "framing/Buffer.h"
+#include "qpid_test_plugin.h"
+
+#include "MockConnectionInputHandler.h"
+
+using namespace qpid::sys;
+using namespace qpid::framing;
+using namespace std;
+
+const char hello[] = "hello";
+const size_t size = sizeof(hello);
+
+
+class AcceptorTest : public CppUnit::TestCase, private Runnable
+{
+ CPPUNIT_TEST_SUITE(AcceptorTest);
+ CPPUNIT_TEST(testAccept);
+ CPPUNIT_TEST_SUITE_END();
+
+ private:
+ MockConnectionInputHandlerFactory factory;
+ Acceptor::shared_ptr acceptor;
+
+ public:
+
+ void run() {
+ acceptor->run(factory);
+ }
+
+ void setUp() {
+ acceptor = Acceptor::create(0, 10, 3);
+ }
+
+ void tearDown() {
+ acceptor.reset();
+ }
+
+ void testAccept()
+ {
+ int port = acceptor->getPort();
+ CPPUNIT_ASSERT(port > 0);
+ Thread runThread(*this);
+ // Connect to the acceptor
+ Socket client = Socket::createTcp();
+ client.connect("localhost", port);
+ factory.waitForHandler();
+ CPPUNIT_ASSERT(factory.handler != 0);
+ // Send a protocol initiation.
+ Buffer buf(1024);
+ ProtocolInitiation(4,2).encode(buf);
+ buf.flip();
+ client.send(buf.start(), buf.available());
+
+ // Verify session handler got the protocol init.
+ ProtocolInitiation init = factory.handler->waitForProtocolInit();
+ CPPUNIT_ASSERT_EQUAL(int(4), int(init.getMajor()));
+ CPPUNIT_ASSERT_EQUAL(int(2), int(init.getMinor()));
+
+ acceptor->shutdown();
+ runThread.join();
+ factory.handler->waitForClosed();
+ }
+};
+
+// Make this test suite a plugin.
+CPPUNIT_PLUGIN_IMPLEMENT();
+CPPUNIT_TEST_SUITE_REGISTRATION(AcceptorTest);
+