debugsrv/runmodedebug/tsrc/rm_debug/performance_test/t_rmdebug_performance_test.h
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
// All rights reserved.
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     7
//
hgs
parents:
diff changeset
     8
// Initial Contributors:
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    10
//
hgs
parents:
diff changeset
    11
// Contributors:
hgs
parents:
diff changeset
    12
//
hgs
parents:
diff changeset
    13
// Description:
hgs
parents:
diff changeset
    14
// Tests performance of run mode debug device component   
hgs
parents:
diff changeset
    15
// 
hgs
parents:
diff changeset
    16
//
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef RMDEBUG_PERFORMANCE_H
hgs
parents:
diff changeset
    19
#define RMDEBUG_PERFORMANCE_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <u32hal.h>
hgs
parents:
diff changeset
    22
#include <f32file.h>
hgs
parents:
diff changeset
    23
#include <rm_debug_api.h>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
/* Config for t_rmdebug_app.exe: 
hgs
parents:
diff changeset
    26
 * -f1: prefetch abort,
hgs
parents:
diff changeset
    27
 * -d0: zero delay before crash
hgs
parents:
diff changeset
    28
 * -p: priority of test target main thread
hgs
parents:
diff changeset
    29
 */    
hgs
parents:
diff changeset
    30
_LIT(KTargetOptions,"-f1 -d0 -p%d");
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// Default number of test runs
hgs
parents:
diff changeset
    33
const TInt KNumOfTestRuns = 7;
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
/**
hgs
parents:
diff changeset
    36
 @Class TAgentEventInfo
hgs
parents:
diff changeset
    37
 
hgs
parents:
diff changeset
    38
 Class for gathering event data from the run-mode driver
hgs
parents:
diff changeset
    39
 */
hgs
parents:
diff changeset
    40
class TAgentEventInfo
hgs
parents:
diff changeset
    41
{
hgs
parents:
diff changeset
    42
public:
hgs
parents:
diff changeset
    43
    TAgentEventInfo() : iEventInfoBuf(iEventInfo) {}
hgs
parents:
diff changeset
    44
   
hgs
parents:
diff changeset
    45
public:
hgs
parents:
diff changeset
    46
    // This is the underlying class for event interaction with the Run Mode debug API 
hgs
parents:
diff changeset
    47
    Debug::TEventInfo          iEventInfo;
hgs
parents:
diff changeset
    48
    
hgs
parents:
diff changeset
    49
    TPckg<Debug::TEventInfo>  iEventInfoBuf; 
hgs
parents:
diff changeset
    50
};
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
/**
hgs
parents:
diff changeset
    53
  @Class CRunModeAgent
hgs
parents:
diff changeset
    54
  
hgs
parents:
diff changeset
    55
  The basic run mode agent
hgs
parents:
diff changeset
    56
  */
hgs
parents:
diff changeset
    57
class CRunModeAgent : public CBase
hgs
parents:
diff changeset
    58
	{
hgs
parents:
diff changeset
    59
public:
hgs
parents:
diff changeset
    60
    
hgs
parents:
diff changeset
    61
    enum displayHelp {EDontDisplayHelp =0, EDisplayHelp };
hgs
parents:
diff changeset
    62
    
hgs
parents:
diff changeset
    63
	static CRunModeAgent* NewL();
hgs
parents:
diff changeset
    64
	~CRunModeAgent();
hgs
parents:
diff changeset
    65
	void ClientAppL();  
hgs
parents:
diff changeset
    66
	Debug::RSecuritySvrSession&  DebugDriver() { return iServSession; };	
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
private:
hgs
parents:
diff changeset
    69
	void ConstructL();
hgs
parents:
diff changeset
    70
	void StartTest();
hgs
parents:
diff changeset
    71
	void TestDriverPerformance();
hgs
parents:
diff changeset
    72
	void RunBenchMarkTest();
hgs
parents:
diff changeset
    73
	TInt ParseCommandLine();
hgs
parents:
diff changeset
    74
	
hgs
parents:
diff changeset
    75
	void Attach();
hgs
parents:
diff changeset
    76
	void Detach();
hgs
parents:
diff changeset
    77
	    
hgs
parents:
diff changeset
    78
	void HandleEvent(Debug::TEventInfo& aEventInfo);
hgs
parents:
diff changeset
    79
	TInt LaunchProcessL(RProcess& aProcess, const TDesC& aExeName, const TDesC& aCommandLine);
hgs
parents:
diff changeset
    80
	void DisplayUsage();
hgs
parents:
diff changeset
    81
	void GetNanoTickPeriod();
hgs
parents:
diff changeset
    82
	void SetEventAction();
hgs
parents:
diff changeset
    83
	void SetDefaultParamValues();
hgs
parents:
diff changeset
    84
	
hgs
parents:
diff changeset
    85
	void CalculatePerformance();
hgs
parents:
diff changeset
    86
	void GetEvent();
hgs
parents:
diff changeset
    87
	void GetStartTime();
hgs
parents:
diff changeset
    88
	TInt GetTimeInMs();
hgs
parents:
diff changeset
    89
	
hgs
parents:
diff changeset
    90
private:
hgs
parents:
diff changeset
    91
	
hgs
parents:
diff changeset
    92
	/** 
hgs
parents:
diff changeset
    93
	  Used for test cases interacting with the RMDBG only
hgs
parents:
diff changeset
    94
	 */
hgs
parents:
diff changeset
    95
	TRequestStatus iStatus;   
hgs
parents:
diff changeset
    96
	
hgs
parents:
diff changeset
    97
	/**
hgs
parents:
diff changeset
    98
	  The nanokernel tick period in MS
hgs
parents:
diff changeset
    99
	*/
hgs
parents:
diff changeset
   100
	TInt iTickPeriodMs;
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
	/*
hgs
parents:
diff changeset
   103
	 * Handle to DSS
hgs
parents:
diff changeset
   104
	 */
hgs
parents:
diff changeset
   105
	Debug::RSecuritySvrSession iServSession;
hgs
parents:
diff changeset
   106
	
hgs
parents:
diff changeset
   107
	/**
hgs
parents:
diff changeset
   108
	 Array to store tick counts between an iteration of a test run
hgs
parents:
diff changeset
   109
	*/
hgs
parents:
diff changeset
   110
	RArray<TUint> iTimeDifs;
hgs
parents:
diff changeset
   111
	
hgs
parents:
diff changeset
   112
	/**
hgs
parents:
diff changeset
   113
	 Object to gather event data from RMDBG
hgs
parents:
diff changeset
   114
	*/
hgs
parents:
diff changeset
   115
	TAgentEventInfo iSEventInfo;
hgs
parents:
diff changeset
   116
		
hgs
parents:
diff changeset
   117
	/**
hgs
parents:
diff changeset
   118
	  Flag to indicate test target has crashed
hgs
parents:
diff changeset
   119
	*/
hgs
parents:
diff changeset
   120
	TBool ilaunchCompleted;
hgs
parents:
diff changeset
   121
	
hgs
parents:
diff changeset
   122
	/*
hgs
parents:
diff changeset
   123
	 * RProperty to get counter value from test app
hgs
parents:
diff changeset
   124
	 */
hgs
parents:
diff changeset
   125
	RProperty iIntegerProperty;
hgs
parents:
diff changeset
   126
		
hgs
parents:
diff changeset
   127
	struct PerformanceTestParams
hgs
parents:
diff changeset
   128
	    {
hgs
parents:
diff changeset
   129
	    enum TestOptions {EAttachAll=0,EAttachExe, EBenchMarkTest };
hgs
parents:
diff changeset
   130
	    TUint iTestType;
hgs
parents:
diff changeset
   131
	    TUint iNumOfTestRuns;
hgs
parents:
diff changeset
   132
	    TUint iTestTargetPriority;
hgs
parents:
diff changeset
   133
	    TUint iEvents;
hgs
parents:
diff changeset
   134
	    TInt iCountEnd;
hgs
parents:
diff changeset
   135
	    TInt iCountStart;
hgs
parents:
diff changeset
   136
	    TUint iDriver;
hgs
parents:
diff changeset
   137
	    } iParams;
hgs
parents:
diff changeset
   138
	    
hgs
parents:
diff changeset
   139
	};
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
#endif // RMDEBUG_PERFORMANCE_H
hgs
parents:
diff changeset
   142