telephonyserverplugins/simtsy/test/Te_Sim/Te_SimPacketContextTest.cpp
changeset 0 3553901f7fa8
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/simtsy/test/Te_Sim/Te_SimPacketContextTest.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,288 @@
+// Copyright (c) 2005-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:
+//
+
+#include "Te_SimPacketContextTest.h"
+
+CSimPacketContextTest::CSimPacketContextTest()
+	{ 
+	SetTestStepName(_L("ContextTest"));
+	}
+
+TVerdict CSimPacketContextTest::doTestStepL()
+	{
+	INFO_PRINTF1(_L("BeginPacketContextTest"));
+
+ 	CreateConfigFileL(_L("c:\\config3.txt"));
+ 	SetTestNumberL(6);
+
+	TInt ret = iPhone.Open(iTelServer,KPhoneName); 
+	INFO_PRINTF2(_L("Result: %d"),ret); 
+	TESTL(ret == KErrNone); 
+	INFO_PRINTF1(_L("Opened phone object"));
+
+	TESTL(iPacketService.Open(iPhone)==KErrNone);
+	INFO_PRINTF1(_L("Opened Packet object"));
+
+	// test GetContextInfo - get context info where no contexts created
+	TInt index = 0;
+	RPacketService::TContextInfo contextInfo;
+	TRequestStatus reqStatus, notifyStatus;
+
+	iPacketService.GetContextInfo(reqStatus, index, contextInfo);
+	iPacketService.CancelAsyncRequest(EPacketGetContextInfo);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrArgument); 
+	INFO_PRINTF1(_L("Get Info Test Passed - KErrArgument as no context created"));
+
+	TBuf<40> contextId;
+	iPacketService.NotifyContextAdded(notifyStatus, contextId);
+	iPacketService.CancelAsyncRequest(EPacketNotifyContextAdded);
+	User::WaitForRequest(notifyStatus);
+	TESTL(notifyStatus.Int()== KErrCancel);
+	
+	TName contextName;
+	iPacketService.NotifyContextAdded(notifyStatus, contextName);
+
+	// test RPacketContext::OpenNewContext
+	
+	TName contextNameCompare;
+	ret = iFirstPrimaryPacketContext.OpenNewContext(iPacketService, contextName);
+	contextNameCompare.Append(KSimPrimaryPacketContextName);
+	contextNameCompare.AppendNum(1);
+	TESTL(contextName.Compare(contextNameCompare)==KErrNone);
+	CHECKPOINTL(ret,KErrNone,CHP_CNTXT_CASE("E.2"));
+	INFO_PRINTF1(_L("Opened Context object"));
+		 
+	User::WaitForRequest(notifyStatus);
+	
+	TName anotherContextName;
+	TName anotherContextNameCompare;
+	TESTL(iSecondPrimaryPacketContext.OpenNewContext(iPacketService, anotherContextName)==KErrNone);
+	anotherContextNameCompare.Append(KSimPrimaryPacketContextName);
+	anotherContextNameCompare.AppendNum(2);
+	TESTL(anotherContextName.Compare(anotherContextNameCompare)==KErrNone);
+	CHECKPOINTL(ret,KErrNone,CHP_CNTXT_CASE("E.3"));
+	INFO_PRINTF1(_L("Opened another Primary Context object")); 
+
+	// test RPacketService::GetContextInfo - context has been created
+	index = 1;
+	iPacketService.GetContextInfo(reqStatus, index, contextInfo);
+	iPacketService.CancelAsyncRequest(EPacketGetContextInfo);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone); 
+	CHECKPOINTL(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("E.6"));
+	INFO_PRINTF1(_L("Get Info Test Passed"));
+
+	// test RPacketService::GetContextInfo() - on deactivated context
+	iFirstPrimaryPacketContext.Deactivate(reqStatus);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);
+	INFO_PRINTF1(_L("Deactivated context successfully"));
+	CHECKPOINTL(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("E.7"));
+
+	index = 0;
+	iPacketService.GetContextInfo(reqStatus, index, contextInfo);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone); 
+	INFO_PRINTF1(_L("Get Info Test Passed")); 
+
+	// test RPacketContext::GetStatus
+	RPacketContext::TContextStatus contextStatus;
+	TESTL(iFirstPrimaryPacketContext.GetStatus(contextStatus) == KErrNone);
+	TESTL(contextStatus==RPacketContext::EStatusInactive);
+	CHECKPOINTL(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("E.27"));
+	INFO_PRINTF1(_L("GetStatus on inactive context successful"));
+
+	// test RPacketContext::Activate
+	iFirstPrimaryPacketContext.Activate(reqStatus);
+	iFirstPrimaryPacketContext.CancelAsyncRequest(EPacketContextActivate);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrCancel);
+	CHECKPOINTL(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("E.22"));
+	INFO_PRINTF1(_L("Activation Cancel test passed"));
+
+	// test RPacketContext::GetStatus
+	TESTL(iFirstPrimaryPacketContext.GetStatus(contextStatus) == KErrNone);
+	TESTL(contextStatus==RPacketContext::EStatusInactive);
+
+	// test RPacketContext::NotifyStatusChange 
+
+	// test RPacketContext::Activate
+	StartNTRasSimulation();
+	iFirstPrimaryPacketContext.NotifyStatusChange(notifyStatus, contextStatus);
+	iFirstPrimaryPacketContext.Activate(reqStatus);
+	User::WaitForRequest(notifyStatus);
+	TESTL(notifyStatus.Int()==KErrNone);
+	User::WaitForRequest(reqStatus);
+	CHECKPOINTL(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("E.21"));
+	TESTL(notifyStatus.Int()==KErrNone);
+
+	INFO_PRINTF1(_L("Activate test passed"));
+	// test RPacketContext::GetContextInfo
+	index = 0;
+	iPacketService.GetContextInfo(reqStatus, index, contextInfo);
+	iPacketService.CancelAsyncRequest(EPacketGetContextInfo);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone); 
+	CHECKPOINTL(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("E.6"));
+	INFO_PRINTF1(_L("Get Info Test Passed"));
+
+	// test RPacketContext::GetStatus
+	TESTL(iFirstPrimaryPacketContext.GetStatus(contextStatus) == KErrNone);
+	TESTL(contextStatus==RPacketContext::EStatusActive);
+	CHECKPOINTL(reqStatus.Int(),KErrNone,CHP_CNTXT_CASE("E.28"));
+	INFO_PRINTF1(_L("GetStatus on active context successful"));
+
+	// test cancelling RPacketService::Deactivate() 
+	iFirstPrimaryPacketContext.Deactivate(reqStatus);
+	iFirstPrimaryPacketContext.CancelAsyncRequest(EPacketContextDeactivate);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrCancel);
+	INFO_PRINTF1(_L("Cancelled Deactivate context successfully"));
+	CHECKPOINTL(reqStatus.Int(),KErrCancel,CHP_CNTXT_CASE("E.26"));
+
+	// test RPacketContext::Deactivate
+	iFirstPrimaryPacketContext.Deactivate(reqStatus);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);
+	INFO_PRINTF1(_L("Deactivate test passed"));
+
+	// Activate PRIMARY2
+	StartNTRasSimulation();
+	iSecondPrimaryPacketContext.Activate(reqStatus);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);
+	INFO_PRINTF1(_L("Activate PRIMARY2 tested successfully"));
+
+	// test RPacketContext::GetStatus
+	TESTL(iSecondPrimaryPacketContext.GetStatus(contextStatus) == KErrNone);
+	TESTL(contextStatus==RPacketContext::EStatusActive);
+	INFO_PRINTF1(_L("GetStatus on active PRIMARY2 context successful"));
+
+	TUint8 addrArray[RPacketContext::KIPAddressSize] = {0,0,0,0,
+														0,0,0,0,
+														0,0,255,255,
+														102,23,224,132};
+	TUint8 subArray[RPacketContext::KIPAddressSize] =	{0,0,0,0,
+														0,0,0,0,
+														0,0,255,255,
+														255,255,255,255};
+	RPacketContext::TPacketFilterV2 packetFilterV2;
+	packetFilterV2.iId = 0;
+	packetFilterV2.iEvaluationPrecedenceIndex = 1;
+
+	for(TInt x = 0;  x<RPacketContext::KIPAddressSize; x++)
+		{
+		packetFilterV2.iSrcAddr[x] = addrArray[x];
+		packetFilterV2.iSrcAddrSubnetMask[x] = subArray[x];
+		}
+
+	packetFilterV2.iProtocolNumberOrNextHeader = 1;
+	packetFilterV2.iSrcPortMin = 0;
+	packetFilterV2.iSrcPortMax = 1;
+	packetFilterV2.iDestPortMin = 2;
+	packetFilterV2.iDestPortMax = 0;
+	packetFilterV2.iIPSecSPI = 0;
+	packetFilterV2.iTOSorTrafficClass = 1;
+	packetFilterV2.iFlowLabel = 2;
+
+	RPacketContext::TPacketFilterV2Pckg packetFilterV2pckg(packetFilterV2);
+
+	iSecondPrimaryPacketContext.AddPacketFilter(reqStatus, packetFilterV2pckg);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone); 
+	INFO_PRINTF1(_L("AddPacketFilter PRIMARY2 Test Passed"));
+
+	// test RPacketContext::ModifyActiveContext
+	iSecondPrimaryPacketContext.ModifyActiveContext(reqStatus);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone); 
+	INFO_PRINTF1(_L("ModifyActiveContext PRIMARY2 Test Passed"));
+
+	RCall::TCommPort commPort;
+	iSecondPrimaryPacketContext.LoanCommPort(reqStatus, commPort);
+	iSecondPrimaryPacketContext.CancelAsyncRequest(EPacketContextLoanCommPort);//does nothing
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);
+	TESTL(commPort.iCsy==DPCKTTSY_CSY);
+	TESTL(commPort.iPort==DPCKTTSY_PORT);
+	INFO_PRINTF1(_L("Loan Comm Port test passed"));
+	
+	_LIT8(KWriteTestData,"SIMULATOR TSY PACKET TEST"); 
+	_LIT(KPortName,"LOOPBACK::1");
+	_LIT(KCsyName,"LOOPBACK.CSY");
+
+	RCommServ cs;
+	
+	TInt r=cs.Connect();
+	r=cs.LoadCommModule(KCsyName);
+
+	RComm port;
+	TESTL(port.Open(cs,KPortName,ECommShared)==KErrNone);
+
+	port.Write(reqStatus,KWriteTestData);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);
+
+	port.Close();
+	cs.Close();
+
+	// test RPacketContext::RecoverCommPort
+	iSecondPrimaryPacketContext.RecoverCommPort(reqStatus);
+	iSecondPrimaryPacketContext.CancelAsyncRequest(EPacketContextRecoverCommPort);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);
+	INFO_PRINTF1(_L("Recover Comm Port test passed"));
+
+	// test RPacketContext::Deactivate
+	iFirstPrimaryPacketContext.Deactivate(reqStatus);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus.Int()==KErrNone);
+	INFO_PRINTF1(_L("Deactivate test passed"));
+
+
+	// test RPacketContext::Detach
+	iPacketService.Detach(reqStatus);
+	User::WaitForRequest(reqStatus);
+	TESTL(reqStatus==KErrNone);
+	INFO_PRINTF1(_L("Packet Detach Cancelled Successfully"));
+
+	// test RPacketContext::Delete
+	iFirstPrimaryPacketContext.Delete(reqStatus);
+	iFirstPrimaryPacketContext.CancelAsyncRequest(EPacketContextDelete);
+	User::WaitForRequest(reqStatus);
+	if (reqStatus.Int()==KErrNone)
+		{
+		INFO_PRINTF1(_L("Delete request completed before its cancelation"));
+		}
+	else if (reqStatus.Int()==KErrCancel)
+		{
+		INFO_PRINTF1(_L("Delete Cancel test passed"));
+		// successfully canceled, reissue the async. request again
+		iFirstPrimaryPacketContext.Delete(reqStatus);
+		User::WaitForRequest(reqStatus);
+		}
+	TESTL(reqStatus.Int()==KErrNone);
+	INFO_PRINTF1(_L("Delete test passed"));
+
+	iFirstPrimaryPacketContext.Close();
+	iSecondPrimaryPacketContext.Close();
+	iPacketService.Close();
+	iPhone.Close();
+	ASSERT(RThread().RequestCount()==0);
+
+	return TestStepResult();
+	}
+