--- /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();
+ }
+