telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsypacketcontextfu.cpp
changeset 0 3553901f7fa8
child 24 6638e7f4bd8f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/ctsydispatchlayer/test/dispatchertests/dispatchsrc/cctsypacketcontextfu.cpp	Tue Feb 02 01:41:59 2010 +0200
@@ -0,0 +1,340 @@
+// Copyright (c) 2007-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:
+// The TEFUnit test suite for PacketContext in the Common TSY.
+// 
+//
+
+#include "cctsypacketcontextfu.h"
+#include "cctsypacketservicesfu.h"
+
+#include <etel.h>
+#include <etelmm.h>
+#include <et_clsvr.h>
+#include <ctsy/mmtsy_names.h>
+#include <ctsy/serviceapi/mmtsy_ipcdefs.h>
+#include <test/tmockltsydata.h>
+#include <ctsy/ltsy/mltsydispatchpacketservicesinterface.h>
+
+CTestSuite* CCTsyPacketContextFU::CreateSuiteL(const TDesC& aName)
+    {
+    SUB_SUITE;
+
+    ADD_TEST_STEP_ISO_CPP(CCTsyPacketContextFU, TestUnit00027L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyPacketContextFU, TestUnit00028L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyPacketContextFU, TestUnit00029L);
+
+    END_SUITE;
+    }
+
+
+//
+// Actual test cases
+//
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-UN00027
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketContext::Delete
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::Delete
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyPacketContextFU::TestUnit00027L()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+    
+    RBuf8 expectData;
+    CleanupClosePushL(expectData);
+        
+    RPacketService packetService;
+    OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);    
+   
+    // Open new context
+    TInfoName contextId;    
+    RPacketContext packetContext;   
+    packetContext.OpenNewContext(packetService, contextId); 
+    CleanupClosePushL(packetContext);
+ 
+    TInfoName primaryContext;
+    TInfoName secondaryContext;
+    primaryContext.Copy(KFirstAllocatedContextName);
+    secondaryContext.Copy(KDefaultContextName);    
+    
+    //-------------------------------------------------------------------------
+    // SEND Delete request when ContextStatus is Unknown
+    //-------------------------------------------------------------------------
+    TRequestStatus requestStatus;   
+    packetContext.Delete(requestStatus);
+    
+    User::WaitForRequest(requestStatus);    
+    ASSERT_EQUALS(KErrNotReady, requestStatus.Int());   
+    AssertMockLtsyStatusL();
+       
+    // Set context in Active state
+    SetContextActiveL(contextId);
+  
+    //----------------------------------
+    // Send an unsupported request
+    //----------------------------------
+    
+    RPacketContext::TDataVolume volume; 
+    packetContext.GetDataVolumeTransferred(requestStatus, volume);
+    User::WaitForRequest(requestStatus);        
+    ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
+    AssertMockLtsyStatusL();
+    
+
+    //-------------------------------------------------------------------------
+    // TEST E: Unsolicited completion of RPacketContext::Delete
+    // from LTSY.
+    //-------------------------------------------------------------------------    
+    TMockLtsyData1 <TInfoName > ltsyData(contextId);
+    data.Close();
+    ltsyData.SerialiseL(data);
+    
+    TRequestStatus mockLtsyStatus;
+    
+    iMockLTSY.NotifyTerminated(mockLtsyStatus);
+    // send completion 
+    iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data);
+
+    // wait for completion
+    User::WaitForRequest(mockLtsyStatus);
+    ASSERT_EQUALS(KErrNone, mockLtsyStatus.Int());
+    AssertMockLtsyStatusL();
+
+    //-------------------------------------------------------------------------
+    // TEST A: failure to dispatch request to LTSY
+    //-------------------------------------------------------------------------
+    //TMockLtsyData1 <TInfoName> expData(contextId);
+    TMockLtsyData1<TInfoName> expData(primaryContext);
+    expectData.Close();
+    expData.SerialiseL(expectData);
+    
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData, KErrNotSupported);
+
+    packetContext.Delete(requestStatus);
+    
+    User::WaitForRequest(requestStatus);    
+    ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());   
+    AssertMockLtsyStatusL();
+
+    //-------------------------------------------------------------------------
+    // TEST B: failure on completion of pending request from LTSY->CTSY
+    //-------------------------------------------------------------------------
+    iMockLTSY.ExpectL (MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData);
+    iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrGeneral, data);
+
+    packetContext.Delete(requestStatus);
+    
+    User::WaitForRequest(requestStatus);    
+    ASSERT_EQUALS(KErrGeneral, requestStatus.Int());    
+    AssertMockLtsyStatusL();
+
+    //-------------------------------------------------------------------------
+    // TEST C: Successful completion request of
+    // RPacketContext::Delete when result is not cached.
+    //-------------------------------------------------------------------------
+    iMockLTSY.ExpectL (MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData);
+    iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data);
+
+    packetContext.Delete(requestStatus);
+        
+    User::WaitForRequest(requestStatus);    
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());   
+    AssertMockLtsyStatusL();
+
+    //-------------------------------------------------------------------------
+    // TEST D: failure to modify context parameters when context deleted
+    //-------------------------------------------------------------------------
+    packetContext.ModifyActiveContext(requestStatus);
+    User::WaitForRequest(requestStatus);        
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNotReady, requestStatus.Int());
+ 
+    iMockLTSY.ExpectL (MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData);
+    CleanupStack::PopAndDestroy(5, this); //packetContext, packetService, expectData, data, this 
+    
+    }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-UN00028
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for multiple client requests to RPacketContext::Delete
+@SYMTestPriority High
+@SYMTestActions Invokes multiple client requests to RPacketContext::Delete
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyPacketContextFU::TestUnit00028L()
+    {                   
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);    
+    
+    RBuf8 data2;
+    CleanupClosePushL(data2);
+    
+    RBuf8 expectData;
+    CleanupClosePushL(expectData);
+    
+    RBuf8 expectData2;
+    CleanupClosePushL(expectData2);
+
+    // Open second client
+    RTelServer telServer2;
+    TInt ret = telServer2.Connect();
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(telServer2);
+
+    RMobilePhone phone2;
+    ret = phone2.Open(iTelServer,KMmTsyPhoneName);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(phone2);
+    
+    RPacketService packetService;
+    OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+    
+    RPacketService packetService2;                
+    ret = packetService2.Open(phone2);
+    ASSERT_EQUALS(KErrNone, ret);
+    CleanupClosePushL(packetService2);
+    
+    // Open first context
+    TInfoName contextId;    
+    RPacketContext packetContext;
+    packetContext.OpenNewContext(packetService, contextId);
+    CleanupClosePushL(packetContext);
+    
+    // Open second context
+    TInfoName contextId2;   
+    RPacketContext packetContext2;
+    packetContext2.OpenNewContext(packetService2, contextId2);
+    CleanupClosePushL(packetContext2);
+    
+    // Set first context in Active state
+    SetContextActiveL(contextId);
+    
+    // Set second context in Active state
+    SetContextActiveL(contextId2);
+
+    //-------------------------------------------------------------------------
+    // Test A: Test multiple clients requesting RPacketContext::Delete
+    //-------------------------------------------------------------------------
+    
+    // data for first CompleteL
+    TMockLtsyData1 <TInfoName > ltsyData(contextId);
+    ltsyData.SerialiseL(data);
+    
+    // data for second CompleteL
+    TMockLtsyData1 <TInfoName > ltsyData2(contextId2);
+    ltsyData2.SerialiseL(data2);    
+   
+    // for the first request
+    TRequestStatus requestStatus;
+    TMockLtsyData1 <TInfoName> expData(contextId);
+    expData.SerialiseL(expectData);
+    
+    // for the second request
+    TRequestStatus requestStatus2;
+    TMockLtsyData1 <TInfoName> expData2(contextId2);
+    expData2.SerialiseL(expectData2);
+            
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData);        
+    iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data);
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData2);    
+    iMockLTSY.CompleteL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, KErrNone, data2);
+    
+    // send first request
+    packetContext.Delete(requestStatus);        
+    
+    // send second request
+    packetContext2.Delete(requestStatus2);
+    
+    // wait for first answer
+    User::WaitForRequest(requestStatus);        
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+        
+    // wait for second answer
+    User::WaitForRequest(requestStatus2);       
+    ASSERT_EQUALS(KErrNone, requestStatus2.Int());
+
+    AssertMockLtsyStatusL();
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData2);
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData);
+    CleanupStack::PopAndDestroy(2); // expectData2, expectData
+    CleanupStack::PopAndDestroy(9, this); //packetContext2, packetContext, packetService2, packetService, phone2, telServer2, data,data2 this  
+    }
+
+/**
+@SYMTestCaseID BA-CTSYD-DIS-PACKETSERVICES-UN00029
+@SYMComponent  telephony_ctsy
+@SYMTestCaseDesc Test support in CTSY for RPacketContext::Delete with timeout
+@SYMTestPriority High
+@SYMTestActions Invokes RPacketContext::Delete and tests for timeout
+@SYMTestExpectedResults Pass
+@SYMTestType CT
+*/
+void CCTsyPacketContextFU::TestUnit00029L()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+    
+    RBuf8 expectData;
+    CleanupClosePushL(expectData);
+    
+    RPacketService packetService;
+    OpenPacketServiceLC(packetService, RPacketService::EStatusUnattached);
+    
+    // Open new context
+    TInfoName contextId;    
+    RPacketContext packetContext;   
+    packetContext.OpenNewContext(packetService, contextId); 
+    CleanupClosePushL(packetContext);
+    
+    // Set context in Active state
+    SetContextActiveL(contextId);
+    
+    //-------------------------------------------------------------------------
+    // Test A: Test timeout of RPacketContext::Delete
+    //-------------------------------------------------------------------------     
+    TRequestStatus requestStatus;   
+    TMockLtsyData1 <TInfoName> expData(contextId);
+    expData.SerialiseL(expectData);    
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData);
+    
+    packetContext.Delete(requestStatus);
+        
+    User::WaitForRequest(requestStatus);    
+    ASSERT_EQUALS(KErrTimedOut, requestStatus.Int());   
+    AssertMockLtsyStatusL();
+    
+    iMockLTSY.ExpectL(MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId, expectData);
+    CleanupStack::PopAndDestroy(5, this); //packetContext, packetService, data, expectData, this
+    }