diff -r 26645d81f48d -r cc28652e0254 persistentstorage/centralrepository/test/testexecute/performance/src/TE_DefectTestStep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/centralrepository/test/testexecute/performance/src/TE_DefectTestStep.cpp Wed Sep 01 12:39:58 2010 +0100 @@ -0,0 +1,287 @@ +// 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_DefectTestStep.h" +#include "TE_PerfTestUtilities.h" +#include +#include "t_cenrep_helper.h" +#include "srvdefs.h" +#include "srvreqs.h" +#include +#include "cachemgr.h" + +#ifdef __CENTREP_SERVER_CACHETEST__ + +const TUid KUidLargeRepository = { 0xCCCCCC01 }; +const TUid KUidRep1 = { 0x00000100 }; +const TUid KUidLargeCreRepository = { 0xCCCCCC02 }; + +const TUint32 KNewInt = 1000; +const TInt KIntValue = 1234; + +const TInt KNumOfAttempts = 10; + +_LIT(KZRep1File, "z:\\private\\10202BE9\\00000100.txt"); +_LIT(KCRep1TxtFile, "c:\\private\\10202BE9\\persists\\00000100.txt"); +_LIT(KCRep1CreFile, "c:\\private\\10202BE9\\persists\\00000100.cre"); +#endif + +CPerfTestDefectStep057491::CPerfTestDefectStep057491() + { + SetTestStepName(KPerfTestDefectStepDEF057491); + } + +TVerdict CPerfTestDefectStep057491::doTestStepL() + { +#ifndef __CENTREP_SERVER_CACHETEST__ + return EPass; +#else + SetTestStepResult(EFail); + + CRepository* rep; + TInt64 totalRomMs=0; + TInt64 totalCreMs=0; + TInt64 totalRepWriteMs=0; + + TUint32 startFastCounter; + TUint64 fastCounterromOpenMicroseconds; + TUint64 fastCounterrepWriteMicroseconds; + TUint64 fastCountercreOpenMicroseconds; + + // Flush and disable cache for this test + TInt r; + r = SetGetParameters(TIpcArgs(EDisableCache)); + TEST(r==KErrNone); + + // Time opening and writing repository + for(TInt i=0; iCreate(KNewInt, KIntValue); + fastCounterrepWriteMicroseconds = FastCountToMicrosecondsInInt(User::FastCounter() - startFastCounter); + totalRepWriteMs+=fastCounterrepWriteMicroseconds; + Logger().WriteFormat(_L("Time to write large repos file = %lu microseconds\n"), fastCounterrepWriteMicroseconds); + + TEST(r==KErrNone); + + // Close repository + CleanupStack::PopAndDestroy(rep); + + // Get start time and ticks for .cre file + startFastCounter = User::FastCounter(); + + // Open repository + User::LeaveIfNull(rep = CRepository::NewLC(KUidLargeRepository)); + + // Get finish time and ticks for .cre file + fastCountercreOpenMicroseconds = FastCountToMicrosecondsInInt(User::FastCounter() - startFastCounter); + totalCreMs+=fastCountercreOpenMicroseconds; + Logger().WriteFormat(_L("Time to open large repos from persists file = %lu microseconds\n"), fastCountercreOpenMicroseconds); + +#if !defined(__WINS__) && !defined(__WINSCW__) + TEST(fastCounterromOpenMicroseconds>fastCountercreOpenMicroseconds); +#endif + const TUint32 KIntKey1 = 8847616; + const TInt KIntKey1Value = 1; + const TUint32 KIntKey2 = 139068928; + const TInt KIntKey2Value = 30; + const TUint32 KIntKey3 = 2373975808UL; + const TInt KIntKey3Value = -1920991488; + + // Test 3 random int key values from repository + TInt keyValue; + r=rep->Get(KIntKey1, keyValue); + TEST(r == KErrNone); + TEST(keyValue == KIntKey1Value); + + r=rep->Get(KIntKey2, keyValue); + TEST(r == KErrNone); + TEST(keyValue == KIntKey2Value); + + r=rep->Get(KIntKey3, keyValue); + TEST(r == KErrNone); + TEST(keyValue == KIntKey3Value); + + // Close repository + CleanupStack::PopAndDestroy(rep); + + CleanupFileFromCDriveL(KUidLargeRepository); + } + + Logger().WriteFormat(_L("Average time to open large repos from ROM file = %lu ms\n"), totalRomMs/KNumOfAttempts); + Logger().WriteFormat(_L("Average time to open large repos from persists file = %lu ms\n"), totalCreMs/KNumOfAttempts); + Logger().WriteFormat(_L("Average time to write large repos to persists file = %lu ms\n"), totalRepWriteMs/KNumOfAttempts); + + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL(fs); + CFileMan* fm = CFileMan::NewL(fs); + CleanupStack::PushL(fm); + // Copy a repository txt file to the C: + User::LeaveIfError(fm->Copy(KZRep1File, KCPersistsDir)); + // Reset read-only bit + User::LeaveIfError(fm->Attribs(KCRep1TxtFile,0,KEntryAttReadOnly,TTime(0))); + // Check it exists + TEST( BaflUtils::FileExists (fs, KCRep1TxtFile)); + + // Open repository + User::LeaveIfNull(rep = CRepository::NewLC(KUidRep1)); + + // Create a setting + r = rep->Create(KNewInt, KIntValue); + TEST(r == KErrNone); + + // Check persists file exists + TEST(BaflUtils::FileExists (fs, KCRep1CreFile)); + + // Check that .txt file is gone + TEST(BaflUtils::FileExists (fs, KCRep1TxtFile) == EFalse); + + // Close the repository + CleanupStack::PopAndDestroy(rep); + + CleanupStack::PopAndDestroy(2); // fm, fs + + CleanupFileFromCDriveL(KUidRep1); + + // Enable cache + r = SetGetParameters(TIpcArgs(EEnableCache, KDefaultEvictionTimeout, KDefaultCacheSize)); + TEST(r==KErrNone); + + SetTestStepResult(EPass); + + return TestStepResult(); +#endif + } + +CPerfTestDefectStep059633::CPerfTestDefectStep059633() + { + SetTestStepName(KPerfTestDefectStepDEF059633); + } + +TVerdict CPerfTestDefectStep059633::doTestStepL() + { +#ifndef __CENTREP_SERVER_CACHETEST__ + return EPass; +#else + SetTestStepResult(EFail); + + // Flush and disable cache for this test + TInt r; + r = SetGetParameters(TIpcArgs(EDisableCache)); + TEST(r==KErrNone); + + CleanupFileFromCDriveL(KUidLargeRepository); + CleanupFileFromCDriveL(KUidLargeCreRepository); + + CRepository* rep; + + TUint32 startFastCounter; + TUint64 fastCountertimeToOpenLargeIniRep; + TUint64 fastCountertimeToOpenLargeCreRep; + TUint64 fastCountertimeToOpenXLargeInis; + TUint64 fastCountertimeToOpenXLargeCres; + + //========================================================================================= + //Single .ini - opening + startFastCounter = User::FastCounter(); + User::LeaveIfNull(rep = CRepository::NewLC(KUidLargeRepository)); + fastCountertimeToOpenLargeIniRep = FastCountToMicrosecondsInInt(User::FastCounter() - startFastCounter); + Logger().WriteFormat(_L("Time to open text based rep from ROM = %lu microseconds\n\n"), fastCountertimeToOpenLargeIniRep); + CleanupStack::PopAndDestroy(rep); + + //========================================================================================= + //KNumOfAttempts .ini + + startFastCounter = User::FastCounter(); + for (TInt i=0; i fastCountertimeToOpenLargeCreRep); + TEST(fastCountertimeToOpenXLargeInis > fastCountertimeToOpenXLargeCres); + TEST(averageFastCounterTimeToOpenIni > averageFastCounterTimeToOpenCre); +#endif + + //========================================================================================== + //benchmarks - open + #if !defined(__WINS__) && !defined(__WINSCW__) + #ifdef _DEBUG + const TInt64 KOpenCreTime = 150000; //armv5 debug + #else + const TInt64 KOpenCreTime = 75000; //armv5 urel + #endif + + TEST(averageFastCounterTimeToOpenCre < KOpenCreTime); + + #endif//!defined(__WINS__) && !defined(__WINSCW__) + + //======================================================================== + + CleanupFileFromCDriveL(KUidLargeRepository); + CleanupFileFromCDriveL(KUidLargeCreRepository); + + // Enable cache + r = SetGetParameters(TIpcArgs(EEnableCache, KDefaultEvictionTimeout, KDefaultCacheSize)); + TEST(r==KErrNone); + + SetTestStepResult(EPass); + + return TestStepResult(); +#endif + }