lowlevellibsandfws/pluginfw/TestExecute/EComPerfTest/src/Te_EComPerfTestStep.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 16:27:53 +0300
branchRCL_3
changeset 75 254b651f304e
parent 0 e4d67989cc36
permissions -rw-r--r--
Revision: 201039 Kit: 201041

// 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:
// Base test step for ECom performance tests
// 
//

/**
 @file
 @internalComponent
*/

#include <ecom/ecom.h>
#include "Te_EComPerfTestStep.h"
#include "EcomTestUtils.h"

#ifdef __ECOM_SERVER_PERFORMANCE__
const TInt KOneSecond = 1000000;
#endif

CEComPerfTestBase::CEComPerfTestBase(const TDesC& aStepName)
	{
	SetTestStepName(aStepName);
	}

CEComPerfTestBase::~CEComPerfTestBase()
	{
	}

/**
 Set-up ECom performance tests by starting the ECom server and then waiting to allow start-up to complete
*/
TVerdict CEComPerfTestBase::doTestStepPreambleL()
	{
#ifdef __ECOM_SERVER_PERFORMANCE__
	//Open the ecom session which in turn should start the ecom server.
	//Next, wait to make sure that startup is complete before requesting timing data.
	//Finally, get rid of the ecom session.
	REComSession& ecomSession = REComSession::OpenL();
	CleanupClosePushL(ecomSession);
	User::After(KOneSecond*15); //delay for 15 sec to ensure ecom start up has completed
	CleanupStack::PopAndDestroy(&ecomSession);

#endif
	return TestStepResult() ;
	}

TVerdict CEComPerfTestBase::doTestStepPostambleL()
	{
 	return TestStepResult() ;
	}

/**
 Fails the test if the measured time is less than the maximum time
 This test is only enabled on hardware non-DP release builds
 (testing for DP builds was disabled due to inconsistency of the results)
 @param aActualTime The measured time
 @param aMaxTime The maximum time
 */
#if defined(__EPOC32__) && !defined(_DEBUG)
void CEComPerfTestBase::CheckPerformance(TReal aActualTime, TReal aMaxTime, TPtrC aTimingMessage)
	{
	THardwareConfiguration hardware_configuration = EComTestUtils::GetHardwareConfiguration();
    if ( hardware_configuration != EPlatformH4NANDDP )
		{	
		if (aActualTime < aMaxTime)
			{
			INFO_PRINTF4(_L("Performance test for [%S] passed (Measured time [%f] mSecs, Time limit [%f] mSecs\n"), &aTimingMessage, aActualTime, aMaxTime);
			}
		else
			{
			INFO_PRINTF4(_L("Performance test for [%S] FAILED (Measured time [%f] mSecs, Time limit [%f] mSecs\n"), &aTimingMessage, aActualTime, aMaxTime);
			}
		TEST(aActualTime < aMaxTime);		
		}
	else
#else
void CEComPerfTestBase::CheckPerformance(TReal aActualTime, TReal /*aMaxTime*/, TPtrC aTimingMessage)
	{
#endif
		/*Stub implementation used when performance testing is disabled
		Performance testing is not enabled on debug, emulator and DP builds*/
		INFO_PRINTF3(_L("Performance check disabled. Measured time for [%S] is [%f] mSecs\n"), &aTimingMessage, aActualTime);
	}


#ifdef __ECOM_SERVER_PERFORMANCE__

_LIT(KUnknownDesC, "Unknown");
_LIT(KCreateDesC, "Create");
_LIT(KListDesC, "List");
_LIT(KNotifyOnChangeDesC, "Notify On Change");
_LIT(KCancelNotifyOnChangeDesC, "Cancel Notify On Change");
_LIT(KCollectImplementationsDesC, "Collect Implementations");
_LIT(KListExtendedInterfacesDesC, "List extended interfaces");
/**
 Converts a client request type into a string description of the enumeration
 @param aClientRequest The client request to retrieve a string description of
 @return The string description of aClientRequest
 */
TPtrC CEComPerfTestBase::ClientRequestTypeName(TEComClientRequestType aClientRequestType)
	{
	switch (aClientRequestType)
		{
		case EEComCreateRequestType:
			return (TDesC&)KCreateDesC;
		case EEComListRequestType:
			return (TDesC&)KListDesC;
		case EEComNotifyOnChangeRequestType:
			return (TDesC&)KNotifyOnChangeDesC;
		case EEComCancelNotifyOnChangeRequestType:
			return (TDesC&)KCancelNotifyOnChangeDesC;
		case EEComCollectImplementationsRequestType:
			return (TDesC&)KCollectImplementationsDesC;
		case EEComListExtendedInterfacesRequestType:
			return (TDesC&)KListExtendedInterfacesDesC;
		default:
			return (TDesC&)KUnknownDesC;
		}
	}

_LIT(KCriticalStaticDesC, "CriticalStatic");
_LIT(KCriticalDynamicDesC, "CriticalDynamic");
_LIT(KNonCriticalDesC, "NonCritical");
/**
 Converts a startup state into a string description of the enumeration
 @param aStartupStateIdentifier The startup state to retrieve a string description of
 @return The string description of aStartupStateIdentifier
 */
TPtrC CEComPerfTestBase::StartupStateName(TStartupStateIdentifier aStartupStateIdentifier)
	{
	switch (aStartupStateIdentifier)
		{
		case EStartupStateCriticalStatic:
			return (TDesC&)KCriticalStaticDesC;
		case EStartupStateCriticalDynamic:
			return (TDesC&)KCriticalDynamicDesC;
		case EStartupStateNonCritical:
			return (TDesC&)KNonCriticalDesC;
		default:
			return (TDesC&)KUnknownDesC;
		}
	}
#endif // #ifdef __ECOM_SERVER_PERFORMANCE__

#ifndef __ECOM_SERVER_PERFORMANCE__
void CEComPerfTestBase::MacroNotDefinedError()
	{
	SetTestStepResult(EFail);
	INFO_PRINTF1(_L("***Please define __ECOM_SERVER_PERFORMANCE__ macro to run this test ***"));
	}
#endif // #ifndef __ECOM_SERVER_PERFORMANCE__