diff -r 26645d81f48d -r cc28652e0254 persistentstorage/centralrepository/test/testexecute/performance/src/TE_FindPerfTestStep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/centralrepository/test/testexecute/performance/src/TE_FindPerfTestStep.cpp Wed Sep 01 12:39:58 2010 +0100 @@ -0,0 +1,103 @@ +// 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_FindPerfTestStep.h" +#include "TE_PerfTestUtilities.h" +#include +#include "centralrepositoryinternal.h" +#include +#include + +using namespace NCentralRepositoryConstants; + +const TUid KUidFindPerfTestRepositorySmTxt = { 0x00000105 }; + +CFindPerfTestStep::CFindPerfTestStep() + { + SetTestStepName(KFindPerfTestName); + } + +// doTestStepL +// This test fetches the memory data collected by +// CentRep server, processes it and reports the result. +TVerdict CFindPerfTestStep::doTestStepL() + { + SetTestStepResult(EFail); + + CRepository* repository = NULL; + TRAPD(res, repository = CRepository::NewL(KUidFindPerfTestRepositorySmTxt)); + TESTL(res == KErrNone); + TESTL(repository != NULL); + CleanupStack::PushL(repository); + + //if the KCentRepFindBufSize has been increased to a value more then 16 then test + //repository "KUidFindPerfTestRepositorySmTxt" needs to be updated otherwise this + //test will start failing. In this case the repository should be updated to have + //more entries. + TESTL(KCentRepFindBufSize<=16); + + RArray foundIds; + TUint32 accumulatedTicks = 0; + for(TInt j=1; j<=KCentRepFindBufSize; j++) + { + accumulatedTicks = 0; + for(TInt i=0; i<100; i++) + { + TInt r = KErrNone; + TUint32 startTick = User::FastCounter(); + r = repository->FindEqL(0, 0, j, foundIds); + TUint32 endTick = User::FastCounter(); + + //check for errors + TESTL(r == KErrNone); + //check that number of found ids is as expected + TESTL(foundIds.Count() == j); + + accumulatedTicks += endTick - startTick; + } + + INFO_PRINTF3(_L("Total time spent to find settings of count %d is %f[ms]"), j, FastCountToMillisecondsInReal(accumulatedTicks)); + } + + //now run it one more time for settings of count more than KCentRepFindBufSize + for(TInt j=1; j<=KCentRepFindBufSize; j++) + { + accumulatedTicks = 0; + for(TInt i=0; i<100; i++) + { + TInt r = KErrNone; + TUint32 startTick = User::FastCounter(); + r = repository->FindNeqL(0, 0, j, foundIds); + TUint32 endTick = User::FastCounter(); + + //check for errors + TESTL(r == KErrNone); + //check that number of found ids is as expected + TESTL(foundIds.Count() > KCentRepFindBufSize); + + accumulatedTicks += endTick - startTick; + } + + INFO_PRINTF3(_L("Total time spent to find settings of count %d is %f[ms]"), foundIds.Count(), FastCountToMillisecondsInReal(accumulatedTicks)); + } + + CleanupStack::PopAndDestroy(repository); + repository = NULL; + + SetTestStepResult(EPass); + + return TestStepResult(); + } +