osl_ConnectorSocket.cxx (86e1cf34) | osl_ConnectorSocket.cxx (63d99982) |
---|---|
1/************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance --- 40 unchanged lines hidden (view full) --- 49 4. following functions are declared but not implemented: 50 inline sal_Bool SAL_CALL operator== (const SocketAddr & Addr) const; 51 */ 52 53//------------------------------------------------------------------------ 54// include files 55//------------------------------------------------------------------------ 56 | 1/************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance --- 40 unchanged lines hidden (view full) --- 49 4. following functions are declared but not implemented: 50 inline sal_Bool SAL_CALL operator== (const SocketAddr & Addr) const; 51 */ 52 53//------------------------------------------------------------------------ 54// include files 55//------------------------------------------------------------------------ 56 |
57#include <testshl/simpleheader.hxx> | 57#include "gtest/gtest.h" |
58 59#include "osl_Socket_Const.h" 60#include "sockethelper.hxx" 61 62using namespace osl; 63using namespace rtl; 64 65#define IP_PORT_MYPORT2 8883 --- 18 unchanged lines hidden (view full) --- 84 : m_sSocket( sSocket ) 85 { 86 } 87 88 ~CloseSocketThread( ) 89 { 90 if ( isRunning( ) ) 91 { | 58 59#include "osl_Socket_Const.h" 60#include "sockethelper.hxx" 61 62using namespace osl; 63using namespace rtl; 64 65#define IP_PORT_MYPORT2 8883 --- 18 unchanged lines hidden (view full) --- 84 : m_sSocket( sSocket ) 85 { 86 } 87 88 ~CloseSocketThread( ) 89 { 90 if ( isRunning( ) ) 91 { |
92 t_print("# error: CloseSocketThread not terminated.\n" ); | 92 printf("# error: CloseSocketThread not terminated.\n" ); |
93 } 94 } 95}; 96 97namespace osl_ConnectorSocket 98{ 99 100 /** testing the method: 101 ConnectorSocket(oslAddrFamily Family = osl_Socket_FamilyInet, 102 oslProtocol Protocol = osl_Socket_ProtocolIp, 103 oslSocketType Type = osl_Socket_TypeStream); 104 */ 105 | 93 } 94 } 95}; 96 97namespace osl_ConnectorSocket 98{ 99 100 /** testing the method: 101 ConnectorSocket(oslAddrFamily Family = osl_Socket_FamilyInet, 102 oslProtocol Protocol = osl_Socket_ProtocolIp, 103 oslSocketType Type = osl_Socket_TypeStream); 104 */ 105 |
106 class ctors : public CppUnit::TestFixture | 106 class ctors : public ::testing::Test |
107 { 108 public: | 107 { 108 public: |
109 void ctors_001() 110 { 111 /// Socket constructor. 112 ::osl::ConnectorSocket csSocket( osl_Socket_FamilyInet, osl_Socket_ProtocolIp, osl_Socket_TypeStream ); | 109 }; // class ctors |
113 | 110 |
114 CPPUNIT_ASSERT_MESSAGE( "test for ctors_001 constructor function: check if the connector socket was created successfully.", 115 osl_Socket_TypeStream == csSocket.getType( ) ); 116 } | 111 TEST_F(ctors, ctors_001) 112 { 113 /// Socket constructor. 114 ::osl::ConnectorSocket csSocket( osl_Socket_FamilyInet, osl_Socket_ProtocolIp, osl_Socket_TypeStream ); |
117 | 115 |
118 CPPUNIT_TEST_SUITE( ctors ); 119 CPPUNIT_TEST( ctors_001 ); 120 CPPUNIT_TEST_SUITE_END(); | 116 ASSERT_TRUE( osl_Socket_TypeStream == csSocket.getType( ) ) 117 << "test for ctors_001 constructor function: check if the connector socket was created successfully."; 118 } |
121 | 119 |
122 }; // class ctors 123 | |
124 /** testing the method: 125 oslSocketResult SAL_CALL connect(const SocketAddr& TargetHost, const TimeValue* pTimeout = 0); 126 */ 127 | 120 /** testing the method: 121 oslSocketResult SAL_CALL connect(const SocketAddr& TargetHost, const TimeValue* pTimeout = 0); 122 */ 123 |
128 class connect : public CppUnit::TestFixture | 124 class connect : public ::testing::Test |
129 { 130 public: 131 TimeValue *pTimeout; 132 ::osl::AcceptorSocket asAcceptorSocket; 133 ::osl::ConnectorSocket csConnectorSocket; 134 135 136 // initialization | 125 { 126 public: 127 TimeValue *pTimeout; 128 ::osl::AcceptorSocket asAcceptorSocket; 129 ::osl::ConnectorSocket csConnectorSocket; 130 131 132 // initialization |
137 void setUp( ) | 133 void SetUp( ) |
138 { 139 pTimeout = ( TimeValue* )malloc( sizeof( TimeValue ) ); 140 pTimeout->Seconds = 3; 141 pTimeout->Nanosec = 0; 142 // sHandle = osl_createSocket( osl_Socket_FamilyInet, osl_Socket_TypeStream, osl_Socket_ProtocolIp ); 143 } 144 | 134 { 135 pTimeout = ( TimeValue* )malloc( sizeof( TimeValue ) ); 136 pTimeout->Seconds = 3; 137 pTimeout->Nanosec = 0; 138 // sHandle = osl_createSocket( osl_Socket_FamilyInet, osl_Socket_TypeStream, osl_Socket_ProtocolIp ); 139 } 140 |
145 void tearDown( ) | 141 void TearDown( ) |
146 { 147 free( pTimeout ); 148 // sHandle = NULL; 149 asAcceptorSocket.close( ); 150 csConnectorSocket.close( ); 151 } | 142 { 143 free( pTimeout ); 144 // sHandle = NULL; 145 asAcceptorSocket.close( ); 146 csConnectorSocket.close( ); 147 } |
148 }; // class connect |
|
152 | 149 |
150 TEST_F(connect, connect_001) 151 { 152 ::osl::SocketAddr saLocalSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT2 ); 153 ::osl::SocketAddr saTargetSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT2 ); 154 ::osl::SocketAddr saPeerSocketAddr( rtl::OUString::createFromAscii("129.158.217.202"), IP_PORT_FTP ); 155 ::osl::StreamSocket ssConnection; |
|
153 | 156 |
154 void connect_001() 155 { 156 ::osl::SocketAddr saLocalSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT2 ); 157 ::osl::SocketAddr saTargetSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT2 ); 158 ::osl::SocketAddr saPeerSocketAddr( rtl::OUString::createFromAscii("129.158.217.202"), IP_PORT_FTP ); 159 ::osl::StreamSocket ssConnection; | 157 /// launch server socket 158 asAcceptorSocket.setOption( osl_Socket_OptionReuseAddr, 1 ); //sal_True); 159 sal_Bool bOK1 = asAcceptorSocket.bind( saLocalSocketAddr ); 160 ASSERT_TRUE(sal_True == bOK1) << "AcceptorSocket bind address failed."; 161 sal_Bool bOK2 = asAcceptorSocket.listen( 1 ); 162 ASSERT_TRUE(sal_True == bOK2) << "AcceptorSocket listen failed."; |
160 | 163 |
161 /// launch server socket 162 asAcceptorSocket.setOption( osl_Socket_OptionReuseAddr, 1 ); //sal_True); 163 sal_Bool bOK1 = asAcceptorSocket.bind( saLocalSocketAddr ); 164 CPPUNIT_ASSERT_MESSAGE( "AcceptorSocket bind address failed.", sal_True == bOK1 ); 165 sal_Bool bOK2 = asAcceptorSocket.listen( 1 ); 166 CPPUNIT_ASSERT_MESSAGE( "AcceptorSocket listen failed.", sal_True == bOK2 ); | 164 //asAcceptorSocket.enableNonBlockingMode( sal_True ); 165 //oslSocketResult eResultAccept = asAcceptorSocket.acceptConnection(ssConnection); /// waiting for incoming connection... 166 //ASSERT_TRUE(osl_Socket_Ok == eResultAccept) << "accept failed."; 167 /// launch client socket 168 oslSocketResult eResult = csConnectorSocket.connect( saTargetSocketAddr, pTimeout ); /// connecting to server... 169 ASSERT_TRUE(osl_Socket_Ok == eResult) << "connect failed."; |
167 | 170 |
168 //asAcceptorSocket.enableNonBlockingMode( sal_True ); 169 //oslSocketResult eResultAccept = asAcceptorSocket.acceptConnection(ssConnection); /// waiting for incoming connection... 170 //CPPUNIT_ASSERT_MESSAGE( "accept failed.", osl_Socket_Ok == eResultAccept ); 171 /// launch client socket 172 oslSocketResult eResult = csConnectorSocket.connect( saTargetSocketAddr, pTimeout ); /// connecting to server... 173 CPPUNIT_ASSERT_MESSAGE( "connect failed.", osl_Socket_Ok == eResult ); | 171 /// get peer information 172 csConnectorSocket.getPeerAddr( saPeerSocketAddr );/// connected. |
174 | 173 |
175 /// get peer information 176 csConnectorSocket.getPeerAddr( saPeerSocketAddr );/// connected. | 174 ASSERT_TRUE( 175 ( sal_True == compareSocketAddr( saPeerSocketAddr, saLocalSocketAddr ) ) && 176 ( osl_Socket_Ok == eResult )) 177 << "test for connect function: try to create a connection with remote host. and check the setup address."; 178 } 179 //non-blocking mode connect? 180 TEST_F(connect, connect_002) 181 { 182 ::osl::SocketAddr saLocalSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT3 ); 183 ::osl::SocketAddr saTargetSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT3 ); 184 ::osl::SocketAddr saPeerSocketAddr( rtl::OUString::createFromAscii("129.158.217.202"), IP_PORT_FTP ); |
177 | 185 |
178 CPPUNIT_ASSERT_MESSAGE( "test for connect function: try to create a connection with remote host. and check the setup address.", 179 ( sal_True == compareSocketAddr( saPeerSocketAddr, saLocalSocketAddr ) ) && 180 ( osl_Socket_Ok == eResult )); 181 } 182 //non-blocking mode connect? 183 void connect_002() 184 { 185 ::osl::SocketAddr saLocalSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT3 ); 186 ::osl::SocketAddr saTargetSocketAddr( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT3 ); 187 ::osl::SocketAddr saPeerSocketAddr( rtl::OUString::createFromAscii("129.158.217.202"), IP_PORT_FTP ); | 186 asAcceptorSocket.setOption( osl_Socket_OptionReuseAddr, 1 ); //sal_True); 187 asAcceptorSocket.enableNonBlockingMode( sal_True ); 188 sal_Bool bOK1 = asAcceptorSocket.bind( saLocalSocketAddr ); 189 ASSERT_TRUE(sal_True == bOK1) << "AcceptorSocket bind address failed."; 190 sal_Bool bOK2 = asAcceptorSocket.listen( 1 ); 191 ASSERT_TRUE(sal_True == bOK2) << "AcceptorSocket listen failed."; |
188 | 192 |
189 asAcceptorSocket.setOption( osl_Socket_OptionReuseAddr, 1 ); //sal_True); 190 asAcceptorSocket.enableNonBlockingMode( sal_True ); 191 sal_Bool bOK1 = asAcceptorSocket.bind( saLocalSocketAddr ); 192 CPPUNIT_ASSERT_MESSAGE( "AcceptorSocket bind address failed.", sal_True == bOK1 ); 193 sal_Bool bOK2 = asAcceptorSocket.listen( 1 ); 194 CPPUNIT_ASSERT_MESSAGE( "AcceptorSocket listen failed.", sal_True == bOK2 ); | 193 csConnectorSocket.enableNonBlockingMode( sal_True ); |
195 | 194 |
196 csConnectorSocket.enableNonBlockingMode( sal_True ); | 195 oslSocketResult eResult = csConnectorSocket.connect( saTargetSocketAddr, pTimeout ); /// connecting to server... 196 ASSERT_TRUE(osl_Socket_InProgress == eResult || osl_Socket_Ok == eResult) << "connect failed."; |
197 | 197 |
198 oslSocketResult eResult = csConnectorSocket.connect( saTargetSocketAddr, pTimeout ); /// connecting to server... 199 CPPUNIT_ASSERT_MESSAGE( "connect failed.", osl_Socket_InProgress == eResult || osl_Socket_Ok == eResult ); | 198 /// get peer information 199 csConnectorSocket.getPeerAddr( saPeerSocketAddr ); |
200 | 200 |
201 /// get peer information 202 csConnectorSocket.getPeerAddr( saPeerSocketAddr ); | 201 ASSERT_TRUE( sal_True == compareSocketAddr( saPeerSocketAddr, saLocalSocketAddr ) ) 202 << "test for connect function: try to create a connection with remote host. and check the setup address."; 203 } 204 // really an error or just delayed 205 // how to design scenarios that will return osl_Socket_Interrupted, osl_Socket_TimedOut 206 TEST_F(connect, connect_003) 207 { 208 ::osl::SocketAddr saTargetSocketAddr1( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT3 ); 209 ::osl::SocketAddr saTargetSocketAddr2( rtl::OUString::createFromAscii("123.345.67.89"), IP_PORT_MYPORT3 ); |
203 | 210 |
204 CPPUNIT_ASSERT_MESSAGE( "test for connect function: try to create a connection with remote host. and check the setup address.", 205 sal_True == compareSocketAddr( saPeerSocketAddr, saLocalSocketAddr ) ) ; 206 } 207 // really an error or just delayed 208 // how to design scenarios that will return osl_Socket_Interrupted, osl_Socket_TimedOut 209 void connect_003() 210 { 211 ::osl::SocketAddr saTargetSocketAddr1( rtl::OUString::createFromAscii("127.0.0.1"), IP_PORT_MYPORT3 ); 212 ::osl::SocketAddr saTargetSocketAddr2( rtl::OUString::createFromAscii("123.345.67.89"), IP_PORT_MYPORT3 ); | 211 csConnectorSocket.enableNonBlockingMode( sal_False ); |
213 | 212 |
214 csConnectorSocket.enableNonBlockingMode( sal_False ); | 213 oslSocketResult eResult1 = csConnectorSocket.connect( saTargetSocketAddr1, pTimeout ); 214 oslSocketResult eResult2 = csConnectorSocket.connect( saTargetSocketAddr2, pTimeout ); 215 CloseSocketThread myCloseThread( csConnectorSocket ); 216 oslSocketResult eResult3 = csConnectorSocket.connect( saTargetSocketAddr2, pTimeout ); 217 myCloseThread.join(); 218 ASSERT_TRUE(osl_Socket_Error == eResult1 && 219 osl_Socket_Error == eResult2 && osl_Socket_Error == eResult3) << "connect should failed."; |
215 | 220 |
216 oslSocketResult eResult1 = csConnectorSocket.connect( saTargetSocketAddr1, pTimeout ); 217 oslSocketResult eResult2 = csConnectorSocket.connect( saTargetSocketAddr2, pTimeout ); 218 CloseSocketThread myCloseThread( csConnectorSocket ); 219 oslSocketResult eResult3 = csConnectorSocket.connect( saTargetSocketAddr2, pTimeout ); 220 myCloseThread.join(); 221 CPPUNIT_ASSERT_MESSAGE( "connect should failed.", osl_Socket_Error == eResult1 && 222 osl_Socket_Error == eResult2 && osl_Socket_Error == eResult3 ); | 221 } |
223 | 222 |
224 } | 223 // really an error in non-blocking mode 224 TEST_F(connect, connect_004) 225 { 226 ::osl::SocketAddr saTargetSocketAddr( rtl::OUString::createFromAscii("123.345.67.89"), IP_PORT_MYPORT3 ); |
225 | 227 |
226 // really an error in non-blocking mode 227 void connect_004() 228 { 229 ::osl::SocketAddr saTargetSocketAddr( rtl::OUString::createFromAscii("123.345.67.89"), IP_PORT_MYPORT3 ); | 228 csConnectorSocket.enableNonBlockingMode( sal_True ); |
230 | 229 |
231 csConnectorSocket.enableNonBlockingMode( sal_True ); | 230 oslSocketResult eResult = csConnectorSocket.connect( saTargetSocketAddr, pTimeout ); /// connecting to server... 231 ASSERT_TRUE(osl_Socket_Error == eResult) << "connect should failed."; 232 } 233 /** here need a case: immediate connection, say in non-blocking mode connect return osl_Socket_Ok 234 */ |
232 | 235 |
233 oslSocketResult eResult = csConnectorSocket.connect( saTargetSocketAddr, pTimeout ); /// connecting to server... 234 CPPUNIT_ASSERT_MESSAGE( "connect should failed.", osl_Socket_Error == eResult ); 235 } 236 /** here need a case: immediate connection, say in non-blocking mode connect return osl_Socket_Ok 237 */ 238 239 CPPUNIT_TEST_SUITE( connect ); 240 CPPUNIT_TEST( connect_001 ); 241 CPPUNIT_TEST( connect_002 ); 242 CPPUNIT_TEST( connect_003 ); 243 CPPUNIT_TEST( connect_004 ); 244 CPPUNIT_TEST_SUITE_END(); 245 246 }; // class connect 247 248 249// ----------------------------------------------------------------------------- 250 251CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_ConnectorSocket::ctors, "osl_ConnectorSocket"); 252CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(osl_ConnectorSocket::connect, "osl_ConnectorSocket"); 253 | |
254} // namespace osl_ConnectorSocket 255 | 236} // namespace osl_ConnectorSocket 237 |
256// ----------------------------------------------------------------------------- 257 258// this macro creates an empty function, which will called by the RegisterAllFunctions() 259// to let the user the possibility to also register some functions by hand. 260NOADDITIONAL; | 238int main(int argc, char **argv) 239{ 240 ::testing::InitGoogleTest(&argc, argv); 241 return RUN_ALL_TESTS(); 242} |