datacommsserver/esockserver/test/TE_ESock/EsockTestSection1.cpp
changeset 0 dfb7c4ff071f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/datacommsserver/esockserver/test/TE_ESock/EsockTestSection1.cpp	Thu Dec 17 09:22:25 2009 +0200
@@ -0,0 +1,619 @@
+// Copyright (c) 2001-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 1
+// 
+//
+
+// EPOC includes
+#include <e32base.h>
+#include <in_sock.h>
+
+// Test system includes
+#include "EsockTestSection1.h"
+
+
+// Test step 1.1
+const TDesC& CEsockTest1_1::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.1");
+	return ret;
+	}
+
+CEsockTest1_1::~CEsockTest1_1()
+	{
+	}
+
+enum TVerdict CEsockTest1_1::easyTestStepL()
+	{
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.1")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d blank socket(s)"), nSockets);
+	
+	TInt ret = OpenSockets(nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	return EPass;
+	}
+
+
+// Test step 1.2
+const TDesC& CEsockTest1_2::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.2");
+	
+	return ret;
+	}
+
+CEsockTest1_2::~CEsockTest1_2()
+	{
+	}
+
+enum TVerdict CEsockTest1_2::easyTestStepL()
+	{
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.2")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d TCP socket(s)"), nSockets);
+	TInt ret = OpenSockets(KAfInet, KSockStream, KProtocolInetTcp, nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<32> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		(iEsockSuite->GetSocketHandle(i + 1)).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == 0);
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.3
+const TDesC& CEsockTest1_3::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.3");
+	
+	return ret;
+	}
+
+CEsockTest1_3::~CEsockTest1_3()
+	{
+	}
+
+enum TVerdict CEsockTest1_3::easyTestStepL()
+	{
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.3")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d UDP socket(s)"), nSockets);
+	TInt ret = OpenSockets(KAfInet, KSockDatagram, KProtocolInetUdp, nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<39> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		(iEsockSuite->GetSocketHandle(i + 1)).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == 0);
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.4
+const TDesC& CEsockTest1_4::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.4");
+	
+	return ret;
+	}
+
+CEsockTest1_4::~CEsockTest1_4()
+	{
+	}
+
+enum TVerdict CEsockTest1_4::easyTestStepL()
+	{
+	// Open n ICMP sockets
+	
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.4")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d ICMP socket(s)"), nSockets);
+	TInt ret = OpenSockets(KAfInet, KSockDatagram, KProtocolInetIcmp, nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<32> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		iEsockSuite->GetSocketHandle(i + 1).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == KErrNone);
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.5
+const TDesC& CEsockTest1_5::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.5");
+	
+	return ret;
+	}
+
+CEsockTest1_5::~CEsockTest1_5()
+	{
+	}
+
+enum TVerdict CEsockTest1_5::easyTestStepL()
+	{
+	// Open n IP sockets
+	
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.5")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d IP socket(s)"), nSockets);
+	TInt ret = OpenSockets(KAfInet, KSockDatagram, KProtocolInetIp, nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<32> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		iEsockSuite->GetSocketHandle(i + 1).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == KErrNone);
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.6
+const TDesC& CEsockTest1_6::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.6");
+	
+	return ret;
+	}
+
+CEsockTest1_6::~CEsockTest1_6()
+	{
+	}
+
+enum TVerdict CEsockTest1_6::easyTestStepL()
+	{
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.6")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d TCP socket(s) by name"), nSockets);
+	TInt ret = OpenSockets(_L("tcp"), nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<32> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		iEsockSuite->GetSocketHandle(i + 1).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == KErrNone);
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.7
+const TDesC& CEsockTest1_7::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.7");
+	
+	return ret;
+	}
+
+CEsockTest1_7::~CEsockTest1_7()
+	{
+	}
+
+enum TVerdict CEsockTest1_7::easyTestStepL()
+	{
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.7")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d UDP socket(s) by name"), nSockets);
+	TInt ret = OpenSockets(_L("udp"), nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<32> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		iEsockSuite->GetSocketHandle(i + 1).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == KErrNone); 
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.8
+const TDesC& CEsockTest1_8::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.8");
+	
+	return ret;
+	}
+
+CEsockTest1_8::~CEsockTest1_8()
+	{
+	}
+
+enum TVerdict CEsockTest1_8::easyTestStepL()
+	{
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.8")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d ICMP socket(s) by name"), nSockets);
+	TInt ret = OpenSockets(_L("icmp"), nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<32> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		iEsockSuite->GetSocketHandle(i + 1).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == 0);
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.9
+const TDesC& CEsockTest1_9::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.9");
+	
+	return ret;
+	}
+
+CEsockTest1_9::~CEsockTest1_9()
+	{
+	}
+
+enum TVerdict CEsockTest1_9::easyTestStepL()
+	{
+	// get number of sockets from script
+	TInt nSockets; // number of sockets to open
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.9")), _L("numSockets"), nSockets));
+	
+	Logger().WriteFormat(_L("Open %d IP sockets by name"), nSockets);
+	TInt ret = OpenSockets(_L("ip"), nSockets);
+	TESTEL(KErrNone == ret, ret);
+	
+	TInetAddr addr;
+	TBuf<32> buf;
+	for (TInt i = 0; i < nSockets; i++)
+		{
+		// Get local address of the socket (Empty)
+		iEsockSuite->GetSocketHandle(i + 1).LocalName(addr);
+		
+		// Check length of buffer, should be set to (Zero)
+		addr.OutputWithScope(buf);
+		TESTL(buf.Length() == KErrNone); 
+		}
+	
+	return EPass;
+	}
+
+
+// Test step 1.10
+const TDesC& CEsockTest1_10::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.10");
+	
+	return ret;
+	}
+
+CEsockTest1_10::~CEsockTest1_10()
+	{
+	}
+
+enum TVerdict CEsockTest1_10::easyTestStepL()
+	{
+	// Open a TCP socket with invalid socket type
+	Logger().WriteFormat(_L("Open socket, of invalid type, for TCP"));
+	RSocket sock;
+	CleanupClosePushL(sock);
+	TInt ret = sock.Open(iEsockSuite->iSocketServer, KAfInet, 0, KProtocolInetTcp);
+	TESTEL(ret==KErrBadName, ret);
+	
+	// Open a UDP socket with invalid socket type
+	Logger().WriteFormat(_L("Open socket, of invalid type, for UDP"));
+	RSocket sock2;
+	CleanupClosePushL(sock2);
+	ret = sock2.Open(iEsockSuite->iSocketServer, KAfInet, 12, KProtocolInetUdp);
+	TESTEL(ret==KErrBadName, ret);
+	
+	CleanupStack::PopAndDestroy(2, &sock);
+	return EPass;
+	}
+
+
+// Test step 1.11
+const TDesC& CEsockTest1_11::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.11");
+	
+	return ret;
+	}
+
+CEsockTest1_11::~CEsockTest1_11()
+	{
+	}
+
+enum TVerdict CEsockTest1_11::easyTestStepL()
+	{
+	// open sockets with an invalid protocol
+	
+	// get protocol id's from script
+	TInt protocol1, protocol2;
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.11")), _L("protocolId1"), protocol1));
+	TESTL(GetIntFromConfig(SectionName(_L("Test_1.11")), _L("protocolId2"), protocol2));
+	
+	Logger().WriteFormat(_L("Open stream socket for invalid protocol"));
+	RSocket sock;
+	CleanupClosePushL(sock);
+	TInt ret = sock.Open(iEsockSuite->iSocketServer, KAfInet, KSockStream, protocol1);
+	TESTEL(ret==KErrBadName, ret);
+	
+	Logger().WriteFormat(_L("Open datagram socket for invalid protocol"));
+	RSocket sock2;
+	CleanupClosePushL(sock2);
+	ret = sock2.Open(iEsockSuite->iSocketServer, KAfInet, KSockDatagram, protocol2);
+	TESTEL(ret==KErrBadName, ret);
+
+	CleanupStack::PopAndDestroy(2, &sock);
+	return EPass;
+	}
+
+
+// Test step 1.12
+const TDesC& CEsockTest1_12::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.12");
+	
+	return ret;
+	}
+
+CEsockTest1_12::~CEsockTest1_12()
+	{
+	}
+
+enum TVerdict CEsockTest1_12::easyTestStepL()
+	{
+	Logger().WriteFormat(_L("Open stream socket for UDP"));
+
+	RSocket sock;
+	CleanupClosePushL(sock);
+	TInt ret = sock.Open(iEsockSuite->iSocketServer, KAfInet, KSockStream, KProtocolInetUdp);
+	TESTEL(ret==KErrBadName, ret);
+
+	CleanupStack::PopAndDestroy();
+	return EPass;
+	}
+
+
+// Test step 1.13
+const TDesC& CEsockTest1_13::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.13");
+	
+	return ret;
+	}
+
+CEsockTest1_13::~CEsockTest1_13()
+	{
+	}
+
+enum TVerdict CEsockTest1_13::easyTestStepL()
+	{
+	Logger().WriteFormat(_L("Open datagram socket for TCP"));
+	
+	RSocket sock;
+	CleanupClosePushL(sock);
+	TInt ret = sock.Open(iEsockSuite->iSocketServer, KAfInet, KSockDatagram, KProtocolInetTcp);
+	TESTEL(ret==KErrBadName, ret);
+
+	CleanupStack::PopAndDestroy();
+	return EPass;
+	}
+
+
+// Test step 1.14
+const TDesC& CEsockTest1_14::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.14");
+	
+	return ret;
+	}
+
+CEsockTest1_14::~CEsockTest1_14()
+	{
+	}
+
+enum TVerdict CEsockTest1_14::easyTestStepL()
+	{
+	Logger().WriteFormat(_L("Open socket for invalid protocol by name"));
+
+	RSocket sock;
+	CleanupClosePushL(sock);
+	TInt ret =sock.Open(iEsockSuite->iSocketServer, _L("abc"));
+	TESTEL(ret==KErrNotFound, ret);
+
+	CleanupStack::PopAndDestroy();
+	return EPass;
+	}
+
+
+// Test step 1.15
+const TDesC& CEsockTest1_15::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.15");
+	
+	return ret;
+	}
+
+CEsockTest1_15::~CEsockTest1_15()
+	{
+	}
+
+enum TVerdict CEsockTest1_15::easyTestStepL()
+	{
+	CloseSockets(2);
+	return EPass;
+	}
+
+// Test step 1.16
+const TDesC& CEsockTest1_16::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret,"Test1.16");
+	
+	return ret;
+	}
+
+CEsockTest1_16::~CEsockTest1_16()
+	{
+	}
+
+enum TVerdict CEsockTest1_16::easyTestStepPreambleL()
+	{
+	TInt ret = OpenSockets(KAfInet, KSockDatagram, KProtocolInetUdp);
+	Logger().WriteFormat(_L("Open a UDP socket, returned %d"), ret);
+	if (KErrNone != ret)
+		{
+		return EFail;
+		}
+	return EPass;
+	}
+
+enum TVerdict CEsockTest1_16::easyTestStepL()
+	{
+	TESTL(EPass == TestStepResult());
+	
+	if (iEsockSuite->GetSocketListCount() < 1)
+		{
+		return EInconclusive;
+		}
+	
+    const TInt KBufferLength = 10;
+	TBuf8<KBufferLength> buffer;
+	buffer.SetMax();
+	buffer.FillZ();
+
+	TInetAddr      destAddr;
+	TRequestStatus status;
+	
+	Logger().WriteFormat(_L("Issuing 'SendTo' with invalid destination..."));
+	iEsockSuite->GetSocketHandle(1).SendTo(buffer, destAddr, 0, status);
+	User::WaitForRequest(status);
+	Logger().WriteFormat(_L("...which returned %d\n"), status.Int());	// Should return '-2'
+	TESTEL(status == KErrGeneral, EFail);
+
+	// Test 1.15 Close socket
+	
+    return EPass;
+	}
+
+// Test step 1.17
+// Open a socket using the RawIp protocol
+const TDesC& CEsockTest1_17::GetTestName()
+	{
+	// store the name of this test case
+	_LIT(ret, "Test1.17");
+	
+	return ret;		
+	}
+
+CEsockTest1_17::~CEsockTest1_17()
+	{	
+	}
+		
+enum TVerdict CEsockTest1_17::easyTestStepL()
+	{			
+	Logger().WriteFormat(_L("Open a RawIP socket"));
+	
+	_LIT(KRawIp, "rawip");
+	TInt ret = OpenSockets(KRawIp);
+	TESTEL(ret == KErrNone, ret);
+	
+	return EPass;
+	}
+	
+