datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_RConnectionNaptTestSteps.cpp
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_RConnectionSuite/src/TE_RConnectionNaptTestSteps.cpp	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,2050 @@
+// Copyright (c) 2002-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:
+// Contains the implementation of the test cases that test Napt.
+// Creates a TCP conection to the NaptTestSerever.Send gateway address and 
+// test case name to NaptTestSerever. The test cases are executed from 
+// NaptTestSerever.The test case result is send back from the NaptTestSerever. 
+// 
+//
+
+/**
+ @file
+*/
+
+#include "TE_RConnectionNaptTestSteps.h"
+#include <nifman.h>
+
+TE_RConnectionTest950::~TE_RConnectionTest950(){}
+
+enum TVerdict TE_RConnectionTest950::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Send data over TCP socket to Echo Server running in Test Network"));
+    
+    const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+	
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+	
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+	
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+			
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+	
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT   
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+    
+    //Connect to NaptTestServer
+  	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+    TESTEL(KErrNone == err, err);
+                  
+	_LIT8(KTest,"test1\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	         
+    //Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+    TRequestStatus status;
+    sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+	
+	//send test case name to NaptTestServer
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+
+    TSockXfrLength length;
+ 	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+	
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+
+	delete sendEthAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest950
+
+
+TE_RConnectionTest951::~TE_RConnectionTest951(){}
+
+enum TVerdict TE_RConnectionTest951::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Send data over UDP Socket to Echo Server running in Test Network"));
+
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+	
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+            
+    TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+  	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+	
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+	
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	
+	//Connect to NaptTestServer
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+	
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+	
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT   
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+    
+    //Connect to NaptTestServer
+  	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+    TESTEL(KErrNone == err, err);
+
+	_LIT8(KTest,"test2\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	 
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+    TRequestStatus status;
+    sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+    
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+     err = status.Int();
+
+    TSockXfrLength length;
+ 	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+	
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+    		SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+    		INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+    		SetTestStepResult(EFail);
+			}
+		}
+	
+	delete sendEthAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+		
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest951
+TE_RConnectionTest952::~TE_RConnectionTest952(){}
+
+enum TVerdict TE_RConnectionTest952::doTestStepL(void)
+{
+    SetTestStepResult(EFail);
+    
+    INFO_PRINTF1(_L("Send data over UDP Socket to invalid port."));
+          
+    const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+        
+    TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+  	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+	
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+	
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+	
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+	
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT   
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+    
+    //Connect to NaptTestServer
+  	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+    TESTEL(KErrNone == err, err);
+                     
+	_LIT8(KTest,"test3\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	 
+    //Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+    TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+	
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+
+    TSockXfrLength length;
+ 	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+	
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+    		SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+    		INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+    		SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest952
+TE_RConnectionTest953::~TE_RConnectionTest953(){}
+
+enum TVerdict TE_RConnectionTest953::doTestStepL(void)
+{
+    SetTestStepResult(EFail);
+    
+    INFO_PRINTF1(_L(" Resolve host name from IP addr "));
+     
+    const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+        
+    TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+  	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+	
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+		
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":storeaddr\n"));
+	
+	//Load NAPT   
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+    
+    //Connect to NaptTestServer
+  	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+    TESTEL(KErrNone == err, err);  
+                       
+	_LIT8(KTest,"test4\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer. 
+    TRequestStatus status;
+    sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+	
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+
+    TSockXfrLength length;
+ 	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+	
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+    		SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+    		INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+    		SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest953
+TE_RConnectionTest954::~TE_RConnectionTest954()
+{
+}
+
+enum TVerdict TE_RConnectionTest954::doTestStepL(void)
+{
+ 	SetTestStepResult(EFail);
+ 	
+ 	INFO_PRINTF1(_L("Resolve IP addr from host name"));
+        
+    const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+	
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+        
+    TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+  	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+	
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+ 	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+		
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+	
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":storeaddr\n"));
+	
+	//Load NAPT	   
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+    
+    //Connect to NaptTestServer
+  	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+    TESTEL(KErrNone == err, err);
+                  
+	_LIT8(KTest,"test5\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	 
+	//Need to add route in NaptTestServer.send gateway IP address  to the NaptTestServer. 
+    TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+     err = status.Int();
+	
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+
+    TSockXfrLength length;
+ 	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+		
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+	
+	socketNapt.Close();
+	
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest954	
+TE_RConnectionTest955::~TE_RConnectionTest955()
+{
+}
+
+enum TVerdict TE_RConnectionTest955::doTestStepL(void)
+{
+    SetTestStepResult(EFail);
+    
+    INFO_PRINTF1(_L(" Ping echo server in Test Network"));
+         
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+        
+    TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+  	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+	
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+ 	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+			
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address	
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+	
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT	   
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	              
+	_LIT8(KTest,"test6\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	 
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	 err = status.Int();
+
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+			SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+			INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+			SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest955	
+TE_RConnectionTest956::~TE_RConnectionTest956()
+{
+}
+
+enum TVerdict TE_RConnectionTest956::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L(" Open many TCP Sockets and Send data to Echo Server over each socket"));
+	 
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+		
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+			
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT   
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	              
+	_LIT8(KTest,"test7\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	 
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	 err = status.Int();
+
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+		
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+	
+	socketNapt.Close();
+	
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest956	
+TE_RConnectionTest957::~TE_RConnectionTest957()
+{
+}
+
+enum TVerdict TE_RConnectionTest957::doTestStepL(void)
+{
+    SetTestStepResult(EFail);
+    
+	INFO_PRINTF1(_L("Send bulk data over TCP socket"));
+	 
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+   
+    TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT   
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	              
+	_LIT8(KTest,"test8\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	 err = status.Int();
+
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+		
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest958	
+TE_RConnectionTest958::~TE_RConnectionTest958()
+{
+}
+
+enum TVerdict TE_RConnectionTest958::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Open,Send and Close TCP Sockets in different order"));
+
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+    
+    //Load NAPT
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	          
+	_LIT8(KTest,"test9\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer.
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+		
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+	
+	socketNapt.Close();
+	
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+			
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest958	
+TE_RConnectionTest959::~TE_RConnectionTest959()
+{
+}
+
+enum TVerdict TE_RConnectionTest959::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("NAPT Timer Expires."));
+
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	     
+	_LIT8(KTest,"test10\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	//send test case name to NaptTestServer
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+		
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+	
+	socketNapt.Close();
+	
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+			
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest959	
+TE_RConnectionTest960::~TE_RConnectionTest960()
+{
+}
+
+enum TVerdict TE_RConnectionTest960::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Send data over gloabal socket and Napt socket "));
+	 
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT   
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	              
+	_LIT8(KTest,"test11\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+		 
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+  	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	 err = status.Int();
+
+	//send test case name to NaptTestServer
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	err = OpenTcpSocketExplicit(socketGloabal, socketServNapt, connNapt1);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketGloabal);
+	
+	err = ConnectTcpSocket(socketGloabal, iEchoServerAddr);
+	TESTEL(KErrNone == err, err);
+
+	err = TestTcpDataPathL(socketGloabal);
+	TESTEL(KErrNone == err, err);
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+		
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+		
+	err = DestroyTcpSocket(socketGloabal);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+	
+	delete sendEthAddress;
+	
+	socketNapt.Close();
+	
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+			
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest960	
+
+TE_RConnectionTest961::~TE_RConnectionTest961()
+{
+}
+
+enum TVerdict TE_RConnectionTest961::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Ping Global Interface"));
+
+    const int addressLength = 30;
+	const int resultLength 	= 2;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress,*sendIPCPAddress;
+	
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+	
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 ethVal = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(ethVal <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(ethVal);
+	ethAddress.Output(ethString);
+
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":storeaddr\n"));
+	
+	_LIT(KInterfaceName2,"ipcp::comm::0");	   
+	TInetAddr ipcpAddress;
+	TName ipcpString;
+	
+	//get ipcp interface address
+	TUint32	 ipcpVal = GetInterfaceAddress(sockTestServ,KInterfaceName2());
+
+	ipcpAddress.SetAddress(ipcpVal);
+	ipcpAddress.Output(ipcpString);
+
+	sendIPCPAddress = HBufC8::NewL(ipcpString.Length()+addressLength);
+	sendIPCPAddress->Des().Copy(ipcpString); 
+	sendIPCPAddress->Des().Append(_L8(":pingglobal\n"));
+	
+	//Load NAPT
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+    
+    //send concatenated string  to the NaptTestServer. 
+	sockTestServ.Send(*sendIPCPAddress, 0, status);
+	User::WaitForRequest(status);
+	 err = status.Int();
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	if(err == 0)
+	{
+	//pass = 1,fail = 0
+	if(result[0] == '1')
+		{
+		SetTestStepResult(EPass);
+		}
+	else if(result[0] == '0')
+		{
+		INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+		SetTestStepResult(EFail);
+		}
+	}
+	delete sendEthAddress;
+	delete sendIPCPAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest961
+
+TE_RConnectionTest962::~TE_RConnectionTest962()
+{
+}
+
+enum TVerdict TE_RConnectionTest962::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+    
+    INFO_PRINTF1(_L("ICMP Tests"));
+     
+    const int resultLength   = 2; 
+    const int addressLength  = 20;
+    const int testNameLength = 10;
+
+    RSocketServ socketServNapt;
+    RConnection connNapt,connNapt1;
+    RSocket sockTestServ,socketNapt,socketGloabal;
+    HBufC8* sendEthAddress;
+
+    TInt err;
+    err = OpenSocketServer(socketServNapt);
+    TESTEL(KErrNone == err, err);
+    CleanupClosePushL(socketServNapt);
+        
+    err = OpenConnection(connNapt, socketServNapt);
+    TESTEL(KErrNone == err, err);
+    CleanupClosePushL(connNapt);
+
+    err = OpenConnection(connNapt1, socketServNapt);
+    TESTEL(KErrNone == err, err);
+    CleanupClosePushL(connNapt1);
+
+    //start a connection on private interface
+    err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+    TESTEL(KErrNone == err, err);
+    connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+    //start a connection on public interface
+    err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+    TESTEL(KErrNone == err, err);
+    connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+
+    err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+    TESTEL(KErrNone == err, err);
+    CleanupClosePushL(sockTestServ);
+
+    _LIT(KInterfaceName1,"eth");
+    TInetAddr ethAddress;
+    TName ethString;
+    
+    //get eth interface address
+    TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+    if(testAddr1 <= KErrNone)
+        {
+        INFO_PRINTF1(_L("Failed to get eth address"));
+        return TestStepResult();
+        }
+
+    ethAddress.SetAddress(testAddr1);
+    ethAddress.Output(ethString);
+
+    sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+    sendEthAddress->Des().Copy(ethString); 
+    sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+    
+    //Load NAPT   
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+    
+    //Connect to NaptTestServer
+    err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+    TESTEL(KErrNone == err, err);
+    
+    TRequestStatus status;
+         
+    _LIT8(KTest,"test12\n");
+    TBufC8 <testNameLength> tst(KTest);
+    TPtrC8 testCaseName(tst);
+         
+    //Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+    sockTestServ.Send(*sendEthAddress, 0, status);
+    User::WaitForRequest(status);
+     err = status.Int();
+
+    //send test case name to NaptTestServer
+    sockTestServ.Send(testCaseName, 0, status);
+    User::WaitForRequest(status);
+    err = status.Int();
+
+    err = OpenTcpSocketExplicit(socketGloabal, socketServNapt, connNapt1);
+    TESTEL(KErrNone == err, err);
+    CleanupClosePushL(socketGloabal);
+    
+    err = ConnectTcpSocket(socketGloabal, iEchoServerAddr);
+    TESTEL(KErrNone == err, err);
+
+    TSockXfrLength length;
+    TBuf8<resultLength> result;
+    result.Zero();
+
+    //receive test result from NaptTestServer
+    sockTestServ.RecvOneOrMore(result, 0, status,length);
+    User::WaitForRequest(status);
+    err = status.Int();
+        
+    if(err == 0)
+        {
+        //pass = 1,fail = 0
+        if(result[0] == '1')
+            {
+            SetTestStepResult(EPass);
+            }
+        else if(result[0] == '0')
+            {
+            INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+            SetTestStepResult(EFail);
+            }
+        }
+        
+    err = DestroyTcpSocket(socketGloabal);
+    TESTEL(KErrNone == err, err);
+    CleanupStack::Pop();
+    
+    delete sendEthAddress;
+    
+    socketNapt.Close();
+    
+    err = DestroyTcpSocket(sockTestServ);
+    TESTEL(KErrNone == err, err);
+    CleanupStack::Pop();
+            
+    CloseConnection(connNapt);
+    CleanupStack::Pop();
+    
+    CloseConnection(connNapt);
+    CleanupStack::Pop();
+
+    CloseSocketServer(socketServNapt);
+    CleanupStack::Pop();
+
+    return TestStepResult();
+} // TE_RConnectionTest962
+
+
+TE_RConnectionTest966::~TE_RConnectionTest966()
+{
+}
+//Napt Cap Tests
+enum TVerdict TE_RConnectionTest966::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Napt Capability tests"));
+	
+	RSocketServ socketServ;
+	socketServ.Connect();
+	CleanupClosePushL(socketServ);
+
+	RSocket naptSocket;
+	TInt err = naptSocket.Open(socketServ ,_L("napt"));
+	CleanupClosePushL(naptSocket);
+	
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("Load NAPT failed with error: %d."),err);
+
+		}
+	if(RProcess().HasCapability(ECapabilityNetworkControl))
+		{
+		if(err == KErrPermissionDenied)
+			{
+			SetTestStepResult(EFail);
+			return TestStepResult();
+			}
+		}
+		
+	naptSocket.Close();
+	CleanupStack::Pop();
+	socketServ.Close();
+	CleanupStack::Pop();
+	SetTestStepResult(EPass);
+
+	return TestStepResult();
+} // TE_RConnectionTest966	
+
+	
+TE_RConnectionTest967::~TE_RConnectionTest967()
+{
+}
+//Napt socket open test Tests
+enum TVerdict TE_RConnectionTest967::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L("Reconfigure napt"));
+    
+    const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+	
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+	
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+	
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+			
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+	
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+	
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+    //Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+    TESTEL(KErrNone == err, err);
+	//Load NAPT   
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+	
+	//closing socket    
+    socketNapt.Close();
+	INFO_PRINTF1(_L("Close first socket"));
+	//again loading napt
+    INFO_PRINTF1(_L("Open second socket and reconfigure napt"));
+    err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+    TESTEL(KErrNone == err, err);
+
+                  
+	_LIT8(KTest,"test1\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	         
+    //Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+    TRequestStatus status;
+    sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+	
+	//send test case name to NaptTestServer
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+    err = status.Int();
+
+    TSockXfrLength length;
+ 	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+	
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+
+	delete sendEthAddress;
+
+	socketNapt.Close();
+
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest967	
+
+TE_RConnectionTest968::~TE_RConnectionTest968()
+{
+}
+
+enum TVerdict TE_RConnectionTest968::doTestStepL(void)
+{
+	SetTestStepResult(EFail);
+	
+	INFO_PRINTF1(_L(" Open many TCP Sockets and Send data to Echo Server over each socket"));
+	 
+	const int resultLength   = 2; 
+	const int addressLength  = 20;
+	const int testNameLength = 10;
+
+	RSocketServ socketServNapt;
+	RConnection connNapt,connNapt1;
+	RSocket sockTestServ,socketNapt,socketGloabal;
+	HBufC8* sendEthAddress;
+
+	TInt err;
+	err = OpenSocketServer(socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(socketServNapt);
+	    
+	err = OpenConnection(connNapt, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt);
+
+	err = OpenConnection(connNapt1, socketServNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(connNapt1);
+
+	//start a connection on private interface
+	err = StartConnectionWithOverrides(connNapt, iNaptPrivateIap);
+	TESTEL(KErrNone == err, err);
+	connNapt.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+	//start a connection on public interface
+	err = StartConnectionWithOverrides(connNapt1, iNaptPublicIap);
+	TESTEL(KErrNone == err, err);
+	connNapt1.SetOpt(KCOLProvider, KConnDisableTimers, ETrue);
+		
+	err = OpenTcpSocketExplicit(sockTestServ, socketServNapt, connNapt);
+	TESTEL(KErrNone == err, err);
+	CleanupClosePushL(sockTestServ);
+			
+	_LIT(KInterfaceName1,"eth");
+	TInetAddr ethAddress;
+	TName ethString;
+
+	//get eth interface address
+	TUint32 testAddr1 = GetInterfaceAddress(sockTestServ,KInterfaceName1());
+	if(testAddr1 <= KErrNone)
+		{
+		INFO_PRINTF1(_L("Failed to get eth address"));
+		return TestStepResult();
+		}
+
+	ethAddress.SetAddress(testAddr1);
+	ethAddress.Output(ethString);
+	
+	//Concatenate eth ip address with the sring ':ethaddress\n'
+	sendEthAddress = HBufC8::NewL(ethString.Length()+addressLength);
+	sendEthAddress->Des().Copy(ethString); 
+	sendEthAddress->Des().Append(_L8(":ethaddress\n"));
+	
+	//Load NAPT   
+	err = LoadNapt(socketNapt,sockTestServ,socketServNapt);
+	TESTEL(KErrNone == err, err);
+	
+	//Connect to NaptTestServer
+	err = ConnectTcpSocket(sockTestServ, iNaptTestServAddr);
+	TESTEL(KErrNone == err, err);
+	              
+	_LIT8(KTest,"test13\n");
+	TBufC8 <testNameLength> tst(KTest);
+	TPtrC8 testCaseName(tst);
+	 
+	//Need to add route in NaptTestServer.send gateway IP address to the NaptTestServer.
+	TRequestStatus status;
+	sockTestServ.Send(*sendEthAddress, 0, status);
+	User::WaitForRequest(status);
+	 err = status.Int();
+
+	//send test case name to NaptTestServer.
+	sockTestServ.Send(testCaseName, 0, status);
+	User::WaitForRequest(status);
+	err = status.Int();
+
+	TSockXfrLength length;
+	TBuf8<resultLength> result;
+	result.Zero();
+
+	//receive test result from NaptTestServer
+	sockTestServ.RecvOneOrMore(result, 0, status,length);
+	User::WaitForRequest(status);
+	err = status.Int();
+		
+	if(err == 0)
+		{
+		//pass = 1,fail = 0
+		if(result[0] == '1')
+			{
+	    	SetTestStepResult(EPass);
+			}
+		else if(result[0] == '0')
+			{
+	    	INFO_PRINTF1(_L("Test failed.Returned fail from NaptTestServer "));
+	    	SetTestStepResult(EFail);
+			}
+		}
+	delete sendEthAddress;
+	
+	socketNapt.Close();
+	
+	err = DestroyTcpSocket(sockTestServ);
+	TESTEL(KErrNone == err, err);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+	
+	CloseConnection(connNapt);
+	CleanupStack::Pop();
+
+	CloseSocketServer(socketServNapt);
+	CleanupStack::Pop();
+
+	return TestStepResult();
+} // TE_RConnectionTest968	
+