datacommsserver/esockserver/test/TE_Socket/SocketTestSection20.cpp
changeset 0 dfb7c4ff071f
--- /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 <e32base.h>
+#include "SocketTestSection20.h"
+#include "ES_DUMMY.H"
+#include <es_sock.h>
+#include <es_mbuf.h>
+#include <es_prot.h>
+#include <e32test.h>
+#include <comms-infras/nifif.h>
+#include <es_mbuf.h>
+#include <ss_pman.h>
+#include <ss_glob.h>
+#include <agenterrors.h>
+
+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<KDesBufSize> 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<KDesBufSize> 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<KDesBufSize> 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<KDesBufSize> 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<KDesBufSize> 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;
+	}
+	
+	
+
+
+
+
+
+
+
+
+