diff -r 000000000000 -r dfb7c4ff071f datacommsserver/esockserver/test/TE_Socket/SocketTestSection20.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/datacommsserver/esockserver/test/TE_Socket/SocketTestSection20.cpp Thu Dec 17 09:22:25 2009 +0200 @@ -0,0 +1,422 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// This contains ESock Test cases from section 20 +// +// + + + +#include +#include "SocketTestSection20.h" +#include "ES_DUMMY.H" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +enum options + { + KOOM = 0, + KEndOOM = 1, + }; + +enum level + { + KHigh = 0, + KLow = 1, + }; + +const TInt KDesBufSize = 50; + + +// Test step 20.1 +const TDesC& CSocketTest20_1::GetTestName() + { + _LIT(ret,"Test20.1"); + return ret; + } + +enum TVerdict CSocketTest20_1::InternalDoTestStepL( void ) + { + // Create socket, connect and then shutdown using + TVerdict verdict = EFail; + Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Shutdown.... KSIConnectData Protocol")); + + // Connect to esock + Logger().WriteFormat(_L("Attempting to connect to socket server")); + RSocketServ ss; + TInt ret = ss.Connect(); + Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(ss); + + // Create and open socket on TCP protocol + RSocket socket1; + Logger().WriteFormat(_L("Opening Socket 1")); + ret = socket1.Open(ss, KAfInet, KSockStream, KProtocolInetTcp); + TESTL(KErrNone == ret); + Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret)); + CleanupClosePushL(socket1); + + // Create Ports for Socket and socket to connect to + const TInt KSocket2Port = 3881; + _LIT(KLoopback, "127.0.0.1"); + _LIT(KLocal, "0.0.0.0"); + + // Set the local address of Socket1 + TInetAddr socket1Addr; + socket1Addr.SetPort(KSocket2Port); + socket1Addr.Input(KLocal); + ret = socket1.Bind(socket1Addr); + + // Set remote address for socket + TInetAddr socket2Addr; + socket2Addr.SetPort(KSocket2Port); + socket2Addr.Input(KLoopback); + + // Connect socket1 to remote address + TRequestStatus connectSocket1Status; + Logger().WriteFormat(_L("Connecting Socket1 ")); + socket1.Connect(socket2Addr, connectSocket1Status); + User::WaitForRequest(connectSocket1Status); + Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int())); + TESTL(connectSocket1Status == KErrNone); + + // Shutdown the Socket + Logger().WriteFormat(_L("Shutting down Connection on Socket1")); + TRequestStatus shutdownStatus; + _LIT8(desOut, "Some test stuff to send to protocol"); + TBuf8 desIn; + socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus); + User::WaitForRequest(shutdownStatus); + Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int())); + if(shutdownStatus == KErrNone) + { + verdict = EPass; + } + + // Clean up the Server side objects + CleanupStack::PopAndDestroy(&socket1); + CleanupStack::PopAndDestroy(&ss); + SetTestStepResult(verdict); + return verdict; + } + + +// Test step 20.2 +const TDesC& CSocketTest20_2::GetTestName() + { + _LIT(ret,"Test20.2"); + return ret; + } + +enum TVerdict CSocketTest20_2::InternalDoTestStepL( void ) + { + // Create socket, connect and then shutdown using + TVerdict verdict = EFail; + Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Shutdown... KSIConnectionless Protocol")); + + // Connect to esock + Logger().WriteFormat(_L("Attempting to connect to socket server")); + RSocketServ ss; + TInt ret = ss.Connect(); + Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(ss); + + + // Create and open socket on TCP protocol + RSocket socket1; + Logger().WriteFormat(_L("Opening Socket 1")); + ret = socket1.Open(ss, KAfInet, KSockDatagram, KProtocolInetUdp); + Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(socket1); + + // Create Ports for Socket and socket to connect to + const TInt KSocket2Port = 3881; + _LIT(KLoopback, "127.0.0.1"); + _LIT(KLocal, "0.0.0.0"); + + // Set the local address of Socket1 + TInetAddr socket1Addr; + socket1Addr.SetPort(KSocket2Port); + socket1Addr.Input(KLocal); + ret = socket1.Bind(socket1Addr); + + // Set remote address for socket + TInetAddr socket2Addr; + socket2Addr.SetPort(KSocket2Port); + socket2Addr.Input(KLoopback); + + // Connect socket1 to remote address + TRequestStatus connectSocket1Status; + Logger().WriteFormat(_L("Connecting Socket1 ")); + socket1.Connect(socket2Addr, connectSocket1Status); + User::WaitForRequest(connectSocket1Status); + Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int())); + TESTL(connectSocket1Status == KErrNone); + + // Shutdown the Socket + Logger().WriteFormat(_L("Shutting down Connection on Socket1")); + TRequestStatus shutdownStatus; + _LIT8(desOut, "Some test data to send to protocol"); + TBuf8 desIn; + socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus); + User::WaitForRequest(shutdownStatus); + Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int())); + if(shutdownStatus == KErrNone) + { + verdict = EPass; + } + + + // Clean up the Server side objects + CleanupStack::PopAndDestroy(&socket1); + CleanupStack::PopAndDestroy(&ss); + SetTestStepResult(verdict); + return verdict; + } + + +// Test step 20.3 +const TDesC& CSocketTest20_3::GetTestName() + { + _LIT(ret,"Test20.3"); + return ret; + } + +enum TVerdict CSocketTest20_3::InternalDoTestStepL( void ) + { + // Create socket, shutdown socket then connect + TVerdict verdict = EFail; + Logger().WriteFormat(_L("Test Purpose: Shutdown Socket, then attempt to connect")); + + // Connect to esock + Logger().WriteFormat(_L("Attempting to connect to socket server")); + RSocketServ ss; + TInt ret = ss.Connect(); + Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(ss); + + + // Create and open socket on TCP protocol + RSocket socket1; + Logger().WriteFormat(_L("Opening Socket 1")); + ret = socket1.Open(ss, KAfInet, KSockStream, KProtocolInetTcp); + Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(socket1); + + // Create Ports for Socket and socket to connect to + const TInt KSocket2Port = 3881; + _LIT(KLoopback, "127.0.0.1"); + _LIT(KLocal, "0.0.0.0"); + + // Set the local address of Socket1 + TInetAddr socket1Addr; + socket1Addr.SetPort(KSocket2Port); + socket1Addr.Input(KLocal); + ret = socket1.Bind(socket1Addr); + + // Set remote address for socket + TInetAddr socket2Addr; + socket2Addr.SetPort(KSocket2Port); + socket2Addr.Input(KLoopback); + + + // Shutdown the Socket + Logger().WriteFormat(_L("Shutting down Connection on Socket1")); + TRequestStatus shutdownStatus; + _LIT8(desOut, "Some test stuff to send to protocol"); + TBuf8 desIn; + socket1.Shutdown(RSocket::EImmediate,desOut,desIn, shutdownStatus); + User::WaitForRequest(shutdownStatus); + Logger().WriteFormat(_L("Socket 1 shutdown returned %S"), &EpocErrorToText(shutdownStatus.Int())); + + // Connect socket1 to remote address + TRequestStatus connectSocket1Status; + Logger().WriteFormat(_L("Connecting Socket1 ")); + socket1.Connect(socket2Addr, connectSocket1Status); + User::WaitForRequest(connectSocket1Status); + Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int())); + if(connectSocket1Status == KErrBadHandle) + { + verdict = EPass; + } + + // Clean up the Server side objects + CleanupStack::PopAndDestroy(&socket1); + CleanupStack::PopAndDestroy(&ss); + SetTestStepResult(verdict); + return verdict; + } + + + +// Test step 20.4 +const TDesC& CSocketTest20_4::GetTestName() + { + _LIT(ret,"Test20.4"); + return ret; + } + +enum TVerdict CSocketTest20_4::InternalDoTestStepL( void ) + { + // Create socket, connect and then shutdown using + TVerdict verdict = EFail; + Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Get DisconnectData.... KSIConnectionless Protocol")); + + // Connect to esock + Logger().WriteFormat(_L("Attempting to connect to socket server")); + RSocketServ ss; + TInt ret = ss.Connect(); + Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(ss); + + // Create and open socket on UDP protocol + RSocket socket1; + Logger().WriteFormat(_L("Opening Socket 1")); + ret = socket1.Open(ss, KAfInet, KSockDatagram, KProtocolInetUdp); + Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(socket1); + + // Create Ports for Socket and socket to connect to + const TInt KSocket2Port = 3881; + _LIT(KLoopback, "127.0.0.1"); + _LIT(KLocal, "0.0.0.0"); + + // Set the local address of Socket1 + TInetAddr socket1Addr; + socket1Addr.SetPort(KSocket2Port); + socket1Addr.Input(KLocal); + ret = socket1.Bind(socket1Addr); + + // Set remote address for socket + TInetAddr socket2Addr; + socket2Addr.SetPort(KSocket2Port); + socket2Addr.Input(KLoopback); + + // Connect socket1 to remote address + TRequestStatus connectSocket1Status; + Logger().WriteFormat(_L("Connecting Socket1 ")); + socket1.Connect(socket2Addr, connectSocket1Status); + User::WaitForRequest(connectSocket1Status); + Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int())); + TESTL(KErrNone == connectSocket1Status.Int()); + + TBuf8 desIn; + ret = socket1.GetDisconnectData(desIn); + if(ret == KErrNotSupported) + { + verdict = EPass; + } + + // Clean up the Server side objects + CleanupStack::PopAndDestroy(&socket1); + CleanupStack::PopAndDestroy(&ss); + SetTestStepResult(verdict); + return verdict; + } + + +// Test step 20.5 +const TDesC& CSocketTest20_5::GetTestName() + { + _LIT(ret,"Test20.5"); + return ret; + } + +enum TVerdict CSocketTest20_5::InternalDoTestStepL( void ) + { + // Create socket, connect, disconnect and then GetDisconnectData + TVerdict verdict = EFail; + Logger().WriteFormat(_L("Test Purpose: Connect Socket, then Get DisconnectData.... KSIConnectData Protocol")); + + // Connect to esock + Logger().WriteFormat(_L("Attempting to connect to socket server")); + RSocketServ ss; + TInt ret = ss.Connect(); + Logger().WriteFormat(_L("Connect returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(ss); + + // Create and open socket on Dummy protocol + RSocket socket1; + Logger().WriteFormat(_L("Opening Socket 1")); + ret = socket1.Open(ss, KDummyAddrFamily, KSockSeqPacket, KDummyThree); + Logger().WriteFormat(_L("Socket 1 Open returned %S"), &EpocErrorToText(ret)); + TESTL(KErrNone == ret); + CleanupClosePushL(socket1); + + // Create Ports for Socket and socket to connect to + const TInt KSocket2Port = 3881; + _LIT(KLoopback, "127.0.0.1"); + _LIT(KLocal, "0.0.0.0"); + + // Set the local address of Socket1 + TInetAddr socket1Addr; + socket1Addr.SetPort(KSocket2Port); + socket1Addr.Input(KLocal); + ret = socket1.Bind(socket1Addr); + + // Set remote address for socket + TInetAddr socket2Addr; + socket2Addr.SetPort(KSocket2Port); + socket2Addr.Input(KLoopback); + + // Connect socket1 to remote address + TRequestStatus connectSocket1Status; + Logger().WriteFormat(_L("Connecting Socket1 ")); + socket1.Connect(socket2Addr, connectSocket1Status); + User::WaitForRequest(connectSocket1Status); + Logger().WriteFormat(_L("Socket 1 connect returned %S"), &EpocErrorToText(connectSocket1Status.Int())); + if(connectSocket1Status != KErrNone) + { + return EFail; + } + + // Get disconnect data + TBuf8 desIn; + ret = socket1.GetDisconnectData(desIn); + if(ret == KErrNotFound) + { + verdict = EPass; + } + + // Clean up the Server side objects + CleanupStack::PopAndDestroy(&socket1); + CleanupStack::PopAndDestroy(&ss); + SetTestStepResult(verdict); + return verdict; + } + + + + + + + + + + +