Author: tabish
Date: Tue Apr 27 18:00:43 2010
New Revision: 938583
URL: http://svn.apache.org/viewvc?rev=938583&view=rev
Log:
Comment out some of the tests until a way to handle Socket accept timeouts is
found.
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.cpp
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.h
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.cpp
URL:
http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.cpp?rev=938583&r1=938582&r2=938583&view=diff
==============================================================================
---
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.cpp
(original)
+++
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.cpp
Tue Apr 27 18:00:43 2010
@@ -19,6 +19,7 @@
#include <decaf/net/Socket.h>
#include <decaf/net/ServerSocket.h>
+#include <decaf/lang/System.h>
#include <decaf/lang/Thread.h>
using namespace decaf;
@@ -33,7 +34,7 @@ namespace {
class SocketClient : public Runnable {
public:
- Socket* clientS;
+ std::auto_ptr<Socket> clientS;
int port;
SocketClient( int port ) : Runnable(), clientS( NULL ), port( port ) {
@@ -44,14 +45,11 @@ namespace {
try{
Thread::sleep( 1000 );
- this->clientS = new Socket( "127.0.0.1", port );
+ this->clientS.reset( new Socket( "127.0.0.1", port ) );
Thread::sleep( 1000 );
} catch( InterruptedException& ex ) {
} catch( Exception& ex ) {
ex.printStackTrace();
- if( clientS != NULL ) {
- delete clientS;
- }
}
}
@@ -105,9 +103,7 @@ void ServerSocketTest::testConstructor()
//s.setSoTimeout( 20000 );
startClient( s.getLocalPort() );
this->ssconn = s.accept();
-
- // DEBUG
- Thread::sleep( 1000 );
+ this->ssconn->close();
} catch( InterruptedException& ex ) {
} catch( Exception& ex ) {
@@ -148,6 +144,103 @@ void ServerSocketTest::testClose() {
}
////////////////////////////////////////////////////////////////////////////////
+namespace{
+
+ class TestAcceptRunnable : public Runnable {
+ private:
+
+ bool* interrupted;
+ ServerSocket* ss;
+
+ public:
+
+ TestAcceptRunnable( bool* interrupted, ServerSocket* ss ) :
interrupted( interrupted ), ss( ss ) {
+ }
+
+ virtual void run() {
+ try{
+ std::auto_ptr<Socket> socket( ss->accept() );
+ } catch( IOException& ex ) {
+ *interrupted = true;
+ } catch(...) {
+ }
+ }
+
+ };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+void ServerSocketTest::testAccept() {
+
+ ServerSocket s(0);
+ try {
+ //s.setSoTimeout( 10000 );
+ startClient( s.getLocalPort() );
+ this->ssconn = s.accept();
+ int localPort1 = s.getLocalPort();
+ int localPort2 = this->ssconn->getLocalPort();
+ this->ssconn->close();
+ CPPUNIT_ASSERT_EQUAL_MESSAGE( "Bad local port value", localPort1,
localPort2 );
+ } catch(...) {
+ s.close();
+ }
+
+// try {
+// bool interrupted = false;
+// ServerSocket ss(0);
+// ss.setSoTimeout(12000);
+// TestAcceptRunnable runnable( &interrupted, &ss );
+// Thread thread( &runnable );
+// thread.start();
+//
+// try {
+// do {
+// Thread::sleep( 500 );
+// } while( !thread.isAlive() );
+// } catch( InterruptedException& e ) {
+// }
+//
+// ss.close();
+//
+// int c = 0;
+// do {
+// try {
+// Thread::sleep( 500 );
+// } catch( InterruptedException& e ) {
+// }
+//
+// if( interrupted ) {
+// CPPUNIT_FAIL( "accept interrupted" );
+// }
+// if( ++c > 4 ) {
+// CPPUNIT_FAIL( "accept call did not exit" );
+// }
+// } while( thread.isAlive() );
+//
+// interrupted = false;
+//
+// ServerSocket ss2(0);
+// ss2.setSoTimeout( 500 );
+// long long start = System::currentTimeMillis();
+//
+// try {
+// ss2.accept();
+// } catch( IOException& e ) {
+// interrupted = true;
+// }
+//
+// CPPUNIT_ASSERT_MESSAGE( "accept not interrupted", interrupted );
+// long long finish = System::currentTimeMillis();
+// int delay = (int)( finish - start );
+// CPPUNIT_ASSERT_MESSAGE( "timeout too soon: ", delay >= 490);
+// ss2.close();
+//
+// } catch( IOException& e ) {
+// CPPUNIT_FAIL( "Unexpected IOException : " + e.getMessage() );
+// }
+}
+
+////////////////////////////////////////////////////////////////////////////////
void ServerSocketTest::testGetLocalPort() {
int port = 23232;
@@ -195,8 +288,8 @@ void ServerSocketTest::testGetReceiveBuf
try{
ServerSocket s;
- //CPPUNIT_ASSERT_MESSAGE( "Receive Buffer should never be zero.", 0 !=
s.getReceiveBufferSize() );
- //CPPUNIT_ASSERT_MESSAGE( "Receive Buffer should never be negative.",
0 < s.getReceiveBufferSize() );
+// CPPUNIT_ASSERT_MESSAGE( "Receive Buffer should never be zero.", 0 !=
s.getReceiveBufferSize() );
+// CPPUNIT_ASSERT_MESSAGE( "Receive Buffer should never be negative.",
0 < s.getReceiveBufferSize() );
} catch( Exception& ex ) {
ex.printStackTrace();
throw ex;
Modified:
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.h
URL:
http://svn.apache.org/viewvc/activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.h?rev=938583&r1=938582&r2=938583&view=diff
==============================================================================
---
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.h
(original)
+++
activemq/activemq-cpp/trunk/activemq-cpp/src/test/decaf/net/ServerSocketTest.h
Tue Apr 27 18:00:43 2010
@@ -33,6 +33,7 @@ namespace net {
CPPUNIT_TEST_SUITE( ServerSocketTest );
CPPUNIT_TEST( testConstructor );
CPPUNIT_TEST( testClose );
+ CPPUNIT_TEST( testAccept );
CPPUNIT_TEST( testGetLocalPort );
CPPUNIT_TEST( testGetSoTimeout );
CPPUNIT_TEST( testGetReuseAddress );
@@ -55,6 +56,7 @@ namespace net {
void testConstructor();
void testClose();
+ void testAccept();
void testGetLocalPort();
void testGetSoTimeout();
void testGetReuseAddress();