persistentstorage/centralrepository/test/testexecute/performance/src/TE_PerfTestCompareStep.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_PerfTestCompareStep.cpp	Wed Sep 01 12:39:58 2010 +0100
@@ -0,0 +1,110 @@
+// 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_PerfTestCompareStep.h"
+#include "t_cenrep_helper.h"
+#include <centralrepository.h>
+#include "srvreqs.h"
+#include "srvdefs.h"
+#include "cachemgr.h"
+
+//--------------------------------
+// class CPerfTestCompareStep
+//--------------------------------
+
+CPerfTestCompareStep::CPerfTestCompareStep() 
+	{
+	SetTestStepName(KPerfTestCompareStep);
+	}
+
+// doTestStepL
+// Implement the pure virtual function.
+// Comapre the results of previous timing tests
+TVerdict CPerfTestCompareStep::doTestStepL()
+	{
+#ifndef __CENTREP_SERVER_CACHETEST__
+	return EPass;
+#else	
+    SetTestStepResult(EFail);
+
+	// To make sure future tests in this harness run under caching
+	TInt r = SetGetParameters(TIpcArgs(EEnableCache, KDefaultEvictionTimeout, KDefaultCacheSize));
+
+	TPtrC resultSection1;
+	_LIT(KSharedName1, "shared_name_1");
+	TInt bRet = GetStringFromConfig(ConfigSection(), KSharedName1, resultSection1);
+	TESTL(bRet==1);
+
+	TPtrC resultSection2;
+	_LIT(KSharedName2, "shared_name_2");
+	bRet = GetStringFromConfig(ConfigSection(), KSharedName2, resultSection2);
+	TESTL(bRet==1);
+	
+	TBuf<KMaxFileName> sharedString; 
+		
+	ReadSharedDataL(resultSection1, sharedString);
+	
+	ReadResults(iResults1, sharedString);
+	sharedString.Zero();
+	ReadSharedDataL(resultSection2, sharedString);
+	ReadResults(iResults2, sharedString);
+	
+	TESTL(iResults1.Count()==iResults2.Count());
+	
+	for(TInt i=0; i<iResults1.Count(); i++)
+		{
+		TESTL(iResults1[i].iUseCount==iResults2[i].iUseCount);
+#if defined __WINS__ || defined __WINSCW__
+		// This test is deactivated for emulator builds.
+      		// Emulator build runs produce inconsistent results when running this 
+	      	// test on ONB machines, probably because of uncontrolled CPU and disk 
+      		// activity on the host system caused by previous build and test commands
+#else	
+		// Expect an increase in performance
+		TESTL(iResults1[i].iSumElapsedTicks<iResults2[i].iSumElapsedTicks);
+#endif
+		}
+	
+	SetTestStepResult(EPass);		
+	
+	return TestStepResult();
+#endif //__CENTREP_SERVER_CACHETEST__	
+	}
+
+void CPerfTestCompareStep::ReadResults(RArray<TSummary>& aArray, TBuf<KMaxFileName>& aString) 
+	{
+	TLex analyse(aString);
+	
+	TInt items;
+	TSummary summary;	
+
+	for(TInt i=0; i<2; i++)
+		{
+		analyse.Val(items);
+		analyse.SkipSpaceAndMark();
+		for(TInt i=0;i<items;i++)
+			{
+			analyse.SkipCharacters();		
+			TPtrC token = analyse.MarkedToken();
+			summary.iName.Copy(token);
+			analyse.SkipSpaceAndMark();
+			analyse.Val(summary.iUseCount);
+			analyse.SkipSpaceAndMark();
+			analyse.Val(summary.iSumElapsedTicks,EDecimal);
+			analyse.SkipSpaceAndMark();
+			aArray.Append(summary);
+			}
+		}
+	}