void CTestPerformanceM::TestMoveMultipleEntry() { _LIT(KFunction, "TestMoveMultipleEntry"); INFO_PRINTF1(KFunction); TSecureId owner = 0x999; TUint32 start, stop; TMsvEntry entry; CMsvEntry* parent = NULL; TMsvLocalOperationProgress progress = TMsvLocalOperationProgress(); CMsvEntrySelection* entries = new(ELeave) CMsvEntrySelection; TReal64 diff = 0; iServerSide = EFalse; INFO_PRINTF1(_L("<b>CLIENT SIDE</b>")); TInt frequency; HAL::Get(HALData::EFastCounterFrequency, frequency); INFO_PRINTF2(_L("<b>FastCounter frequency: %d</b>"), frequency); parent = iTestUtils->iMsvSession->GetEntryL(KMsvDraftEntryId); //[1]. Move entries from Drafts to Outbox, and back again, and so on. for(TInt index = 0; index < 10; ++index) { TMsvEntry entry; entry.SetId((TMsvId)20000+index); entry.SetParent(KMsvDraftEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } parent->SetEntryNoCheckL(KMsvDraftEntryId); //bring to cache start = User::FastCounter(); parent->MoveL(*entries, KMsvGlobalOutBoxIndexEntryId, progress); //iTestActive->iStatus); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Drafts which has 10 entries: <b>%f sec</b>"), 10, diff); MY_ASSERT_EQUALS(entries->Count(), 10); parent->SetEntryL(KMsvGlobalOutBoxIndexEntryId); for(TInt index = 0; index < 90; ++index) { TMsvEntry entry; entry.SetId((TMsvId)21000+index); entry.SetParent(KMsvGlobalOutBoxIndexEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } parent->SetEntryNoCheckL(KMsvGlobalOutBoxIndexEntryId); //bring to cache start = User::FastCounter(); parent->MoveL(*entries, KMsvDraftEntryId, progress); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Outbox which has 100 entries: <b>%f sec</b>"), 100, diff); MY_ASSERT_EQUALS(entries->Count(), 100); parent->SetEntryL(KMsvDraftEntryId); for(TInt index = 0; index < 400; ++index) { TMsvEntry entry; entry.SetId((TMsvId)22000+index); entry.SetParent(KMsvDraftEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } start = User::FastCounter(); parent->MoveL(*entries, KMsvGlobalOutBoxIndexEntryId, progress); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Drafts which has 500 entries: <b>%f sec</b>"), 500, diff); MY_ASSERT_EQUALS(entries->Count(), 500); parent->SetEntryL(KMsvGlobalOutBoxIndexEntryId); for(TInt index = 0; index < 500; ++index) { TMsvEntry entry; entry.SetId((TMsvId)22000+index); entry.SetParent(KMsvGlobalOutBoxIndexEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } start = User::FastCounter(); parent->MoveL(*entries, KMsvDraftEntryId, progress); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Outbox which has 1000 entries: <b>%f sec</b>"), 1000, diff); MY_ASSERT_EQUALS(entries->Count(), 1000); parent->SetEntryL(KMsvDraftEntryId); for(TInt index = 0; index < 500; ++index) { TMsvEntry entry; entry.SetId((TMsvId)23000+index); entry.SetParent(KMsvDraftEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } start = User::FastCounter(); parent->MoveL(*entries, KMsvGlobalOutBoxIndexEntryId, progress); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Drafts which has 1500 entries: <b>%f sec</b>"), 1500, diff); MY_ASSERT_EQUALS(entries->Count(), 1500); parent->SetEntryL(KMsvGlobalOutBoxIndexEntryId); for(TInt index = 0; index < 500; ++index) { TMsvEntry entry; entry.SetId((TMsvId)24000+index); entry.SetParent(KMsvGlobalOutBoxIndexEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } start = User::FastCounter(); parent->MoveL(*entries, KMsvDraftEntryId, progress); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Outbox which has 2000 entries: <b>%f sec</b>"), 2000, diff); MY_ASSERT_EQUALS(entries->Count(), 2000); parent->SetEntryL(KMsvDraftEntryId); for(TInt index = 0; index < 500; ++index) { TMsvEntry entry; entry.SetId((TMsvId)25000+index); entry.SetParent(KMsvDraftEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } start = User::FastCounter(); parent->MoveL(*entries, KMsvGlobalOutBoxIndexEntryId, progress); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Drafts which has 2500 entries: <b>%f sec</b>"), 2500, diff); MY_ASSERT_EQUALS(entries->Count(), 2500); parent->SetEntryL(KMsvGlobalOutBoxIndexEntryId); for(TInt index = 0; index < 500; ++index) { TMsvEntry entry; entry.SetId((TMsvId)26000+index); entry.SetParent(KMsvGlobalOutBoxIndexEntryId); entry.iType = KUidMsvMessageEntry; entry.iMtm = KUidMsvMessageEntry; entry.iServiceId = KMsvLocalServiceIndexEntryId; parent->CreateL(entry); entries->AppendL(entry.iId); } start = User::FastCounter(); parent->MoveL(*entries, KMsvDraftEntryId, progress); stop = User::FastCounter(); diff = (TReal64)(stop-start)/frequency; INFO_PRINTF3(_L("---Time taken to MOVE %d entries from Outbox which has 3000 entries: <b>%f sec</b>"), 3000, diff); MY_ASSERT_EQUALS(entries->Count(), 3000); delete entries; iServerSide = ETrue; }