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}