telephonyserverplugins/common_tsy/test/component/src/cctsynetworkcontrolfu.cpp
branchRCL_3
changeset 18 17af172ffa5f
parent 15 8b9e023e329f
child 19 630d2f34d719
--- a/telephonyserverplugins/common_tsy/test/component/src/cctsynetworkcontrolfu.cpp	Thu Jul 15 19:58:53 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/src/cctsynetworkcontrolfu.cpp	Thu Aug 19 11:03:36 2010 +0300
@@ -102,17 +102,20 @@
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0001aL);
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0001bL);
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0002L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestStorePreferredNetworksListL0004L);    
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001L);
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001aL);
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001bL);
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0001cL);
     ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0002L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestRetrieveMobilePhonePreferredNetworks0004L);    
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0004L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestGetNetworkRegistrationStatus0005L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyPreferredNetworksListChange0001L);
-    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyPreferredNetworksListChange0002L);           
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyPreferredNetworksListChange0002L);
+    ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyPreferredNetworksListChange0004L);    
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyNetworkSelectionSettingChange0001L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyNetworkSelectionSettingChange0002L);
 	ADD_TEST_STEP_ISO_CPP(CCTsyNetworkControlFU, TestNotifyNetworkSelectionSettingChange0004L);
@@ -5270,7 +5273,7 @@
     prefNetworks[2].iCountryCode = _L("262");
     prefNetworks[2].iNetworkId = _L("03");
         
-    for( TInt i=0; i < 3; i++ )
+    for( TInt i=0; i < 3; ++i )
         {
         list->AddEntryL(prefNetworks[i]);
         }
@@ -5340,11 +5343,16 @@
 @SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0001b
 @SYMPREQ                417-71654
 @SYMComponent           telephony_ctsy
-@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL with error
+@SYMTestCaseDesc        Test support in CTSY for RMobilePhone::StorePreferredNetworksListL 
+                        with error and with duplicate LTSY complete message
 @SYMTestPriority        High
 @SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL.
-                        2. LTSY returns error.  
-@SYMTestExpectedResults Test code receives error. 
+                        2. LTSY returns error.
+                        3. Test code receives error.
+                        3. Invoke RMobilePhone:StorePreferredNetworksListL.
+                        4. LTSY returns duplicate complete message with KErrNone
+                        5. Duplicate complete message is ignored and test code receives KErrNone.  
+@SYMTestExpectedResults All tests pass. 
 @SYMTestType            CT
 */
 void CCTsyNetworkControlFU::TestStorePreferredNetworksListL0001bL()
@@ -5386,17 +5394,28 @@
     AssertMockLtsyStatusL();
     ASSERT_EQUALS(KErrUnknown, requestStatus.Int());
 
-    // Invoke Store request - LTSY returns KErrNotSupported
+    // Invoke Store request - LTSY returns duplicate complete messages with KErrNone
     
     iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
-    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNotSupported);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);    
+
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    // Invoke Store request - LTSY returns KErrNotSupported
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data, KErrNotSupported);
     
     iPhone.StorePreferredNetworksListL(requestStatus, list);
 
     User::WaitForRequest(requestStatus);
     AssertMockLtsyStatusL();
     ASSERT_EQUALS(KErrNotSupported, requestStatus.Int());
-    
+   
     CleanupStack::PopAndDestroy(3, this); // list, data, this
     }
 
@@ -5444,7 +5463,7 @@
     
     iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
     iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
-        
+    
     iPhone.StorePreferredNetworksListL(requestStatus, list);
 
     // Cancel outstanding request
@@ -5459,6 +5478,84 @@
     }
 
 /**
+@SYMTestCaseID          BA-CTSY-NTWC-MSPNL-0004
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for multiple client requests to RMobilePhone::StorePreferredNetworksListL
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::StorePreferredNetworksListL.
+                        2. Invoke RMobilePhone::StorePreferredNetworksListL from second client.
+@SYMTestExpectedResults Second cleint receives KErrServerBusy. 
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestStorePreferredNetworksListL0004L()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+
+    TRequestStatus requestStatus;
+
+    // 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);
+    
+    TRequestStatus requestStatus2;
+    
+    // --- prepare data ---
+    
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork;
+    
+    prefNetwork.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork.iCountryCode = _L("262");
+    prefNetwork.iNetworkId = _L("01");
+    
+    list->AddEntryL(prefNetwork);
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+    // Invoke Store request
+    
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+        
+    iPhone.StorePreferredNetworksListL(requestStatus, list);
+    
+    // Invoke store request from second client
+    
+    phone2.StorePreferredNetworksListL(requestStatus2, list);
+    
+    // Wait for second request
+    User::WaitForRequest(requestStatus2);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrServerBusy, requestStatus2.Int());
+    
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
+    
+    // Wait for first request
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    
+    CleanupStack::PopAndDestroy(5, this); // list, phone2, telServer2, data, this
+    
+    }
+
+/**
 @SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0001
 @SYMPREQ                417-71654
 @SYMComponent           telephony_ctsy
@@ -5540,7 +5637,7 @@
                                                    // retrieveMobilePhonePreferredNetworks
 
     CActiveScheduler::Install(NULL);
-/*    
+    
     // Add new entry to the list
     
     RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork2;
@@ -5565,7 +5662,7 @@
    
     AssertMockLtsyStatusL();
     ASSERT_EQUALS(KErrNone, requestStatus.Int());
-*/    
+    
     CleanupStack::PopAndDestroy(3, this); // list, data, this
 
     }
@@ -5661,7 +5758,7 @@
                                                    // retrieveMobilePhonePreferredNetworks
 
     CActiveScheduler::Install(NULL);
-/*    
+    
     // Remove the last entry from the list
     
     list->DeleteEntryL(1);
@@ -5680,7 +5777,7 @@
     User::WaitForRequest(requestStatus);
     AssertMockLtsyStatusL();
     ASSERT_EQUALS(KErrNone, requestStatus.Int());
- */   
+    
     CleanupStack::PopAndDestroy(3, this); // list, data, this
 
     }
@@ -5816,8 +5913,7 @@
 
     // Invoke Retrieve request - LTSY returns KErrNotSupported
     
-    iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
-    iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrNotSupported, data);    
+    iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq, KErrNotSupported);
     
     retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
     activeRetriever->Activate();
@@ -5911,6 +6007,105 @@
     }
 
 /**
+@SYMTestCaseID          BA-CTSY-NTWC-CRMPPN-0004
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for multiple client requests to CRetrieveMobilePhonePreferredNetworks::Start
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke CRetrieveMobilePhonePreferredNetworks::Start.
+                        2. Invoke CRetrieveMobilePhonePreferredNetworks::Start from second client.
+@SYMTestExpectedResults Second client receives KErrInUse.
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestRetrieveMobilePhonePreferredNetworks0004L()
+    {
+     OpenEtelServerL(EUseExtendedError);
+     CleanupStack::PushL(TCleanupItem(Cleanup,this));
+     OpenPhoneL();
+
+     RBuf8 data;
+     CleanupClosePushL(data);
+
+     // 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);
+     
+     // --- prepare data ---
+     
+     CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+     CleanupStack::PushL(list);
+        
+     CFilteringActiveScheduler scheduler;
+     CActiveScheduler::Install(&scheduler);
+
+     // Create first retriever
+     
+     CRetrieveMobilePhonePreferredNetworks* retrieveMobilePhonePreferredNetworks = 
+                         CRetrieveMobilePhonePreferredNetworks::NewL(iPhone);
+     CleanupStack::PushL(retrieveMobilePhonePreferredNetworks);
+     
+     CActiveRetriever::ResetRequestsNumber();
+     CActiveRetriever* activeRetriever = 
+                         CActiveRetriever::NewL(*retrieveMobilePhonePreferredNetworks);
+     CleanupStack::PushL(activeRetriever);
+     scheduler.AddRetrieverL(*activeRetriever);
+
+     // Create second retriever
+     
+     CRetrieveMobilePhonePreferredNetworks* retrieveMobilePhonePreferredNetworks2 = 
+                         CRetrieveMobilePhonePreferredNetworks::NewL(phone2);
+     CleanupStack::PushL(retrieveMobilePhonePreferredNetworks2);
+     
+     CActiveRetriever::ResetRequestsNumber();
+     CActiveRetriever* activeRetriever2 = 
+                         CActiveRetriever::NewL(*retrieveMobilePhonePreferredNetworks2);
+     CleanupStack::PushL(activeRetriever2);
+     scheduler.AddRetrieverL(*activeRetriever2);
+     
+     TMockLtsyData1<CMobilePhoneStoredNetworkList*> completeLtsyData(list);    
+     completeLtsyData.SerialiseL(data);
+         
+     TRequestStatus mockLtsyStatus;
+     iMockLTSY.ExpectL(ECtsyPhoneGetPreferredNetworksReq);
+     iMockLTSY.CompleteL(ECtsyPhoneGetPreferredNetworksComp, KErrNone, data);    
+     
+     // Invoke Retrieve request
+       
+     retrieveMobilePhonePreferredNetworks->Start(activeRetriever->Status());
+     activeRetriever->Activate();
+
+     // Invoke Retrieve request from second client
+     
+     retrieveMobilePhonePreferredNetworks->Start(activeRetriever2->Status());
+     activeRetriever2->Activate();
+     
+     scheduler.StartScheduler();
+     
+     ASSERT_EQUALS(0, CActiveRetriever::ResetRequestsNumber());
+     ASSERT_EQUALS(KErrNone, activeRetriever->iStatus.Int());
+     ASSERT_EQUALS(KErrInUse, activeRetriever2->iStatus.Int());
+     AssertMockLtsyStatusL();    
+        
+     CleanupStack::PopAndDestroy(4, 
+             retrieveMobilePhonePreferredNetworks); // activeRetriever2
+                                                    // retrieveMobilePhonePreferredNetworks2
+                                                    // activeRetriever
+                                                    // retrieveMobilePhonePreferredNetworks
+     
+     CActiveScheduler::Install(NULL);
+         
+     CleanupStack::PopAndDestroy(5, this); // list, phone2, telServer2, data, this
+    
+    }
+
+/**
 @SYMTestCaseID BA-CTSY-NTWC-MGNRS-0001
 @SYMPREQ 1551
 @SYMCR 1595
@@ -6342,6 +6537,10 @@
     TRequestStatus mockLtsyStatus;    
     iMockLTSY.NotifyTerminated(mockLtsyStatus);
     
+    User::WaitForRequest(requestStatus);
+    AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrCancel, requestStatus.Int());
+    
     // Invoke Store request
     
     iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
@@ -6358,15 +6557,106 @@
     AssertMockLtsyStatusL();
     ASSERT_EQUALS(KErrNone, storeRequestStatus.Int());    
     
-    User::WaitForRequest(requestStatus);
+    // Start timer and check if any notification is received
+
+    TRequestStatus waitStatus = KRequestPending;
+    RTimer timer;
+    timer.CreateLocal();
+    CleanupClosePushL(timer);
+    timer.After(waitStatus, TTimeIntervalMicroSeconds32(KOneSecond));  // Wait 1 sec
+    
+    User::WaitForRequest(requestStatus, waitStatus);     
     AssertMockLtsyStatusL();
+    ASSERT_EQUALS(KErrNone, waitStatus.Int()); // timer fired
     ASSERT_EQUALS(KErrCancel, requestStatus.Int());
-
-    CleanupStack::PopAndDestroy(3, this); // list, data, this
+    
+    CleanupStack::PopAndDestroy(4, this); // timer, list, data, this
       
     }
 
 /**
+@SYMTestCaseID          BA-CTSY-NTWC-MNPNLC-0004
+@SYMPREQ                417-71654
+@SYMComponent           telephony_ctsy
+@SYMTestCaseDesc        Test support in CTSY for multiple client requests to RMobilePhone::NotifyPreferredNetworksListChange
+@SYMTestPriority        High
+@SYMTestActions         1. Invoke RMobilePhone::NotifyPreferredNetworksListChange.
+                        1. Invoke RMobilePhone::NotifyPreferredNetworksListChange from second client.
+                        2. Invoke RMobilePhone::StorePreferredNetworksListL.
+@SYMTestExpectedResults Clients receive preferred network list notification
+@SYMTestType            CT
+*/
+void CCTsyNetworkControlFU::TestNotifyPreferredNetworksListChange0004L()
+    {
+
+    OpenEtelServerL(EUseExtendedError);
+    CleanupStack::PushL(TCleanupItem(Cleanup,this));
+    OpenPhoneL();
+
+    RBuf8 data;
+    CleanupClosePushL(data);
+    
+    // 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);
+    
+    TRequestStatus requestStatus;
+    TRequestStatus requestStatus2;    
+
+    // --- prepare data ---
+
+    CMobilePhoneStoredNetworkList* list = CMobilePhoneStoredNetworkList::NewL();
+    CleanupStack::PushL(list);
+
+    RMobilePhone::TMobilePreferredNetworkEntryV3 prefNetwork;
+    
+    prefNetwork.iAccess = RMobilePhone::KNetworkAccessGsm;
+    prefNetwork.iCountryCode = _L("262");
+    prefNetwork.iNetworkId = _L("01");
+    
+    list->AddEntryL(prefNetwork);
+    
+    TMockLtsyData1<CMobilePhoneStoredNetworkList*> listData(list);    
+    listData.SerialiseL(data);
+    
+    // Invoke Notify request
+    
+    iPhone.NotifyPreferredNetworksListChange(requestStatus);
+
+    // Invoke Notify request for second client
+    
+    phone2.NotifyPreferredNetworksListChange(requestStatus2);
+    
+    // Invoke Store request
+        
+    iMockLTSY.ExpectL(ECtsyPhoneStorePreferredNetworksListReq, data);
+    iMockLTSY.CompleteL(ECtsyPhoneStorePreferredNetworksListComp, KErrNone);
+    
+    TRequestStatus storeRequestStatus;
+    iPhone.StorePreferredNetworksListL(storeRequestStatus, list);
+
+    User::WaitForRequest(storeRequestStatus);
+    ASSERT_EQUALS(KErrNone, storeRequestStatus.Int());    
+    AssertMockLtsyStatusL();
+    
+    User::WaitForRequest(requestStatus);
+    User::WaitForRequest(requestStatus2);
+    
+    ASSERT_EQUALS(KErrNone, requestStatus.Int());
+    ASSERT_EQUALS(KErrNone, requestStatus2.Int());    
+
+    CleanupStack::PopAndDestroy(5, this); // list, phone2, telServer2, data, this
+    
+    }
+
+/**
 @SYMTestCaseID BA-CTSY-NTWC-MNNSSC-0001
 @SYMPREQ 1551
 @SYMComponent  telephony_ctsy