traceservices/tracefw/integ_test/ost/TEF/te_ostv2integsuite_performance/src/te_perftracetester.cpp
changeset 0 08ec8eefde2f
child 23 26645d81f48d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traceservices/tracefw/integ_test/ost/TEF/te_ostv2integsuite_performance/src/te_perftracetester.cpp	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,138 @@
+// Copyright (c) 2007-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:
+// ost Performance Tests ost Call.
+//
+
+
+
+/**
+ @file te_perftracetester.cpp
+ @internalTechnology
+ @prototype
+*/
+
+
+#include <opensystemtrace.h>
+#ifndef __KERNEL_MODE__
+#include <e32base.h> //for cleanupstack
+#endif
+#include "te_perftracetester.h"
+#include "te_instrumentationpoints.h"
+#include "te_perfcacheflush.h"
+#include "te_d32perfdrv.h"
+#include "timer/te_perfusertimer.h"
+
+
+
+
+TInt TUptTraceTester::SendTraceL(const TApiRunConfig& aApiRunConfig,  TApiRunResults& aApiRunResults) //pass the configuration here
+	{
+ 	TInt error = KErrNone;
+ 	if(TUptTraceCalls::IsKernelTrace(aApiRunConfig.iApiId))
+ 		{
+		#ifndef __KERNEL_MODE__
+			RUptUTrace utracedriver;
+		//update with test on whether compiled of not!!
+			error = utracedriver.Open();
+			if(!error)
+				{
+				error = utracedriver.TestUptUtrace(aApiRunConfig, aApiRunResults);
+				}
+			utracedriver.Close();
+		#endif
+ 		}
+ 	else
+ 		{
+ 		//it's a user side trace, call it directly
+		error = TUptTraceCalls::DoSendTraceL(aApiRunConfig, aApiRunResults);
+ 		}
+	return error;
+	}
+
+TInt TUptTraceTester::TimeTraceL(const TApiRunConfig& aApiRunConfig,  TApiRunResults& aApiRunResults) //pass the configuration here
+	{
+	TInt error = KErrNone;
+	TUint32 callResults[KNumberOfTraceCallIterations];
+	for(TInt i = 0; i < KNumberOfTraceCallIterations; i++)
+		{
+		error = TimeTraceCall(aApiRunConfig, aApiRunResults);
+		callResults[i] = aApiRunResults.iApiTraceTime;
+		}
+	TUint32 total = 0;
+	for(TInt i = 0; i < KNumberOfTraceCallIterations; i++)
+		total += callResults[i];
+	aApiRunResults.iApiTraceTime = total / KNumberOfTraceCallIterations; //average
+	return error;
+	}
+
+TInt TUptTraceTester::TimeTraceCall(const TApiRunConfig& aApiRunConfig,  TApiRunResults& aApiRunResults)
+	{
+	TInt error = KErrNone;
+ 	if(TUptTraceCalls::IsKernelTrace(aApiRunConfig.iApiId))
+ 		{
+		RUptUTrace utracedriver;
+		error = utracedriver.Open();
+		if(!error)
+			{
+			error = utracedriver.TimeUptUtrace(aApiRunConfig, aApiRunResults);
+			}
+		utracedriver.Close();
+ 		}
+ 	else
+ 		{
+ 		error = TimeUsersideTraceCalls(aApiRunConfig, aApiRunResults);
+ 		}
+
+ 	return error;
+	}
+
+TInt TUptTraceTester::TimeUsersideTraceCalls(const TApiRunConfig& aApiRunConfig,  TApiRunResults& aApiRunResults) //pass the configuration here
+	{
+		aApiRunResults.iTimeCount = 0;
+		CUptTimer timer;
+		TInt error = timer.StartBackgroundTimer();
+		if(!error)
+			{
+			while(!timer.IsTimerExpired())
+				{
+				if(aApiRunConfig.iDoFlush) //i.e. if we want the non-cache results
+					Te_Flush_The_Cache();	//ignoring error? //will be KErrNotSupported for winscw in any case
+				error = TUptTraceTester::SendTraceL(aApiRunConfig, aApiRunResults);
+
+				timer.IncreaseCount();
+				}
+			aApiRunResults.iApiTraceTime = timer.FinalTime();
+			aApiRunResults.iTimeCount = timer.FinalCount();
+			}
+
+		return error;
+	}
+
+
+TInt TUptTraceTester::GenerateEvpDataField(const TInt aDataSize, TInt8* aData)
+	{
+	TInt err=KErrNone;
+
+	for(TInt i=0;i<aDataSize/8;i++)
+		{
+		*aData=0x00;
+		aData++;
+		}
+	for(TInt i=0;i<aDataSize/8;i++)
+		aData--;
+	return err;
+	}
+
+
+//eof