persistentstorage/centralrepository/test/testexecute/performance/src/TE_FindPerfTestStep.cpp
branchRCL_3
changeset 24 cc28652e0254
parent 0 08ec8eefde2f
--- /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 <centralrepository.h>
+#include "centralrepositoryinternal.h"
+#include <hal.h>
+#include <hal_data.h>
+
+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<TUint32> 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();
+	}
+