--- a/stif/TestInterface/src/TestModuleIf.cpp Thu Jul 15 20:25:38 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1746 +0,0 @@
-/*
-* Copyright (c) 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: This file contains TestModuleIf implementation.
-*
-*/
-
-// INCLUDE FILES
-#include <e32svr.h>
-#include "StifTFwIfProt.h"
-#include "StifTestInterface.h"
-#include "TestServerModuleIf.h"
-#include "StifTestModule.h"
-#include "TestThreadContainer.h"
-#include "STIFMeasurement.h"
-
-// EXTERNAL DATA STRUCTURES
-// None
-
-// EXTERNAL FUNCTION PROTOTYPES
-// None
-
-// CONSTANTS
-// None
-
-// MACROS
-// Debugging is enabled with next define
-#define __TRACING_ENABLED
-#ifdef __TRACING_ENABLED
-#define __RDEBUG(p) RDebug::Print p
-#else
-#define __RDEBUG(p)
-#endif
-
-// LOCAL CONSTANTS AND MACROS
-// None
-
-// MODULE DATA STRUCTURES
-// None
-
-// LOCAL FUNCTION PROTOTYPES
-// None
-
-// FORWARD DECLARATIONS
-// None
-
-// ==================== LOCAL FUNCTIONS =======================================
-
-/*
--------------------------------------------------------------------------------
-
- DESCRIPTION
-
- TDesOverflowHandler class contains a simple overflow handler implementation.
-
--------------------------------------------------------------------------------
-*/
-class TDesOverflowHandler : public TDes16Overflow
- {
- public:
- TDesOverflowHandler( CTestModuleIf* aModuleIf,
- const TInt aPriority,
- const TDesC& aDefinition)
- {
- iModuleIf = aModuleIf;
- iPriority = aPriority;
- iDefinition = aDefinition;
- }
-
- void Overflow(TDes16& /*aDes*/ )
- {
- }
-
- CTestModuleIf* iModuleIf;
- TInt iPriority;
- TStifInfoName iDefinition;
- };
-
-/*
--------------------------------------------------------------------------------
-
- DESCRIPTION
-
- This module contains the implementation of CTestModuleIf class
- member functions.
-
--------------------------------------------------------------------------------
-*/
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: CTestModuleIf
-
- Description: Default constructor
-
- C++ default constructor can NOT contain any code, that
- might leave.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestModuleIf::CTestModuleIf( CTestThreadContainer* aTestExecution ) :
- iTestExecution( aTestExecution )
- {
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: ConstructL
-
- Description: Symbian OS second phase constructor
-
- Symbian OS default constructor can leave.
-
- Parameters: CTestExecution* aTestExecution: in: Pointer to TestExecution
- CTestModuleBase* aTestModule: in: Pointer to TestModule
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CTestModuleIf::ConstructL( CTestModuleBase* aTestModule )
- {
-
- if ( aTestModule->iTestModuleIf != NULL)
- {
- delete aTestModule->iTestModuleIf;
- aTestModule->iTestModuleIf = NULL;
- }
- aTestModule->iTestModuleIf = this;
-
- iIsRebootReady = EFalse;
- iStoreStateCounter = 0;
-
- // Used to "resets" iTestCaseResults array
- iAllowTestCaseResultsCount = 0;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: NewL
-
- Description: Two-phased constructor.
-
- Parameters: CTestExecution* aTestExecution: in: Pointer to TestExecution
- CTestModuleBase* aTestModule: in: Pointer to TestModule
-
- Return Values: CTestModuleIf object.
-
- Errors/Exceptions: Leaves if memory allocation fails
- Leaves if ConstructL leaves
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CTestModuleIf* CTestModuleIf::NewL( CTestThreadContainer* aExecutionSession,
- CTestModuleBase* aTestModule )
- {
-
- CTestModuleIf* self =
- new (ELeave) CTestModuleIf( aExecutionSession );
-
- CleanupStack::PushL( self );
- self->ConstructL( aTestModule );
-
- CleanupStack::Pop();
-
- return self;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: ~CTestModuleIf
-
- Description: Destructor
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CTestModuleIf::~CTestModuleIf()
- {
- iTestExecution = NULL;
-
- // Used to "resets" iTestCaseResults array
- iAllowTestCaseResultsCount = 0;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: Printf
-
- Description: Printing
-
- Printf is used to provide different information up to the UI
- that can be then printed e.g. to the Console Screen.
- The priority can be used in the UI to decide if the information
- received from the Test DLL will be discarded or not in
- the different performance situations. The priority is also
- used in the Test DLL server and in the Test Engine to queue
- the Printf responses.
- This method is implemented in Test DLL Server and the Test DLL
- can call it to provide printable information to the UI.
-
- Parameters: const TInt aPriority: in:
- Importance of the returned information
- const TDesC& aDefinition: in:
- Definition of data to be printed
- TRefByValue<const TDesC> aFmt: in: Printed data
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CTestModuleIf::Printf( const TInt aPriority,
- const TDesC& aDefinition,
- TRefByValue<const TDesC> aFmt,
- ...
- )
- {
-
- if( !IsServerAlive() )
- {
- return;
- }
-
- VA_LIST list;
- VA_START(list,aFmt);
- TName aBuf;
- RBuf buf;
- TInt ret = buf.Create(1024);
- if(ret != KErrNone)
- {
- __RDEBUG((_L("STF: Printf: Buffer creation failed [%d]"), ret));
- return;
- }
-
- // Cut the description length
- TInt len = aDefinition.Length();
- if ( len > KMaxInfoName )
- {
- len = KMaxInfoName;
- }
-
- TStifInfoName shortDescription = aDefinition.Left(len);
-
- // Create overflow handler
- TDesOverflowHandler overFlowHandler (this, aPriority, shortDescription);
-
- // Parse parameters
- buf.AppendFormatList(aFmt, list, &overFlowHandler);
-
- if(buf.Length() == 0)
- {
- __RDEBUG((_L("STF: Printf: Unable to prepare print buffer (probably printed string is too long)")));
- }
-
- // Print
- aBuf.Copy(buf.Left(aBuf.MaxLength()));
- buf.Close();
-
- iTestExecution->DoNotifyPrint( aPriority, shortDescription, aBuf );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: Event
-
- Description: Event control.
-
- Event function is used to control and use the event system.
- TEventIf &aEvent encapsulates the request type and
- the event name, see StifTestEventInterface.h for more information.
- This method is implemented in Test DLL Server and the Test DLL
- can call it to control the event system.
-
- Parameters: TEventIf& aEvent: in: Event command
-
- Return Values: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::Event( TEventIf& aEvent )
- {
-
- if( !IsServerAlive() )
- {
- return KErrGeneral;
- }
-
- // All event commands are handled in testserver and testengine
- return iTestExecution->DoNotifyEvent( aEvent );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: Event
-
- Description: Event control.
-
- Asynchronous version of event control function.
- It is used to control and use the event system asynchronously.
- TEventIf &aEvent encapsulates the request type and
- the event number, see StifTestEventInterface.h for more information.
- This method is implemented in Test DLL Server and the Test DLL
- can call it to control the event system.
-
- Parameters: TEventIf& aEvent: in: Event command
- TRequestStatus& aStatus: in: Request status parameter
-
- Return Values: None.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CTestModuleIf::Event( TEventIf& aEvent, TRequestStatus& aStatus )
- {
- TInt ret = KErrNone;
-
- if( !IsServerAlive() )
- {
- __RDEBUG( (_L("iTestExecution not initialised")));
- ret = KErrGeneral;
- }
- else
- {
- aStatus = KRequestPending;
-
- // All event commands are handled in testserver and testengine
- ret = iTestExecution->DoNotifyEvent( aEvent, &aStatus );
- }
- if( ret != KErrNone )
- {
- TRequestStatus* rs = &aStatus;
- User::RequestComplete( rs, ret );
- }
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: CancelEvent
-
- Description: Cancel asynchronous event control call.
-
- Parameters: TEventIf& aEvent: in: Event command to be cancelled.
- const TRequestStatus* aStatus: in:
- Pointer to TRequestStatus parameter that is cancelled
-
- Return Values: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::CancelEvent( TEventIf& aEvent,
- TRequestStatus* aStatus )
- {
- if( !IsServerAlive() )
- {
- __RDEBUG( (_L("iTestExecution not initialised")));
- return KErrGeneral;
- }
-
- // All event commands are handled in testserver and testengine
- iTestExecution->CancelEvent( aEvent, aStatus );
-
- return KErrNone;
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: SetExitReason
-
- Description: Set exit reason
-
- Parameters: const TExitReason aExitReason in: Exit reason
- const TInt aExitCode in: Exit code
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CTestModuleIf::SetExitReason( const CTestModuleIf::TExitReason aExitReason,
- const TInt aExitCode )
-
- {
-
- if( !IsServerAlive() )
- {
- __RDEBUG( (_L("iTestExecution not initialised")));
- return;
- }
-
- iTestExecution->SetExitReason( aExitReason, aExitCode );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: RemoteSend
-
- Description: RemoteSend is used to send control protocol messages to slaves
- (e.g. another phone, call box, ...).
-
- Parameters: const TDesC& aRemoteMsg: in:
- Remote command protocol message
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::RemoteSend( const TDesC& aRemoteMsg )
- {
-
- if( !IsServerAlive() )
- {
- __RDEBUG( ( _L("iTestExecution not initialised") ) );
- return KErrNotReady;
- }
-
- TParams params;
- params.aRemoteMsgConstRef = &aRemoteMsg;
-
- TRequestStatus status = KRequestPending;
-
- // Forward
- iTestExecution->DoRemoteReceive( EStifCmdSend, params,
- aRemoteMsg.Length(), status );
-
- User::WaitForRequest( status );
-
- return status.Int();
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: RemoteReceive
-
- Description: RemoteReceive is used to receive control protocol messages to
- slaves (e.g. another phone, call box, ...).
-
- Parameters: const TDesC& aRemoteMsg: in:
- Remote command protocol message
- TRequestStatus& aStatus: in: Request status parameter
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CTestModuleIf::RemoteReceive( TDes& aRemoteMsg,
- TRequestStatus& aStatus )
- {
- aStatus = KRequestPending;
- if( !IsServerAlive() )
- {
- __RDEBUG( ( _L("iTestExecution not initialised") ) );
- TRequestStatus* rs = &aStatus;
- User::RequestComplete( rs, KErrNotReady );
- }
-
- TParams params;
- params.aRemoteMsgRef = &aRemoteMsg;
-
- iTestExecution->DoRemoteReceive( EStifCmdReceive, params,
- aRemoteMsg.Length(), aStatus );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: RemoteReceiveCancel
-
- Description: RemoteReceiveCancel is used to cancel RemoteReceive.
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CTestModuleIf::RemoteReceiveCancel()
- {
- if( !IsServerAlive() )
- {
- __RDEBUG( ( _L("iTestExecution not initialised") ) );
- return;
- }
-
- // Forward
- iTestExecution->DoRemoteReceiveCancel();
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: Reboot
-
- Description: Start a reboot operation.
-
- Parameters: TInt aType: in: Reboot type
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: KErrNotReady returned if iTestExecution is NULL.
- KErrNotReady returned if reboot not allowed(Store state
- not called).
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::Reboot( TInt aType )
- {
- if ( !IsServerAlive() )
- {
- __RDEBUG( ( _L( "iTestExecution not initialised" ) ) );
- return KErrNotReady;
- }
- if( !iIsRebootReady )
- {
- __RDEBUG( ( _L( "Reboot operation not ready" ) ) );
- return KErrNotReady;
- }
-
-/* switch( aType )
- {
- case EDefaultReset:
- __RDEBUG( ( _L( "Reboot, type default" )) );
- break;
- case EKernelReset:
- __RDEBUG( ( _L( "Reboot, type KernelReset" )) );
- break;
- case EDeviceReset0:
- __RDEBUG( ( _L( "Reboot, type Reset 0" )) );
- break;
- case EDeviceReset1:
- __RDEBUG( ( _L( "Reboot, type Reset 1" )) );
- break;
- case EDeviceReset2:
- __RDEBUG( ( _L( "Reboot, type Reset 2" )) );
- break;
- case EDeviceReset3:
- __RDEBUG( ( _L( "Reboot, type Reset 3" )) );
- break;
- case EDeviceReset4:
- __RDEBUG( ( _L( "Reboot, type Reset 4" )) );
- break;
- case EDeviceReset5:
- __RDEBUG( ( _L( "Reboot, type Reset 5" )) );
- break;
- default:
- __RDEBUG( ( _L( "Reboot type %d not supported" ), aType ) );
- return KErrNotSupported;
- }
-*/
-
- TParams params;
- TRebootParams rebootParams;
-
- params.aRebootType = &rebootParams;
- rebootParams.aType = ( TRebootType )aType;
-
- TRequestStatus status = KRequestPending;
-
- // Forward
- iTestExecution->DoRemoteReceive( EStifCmdReboot, params, sizeof( aType ), status );
-
- User::WaitForRequest( status );
-
- return status.Int();
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: StoreState
-
- Description: Stores the current state before reboot.
-
- Parameters: TInt aCode: in: Reboot releated integer value.
- TName& aName: in: Reboot related string value.
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: KErrNotReady returned if iTestExecution is NULL.
- KErrOverflow returned if aName length is over TName.
- KErrInUse returned if method is called more than once.
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::StoreState( TInt aCode, TName& aName )
- {
- iStoreStateCounter++; // Store state counter
-
- if ( !IsServerAlive() )
- {
- __RDEBUG( ( _L( "iTestExecution not initialised" ) ) );
- return KErrNotReady;
- }
- // Check aName length
- if ( aName.Length() > KMaxName )
- {
- __RDEBUG( ( _L( "CTestModuleIf::StoreState(): aName length is not valid" ) ) );
- return KErrOverflow;
- }
- // Only one store state call may be done
- if( iStoreStateCounter > 1 )
- {
- __RDEBUG( ( _L( "Store state allready called" ) ) );
- return KErrInUse;
- }
-
- TParams params;
- TRebootStateParams rebootStateParams;
- params.aRebootState = &rebootStateParams;
- rebootStateParams.aCode = aCode;
- rebootStateParams.aName = aName;
-
- TRequestStatus status = KRequestPending;
-
- // Forward
- iTestExecution->DoRemoteReceive( EStifCmdStoreState, params,
- sizeof( TRebootStateParams), status );
-
- User::WaitForRequest( status );
-
- // If store state is done successfully reboot operation is allowed
- if( status.Int() == KErrNone )
- {
- iIsRebootReady = ETrue;
- }
-
- return status.Int();
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: GetStoredState
-
- Description: Get saved store information after the reboot.
-
- Parameters: TInt aCode: inout: Get reboot releated integer value.
- TName& aName: inout: Get reboot related string value.
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: KErrNotReady returned if iTestExecution is NULL.
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::GetStoredState( TInt& aCode, TName& aName )
- {
- if( !IsServerAlive() )
- {
- __RDEBUG( ( _L( "iTestExecution not initialised" ) ) );
- return KErrNotReady;
- }
-
- TInt code;
- TName name;
-
- TParams params;
- TGetRebootStoredParamsRef getRebootStoredParamsRef( code, name );
-
- params.aRebootStoredRef = &getRebootStoredParamsRef;
-
- TRequestStatus status = KRequestPending;
-
- // Forward
- iTestExecution->DoRemoteReceive( EStifCmdGetStoredState, params,
- sizeof( TRebootStateParams), status );
-
- User::WaitForRequest( status );
-
- // Return results if getting state is done without error
- if(status.Int() == KErrNone)
- {
- aCode = code;
- aName = name;
- }
-
- return status.Int();
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: SetBehavior
-
- Description: Set test case behavior.
-
- Parameters: TInt aCode: inout: Get reboot releated integer value.
- TName& aName: inout: Get reboot related string value.
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: KErrNotReady returned if iTestExecution is NULL.
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::SetBehavior( TTestBehavior aType, TAny* aPtr )
- {
-
- if( !IsServerAlive() )
- {
- return KErrGeneral;
- }
-
- // All event commands are handled in testserver and testengine
- return iTestExecution->SetBehavior( aType, aPtr );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: StifMacroError
-
- Description: STIF TF's macros. Saves information for later use.
-
- Parameters: TInt aMacroType: in: Macro type(0:TL, 1:T1L, 2:T2L, etc.)
- const TText8* aFile: in: Uses __FILE__ macro and this includes
- path and file name. Maximun length for this is
- KStifMacroMaxFile. If length is more then cutted from left.
- char* aFunction: in: Uses __FUNCTION__ macro and this includes
- function name. Maximun length for this is
- KStifMacroMaxFunction. If length is more then cutted from
- rigth.
- TInt aLine: in: Uses __LINE__ macro and includes line number.
- TInt aResult: in: Result from called operations.
- TInt aExpected1: in: Users expected result.
- TInt aExpected2: in: Users expected result.
- TInt aExpected3: in: Users expected result.
- TInt aExpected4: in: Users expected result.
- TInt aExpected5: in: Users expected result.
-
- Return Values: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::StifMacroError( TInt aMacroType,
- const TText8* aFile,
- const char* aFunction,
- TInt aLine,
- TInt aResult,
- TInt aExpected1,
- TInt aExpected2,
- TInt aExpected3,
- TInt aExpected4,
- TInt aExpected5 )
- {
- if( !IsServerAlive() )
- {
- return KErrGeneral;
- }
-
- return iTestExecution->StifMacroError( aMacroType, aFile,
- aFunction, aLine,
- aResult, aExpected1,
- aExpected2, aExpected3,
- aExpected4, aExpected5 );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: ServerAlive
-
- Description: Get saved store information after the reboot.
-
- Parameters: TInt aCode: inout: Get reboot releated integer value.
- TName& aName: inout: Get reboot related string value.
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: KErrNotReady returned if iTestExecution is NULL.
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-TBool CTestModuleIf::IsServerAlive()
- {
-
- if( iTestExecution == NULL )
- {
- __RDEBUG( ( _L( "iTestExecution not initialised" ) ) );
- // Execution not initialized
- return EFalse;
- }
-
- return ETrue;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: AddInterferenceThread
-
- Description:
-
- Parameters: RThread aSTIFTestInterference: in: Handle to RThread
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions:
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-TInt CTestModuleIf::AddInterferenceThread( RThread aSTIFTestInterference )
- {
- // Add thread to Array. Via array can handle test interference thread's
- // kill in panic etc. cases
- return iTestExecution->AddInterferenceThread( aSTIFTestInterference );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: RemoveInterferenceThread
-
- Description:
-
- Parameters: RThread aSTIFTestInterference: in: Handle to RThread
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions:
-
- Status: Proposal
-
--------------------------------------------------------------------------------
-*/
-TInt CTestModuleIf::RemoveInterferenceThread( RThread aSTIFTestInterference )
- {
- // Remove thread from Array.Test interference thread is stopped and killed
- // successfully
- return iTestExecution->RemoveInterferenceThread( aSTIFTestInterference );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: HandleMeasurementProcess
-
- Description: With this can be stored information about test measurement
- to TestServer space.
-
- Parameters: RProcess aTestMeasurement: in: Handle to RProcess
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions:
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CTestModuleIf::HandleMeasurementProcess(
- CSTIFTestMeasurement::TStifMeasurementStruct aSTIFMeasurementInfo )
- {
- // Add process to Array. Via array can handle test measurement process's
- // kill in panic etc. cases
- return iTestExecution->HandleMeasurementProcess( aSTIFMeasurementInfo );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: GetMeasurementOptions
-
- Description: Get measurement option(s) given from initialization file etc.
-
- Parameters: TInt& aOptions: inout: Get measurement option(s)
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: KErrNotReady returned if iTestExecution is NULL.
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::GetMeasurementOptions( TInt& aOptions )
- {
- if( !IsServerAlive() )
- {
- __RDEBUG( ( _L( "iTestExecution not initialised" ) ) );
- return KErrNotReady;
- }
-
- TParams params;
- TGetMeasurementOptionsRef getMeasurementOptionsRef( aOptions );
- params.aMeasurementOption = &getMeasurementOptionsRef;
-
- TRequestStatus status = KRequestPending;
-
- // Forward
- iTestExecution->DoRemoteReceive( EStifCmdMeasurement, params,
- sizeof( TGetMeasurementOptions ), status );
-
- User::WaitForRequest( status );
-
- aOptions = getMeasurementOptionsRef.iOptions;
-
- return status.Int();
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: SetAllowResult
-
- Description: Use with TAL, TA1L, TA2L, TA3L, TA4L and TA5L macros to allow
- results.
- Set test case allow result given by user. In TestScripter
- cases allow result can set by 'allownextresult' or
- 'allowerrorcodes' keywords. In Normal and Hardcoded test
- modules allow result can be set with this method, reset should
- be done with ResetAllowResult method.
-
- Parameters: TInt aResult: in: Result value to be appended.
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::SetAllowResult( TInt aResult )
- {
- for( TInt a = 0; a < iAllowTestCaseResultsCount; a++ )
- {
- // Check that result is not given already
- if ( iTestCaseResults[a] == aResult )
- {
- return KErrNone;
- }
- }
- // If values are given more that allow(see KSTIFMacroResultArraySize).
- // Array starts from 0...9 -> 10 => 10th should fail
- if( iAllowTestCaseResultsCount >= KSTIFMacroResultArraySize )
- {
- __RDEBUG( (
- _L( "STIF macro's SetAllowResult() allow only %d results, fails with %d" ),
- KSTIFMacroResultArraySize, KErrOverflow ) );
- return KErrOverflow;
- }
-
- // New result
- iAllowTestCaseResultsCount++;
- iTestCaseResults[iAllowTestCaseResultsCount-1] = aResult;
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: CheckAllowResult
-
- Description: This is mainly used by STIF's TAL-TA5L macros internally.
- Check is macros result allowed result.
-
- Parameters: TInt aResult: in: Result value to be checked.
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::CheckAllowResult( TInt aResult )
- {
- // Check is result allowed
- for( TInt a = 0; a < iAllowTestCaseResultsCount; a++ )
- {
- if ( iTestCaseResults[a] == aResult )
- {
- // Result is allow
- __RDEBUG( ( _L( "STIF TAL-TA5L macro's result check. Test case result[%d] allowed" ),
- aResult ) );
- return KErrNone;
- }
- }
-
- __RDEBUG( (
- _L( "STIF TAL-TA5L macro's result check. Test case result[%d] not allowed" ),
- aResult ) );
- // No match with allow result
- return KErrGeneral;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: ResetAllowResult
-
- Description: Use with TAL, TA1L, TA2L, TA3L, TA4L and TA5L macros to reset
- allowed results.
- Reset allow result(s) given with SetAllowResult. In
- TestScripter cases this will be called automatically by STIF.
- Normal and Hardcoded cases this should be called by user.
-
- Parameters: None.
-
- Return Values: TInt: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::ResetAllowResult()
- {
- // Used to "resets" iTestCaseResults array
- iAllowTestCaseResultsCount = 0;
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: StopExecution
-
- Description: Causes that test case is going to be cancelled.
-
- Parameters: None
-
- Return Values: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CTestModuleIf::StopExecution(TStopExecutionType aType, TInt aCode)
- {
-
- //Check parameters
- if((aType == EOk) && (aCode != KErrNone))
- {
- return KErrArgument;
- }
- else if((aType != EOk) && (aCode == KErrNone))
- {
- return KErrArgument;
- }
-
- //Check server
- if(!IsServerAlive())
- {
- return KErrGeneral;
- }
-
- //Everything is ok, we can continue with processing command
- _LIT(KStopExecution, "StopExecution");
- const TInt KPrintPriority = 30;
-
- switch(aType)
- {
- case EOk:
- Printf(KPrintPriority, KStopExecution, _L("***Test case PASSED***\n\n"));
- break;
- case EFail:
- Printf(KPrintPriority, KStopExecution, _L("***Test case FAILED***\n\n"));
- break;
- case EAbort:
- Printf(KPrintPriority, KStopExecution, _L("***Test case KILLED***\n\n"));
- break;
- default:
- return KErrNotFound;
- }
-
- TStopExecutionCommandParams params;
- params.iType = aType;
- params.iCode = aCode;
- __RDEBUG((_L("CTestModuleIf::StopExecution(): type [%d] code [%d]"), TInt(aType), aCode));
-
- TStopExecutionCommandParamsPckg pckg(params);
-
- TInt res = Command(EStopExecution, pckg);
- return res;
- }
-
-/*
-------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: SendTestModuleVersion
-
- Description: SendTestModuleVersion method is used to pass version of test module
-
-------------------------------------------------------------------------------
- */
-EXPORT_C TInt CTestModuleIf::SendTestModuleVersion(TVersion aVersion, TFileName aModuleName)
- {
- if( aModuleName.Length() == 0 )
- {
- return KErrArgument;
- }
-
- //Check server
- if(!IsServerAlive())
- {
- return KErrGeneral;
- }
-
- const TInt KPrintPriority = 30;
- _LIT(KVersion ,"SendTestModuleVersion");
- Printf(KPrintPriority, KVersion, _L("Sending test module version"));
-
- TSendTestModuleVesionCommandParams params;
- params.iMajor = aVersion.iMajor;
- params.iMinor = aVersion.iMinor;
- params.iBuild = aVersion.iBuild;
- params.iTestModuleName = aModuleName;
-
- TSendTestModuleVesionCommandParamsPckg pckg(params);
- TInt res = Command( ESendTestModuleVersion, pckg );
- return res;
- }
-
-
-/*
-------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: SendTestModuleVersion
-
- Description: SendTestModuleVersion method is used to pass version of test module.
- This version uses three parameters to enable the overloading of version with
- two parameters. The version with two params has params passed by value which
- is incorrect. The "old" version (with two parameters) is left here not to cause
- binary break. Only this version (with three parameters) should be used.
-
-------------------------------------------------------------------------------
- */
-EXPORT_C TInt CTestModuleIf::SendTestModuleVersion(TVersion& aVersion, const TDesC& aModuleName, TBool /*aNewVersion*/)
- {
- if( aModuleName.Length() == 0 )
- {
- return KErrArgument;
- }
-
- //Check server
- if(!IsServerAlive())
- {
- return KErrGeneral;
- }
-
- const TInt KPrintPriority = 30;
- _LIT(KVersion ,"SendTestModuleVersion");
- Printf(KPrintPriority, KVersion, _L("Sending test module version"));
-
- TSendTestModuleVesionCommandParams params;
- params.iMajor = aVersion.iMajor;
- params.iMinor = aVersion.iMinor;
- params.iBuild = aVersion.iBuild;
- params.iTestModuleName = aModuleName;
-
- TSendTestModuleVesionCommandParamsPckg pckg(params);
- TInt res = Command( ESendTestModuleVersion, pckg );
- return res;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: Command
-
- Description: Sends specific command to TestServer.
-
- Parameters: aCommand - command to be send
-
- Return Values: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-TInt CTestModuleIf::Command(TCommand aCommand, const TDesC8& aParamsPckg)
- {
- TInt res = KErrNone;
-
- if( !IsServerAlive() )
- {
- return KErrGeneral;
- }
-
- switch(aCommand)
- {
- case EStopExecution:
- iTestExecution->DoNotifyCommand(aCommand, aParamsPckg);
- break;
- case ESendTestModuleVersion:
- iTestExecution->DoNotifyCommand(aCommand, aParamsPckg);
- break;
- default:
- __RDEBUG((_L("Command [%d] not recognized."), aCommand));
- }
-
- return res;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: GetTestCaseTitleL
-
- Description: Returns title of current test case.
-
- Parameters: aCommand - command to be send
-
- Return Values: Symbian OS error code.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C void CTestModuleIf::GetTestCaseTitleL(TDes& aTestCaseTitle)
- {
- iTestExecution->GetTestCaseTitleL(aTestCaseTitle);
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: GetTestCaseArguments
-
- Description: Returns test case arguments.
-
- Parameters: none
-
- Return Values: test case arguments.
-
- Errors/Exceptions: None
-
- Status: proposal
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C const TDesC& CTestModuleIf::GetTestCaseArguments() const
- {
- return iTestExecution->GetTestCaseArguments();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: UITesting
-
- Description: Gets information if it is UI test or not
-
- Parameters: none
-
- Return Values: True if it is UI test, in other case it returns false.
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TBool CTestModuleIf::UITesting()
- {
- return iTestExecution->UITesting();
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestModuleIf
-
- Method: GetUiEnvProxy
-
- Description: Gets UiEnvProxy
-
- Parameters: none
-
- Return Values: Pointer to UiEnvProxy
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CUiEnvProxy* CTestModuleIf::GetUiEnvProxy()
- {
- return iTestExecution->GetUiEnvProxy();
- }
-
-// ================= OTHER EXPORTED FUNCTIONS =================================
-
-
-/*
--------------------------------------------------------------------------------
-
- DESCRIPTION
-
- This module contains the implementation of CSTIFTestMeasurement class
- member functions.
-
--------------------------------------------------------------------------------
-*/
-
-// ================= MEMBER FUNCTIONS =========================================
-
-/*
--------------------------------------------------------------------------------
-
- Class: CSTIFTestMeasurement
-
- Method: CSTIFTestMeasurement
-
- Description: Default constructor
-
- C++ default constructor can NOT contain any code, that
- might leave.
-
- Parameters: CTestModuleBase* aTestModuleBase: in: Pointer to STIF
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFTestMeasurement::CSTIFTestMeasurement( CTestModuleBase* aTestModuleBase ) :
- iTestModuleBase( aTestModuleBase ),
- iMeasurementOption( 0 )
- {
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CSTIFTestMeasurement
-
- Method: ConstructL
-
- Description: Symbian OS second phase constructor
-
- Symbian OS default constructor can leave.
-
- Parameters: TSTIFMeasurement aType: in: Measurement type
- const TDesC& aConfigurationInfo: in: Configuration issues
-
- Return Values: None
-
- Errors/Exceptions: Leaves if HandleMeasurementProcess returns error code
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-void CSTIFTestMeasurement::ConstructL( TSTIFMeasurementType aType,
- const TDesC& aConfigurationInfo )
- {
- // aType into struct here. This is compared to
- iMeasurementStruct.iMeasurementType = aType;
-
- // Check that measurement is not disabled(This is given from UI level or
- // from TestFramework.ini file)
- TInt ret( 0 );
- ret = iTestModuleBase->TestModuleIf().GetMeasurementOptions(
- iMeasurementOption );
- if( ret != KErrNone )
- {
- __RDEBUG( ( _L( "GetMeasurementOptions() return an error[%d]" ), ret ) );
- User::Leave( ret );
- }
-
- // Check that measurement is not disabled
- if( ( iMeasurementOption & EDisableAll ) == EDisableAll )
- {
- __RDEBUG( _L( "Measurement disable option [KStifMeasurementDisableAll] is given by user" ) );
- return;
- }
- if( ( ( iMeasurementOption & EMeasurement01 ) == EMeasurement01 ) && aType == KStifMeasurementPlugin01 )
- {
- __RDEBUG( _L( "Measurement disable option [KStifMeasurement01] is given by user" ) );
- return;
- }
- if( ( ( iMeasurementOption & EMeasurement02 ) == EMeasurement02 ) && aType == KStifMeasurementPlugin02 )
- {
- __RDEBUG( _L( "Measurement disable option [KStifMeasurement02] is given by user" ) );
- return;
- }
- if( ( ( iMeasurementOption & EMeasurement03 ) == EMeasurement03 ) && aType == KStifMeasurementPlugin03 )
- {
- __RDEBUG( _L( "Measurement disable option [KStifMeasurement03] is given by user" ) );
- return;
- }
- if( ( ( iMeasurementOption & EMeasurement04 ) == EMeasurement04 ) && aType == KStifMeasurementPlugin04 )
- {
- __RDEBUG( _L( "Measurement disable option [KStifMeasurement04] is given by user" ) );
- return;
- }
- if( ( ( iMeasurementOption & EMeasurement05 ) == EMeasurement05 ) && aType == KStifMeasurementPlugin05 )
- {
- __RDEBUG( _L( "Measurement disable option [KStifMeasurement05] is given by user" ) );
- return;
- }
- if( ( ( iMeasurementOption & EBappea ) == EBappea ) && aType == KStifMeasurementBappeaProfiler )
- {
- __RDEBUG( _L( "Measurement disable option [KStifMeasurementBappea] is given by user" ) );
- return;
- }
-
- iMeasurementStruct.iConfigurationInfo = aConfigurationInfo;
- iMeasurementStruct.iMeasurementOperation = KMeasurementNew;
- iMeasurementStruct.iPointerToMeasurementModule = iTestModuleBase;
-
- // Move measurement execution initialization forward to TestServer.
- User::LeaveIfError( iTestModuleBase->iTestModuleIf->HandleMeasurementProcess(
- iMeasurementStruct ) );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CSTIFTestMeasurement
-
- Method: NewL
-
- Description: Two-phased constructor.
-
- Parameters: CTestModuleBase* aTestModuleBase: in: Pointer to STIF.
- TSTIFMeasurement aType: in: Measurement type.
- const TDesC& aConfigurationInfo: in: Configuration info.
-
- Return Values: CSTIFTestMeasurement object.
-
- Errors/Exceptions: Leaves if memory allocation fails
- Leaves if ConstructL leaves
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C CSTIFTestMeasurement* CSTIFTestMeasurement::NewL(
- CTestModuleBase* aTestModuleBase,
- TSTIFMeasurementType aType,
- const TDesC& aConfigurationInfo )
- {
- CSTIFTestMeasurement* self =
- new (ELeave) CSTIFTestMeasurement( aTestModuleBase );
-
- CleanupStack::PushL( self );
- self->ConstructL( aType, aConfigurationInfo );
-
- CleanupStack::Pop();
-
- return self;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CSTIFTestMeasurement
-
- Method: ~CSTIFTestMeasurement
-
- Description: Destructor
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-CSTIFTestMeasurement::~CSTIFTestMeasurement()
- {
- // None
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CSTIFTestMeasurement
-
- Method: Start
-
- Description: Start commant for measurement.
-
- Parameters: None
-
- Return Values: Symbian error code
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CSTIFTestMeasurement::Start()
- {
- // Check that measurement is not disabled
- if( iMeasurementOption == iMeasurementStruct.iMeasurementType )
- {
- __RDEBUG( ( _L( "Measurement with type[%d] is disabled by user" ), iMeasurementOption ) );
- // Cannot return error code because this causes problems in
- // TestScripter and TestCombiner error handling. Now testing continue
- // without measurement.
- return KErrNone;
- }
-
- iMeasurementStruct.iMeasurementOperation = KMeasurementStart;
-
- // Move measurement start execution forward to TestServer.
- return iTestModuleBase->iTestModuleIf->HandleMeasurementProcess(
- iMeasurementStruct );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CTestMeasurement
-
- Method: Stop
-
- Description: Stop command for measurement.
-
- Parameters: None
-
- Return Values: Symbian error code
-
- Errors/Exceptions: None
-
- Status: Approved
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CSTIFTestMeasurement::Stop()
- {
- // Check that measurement is not disabled
- if( iMeasurementOption == iMeasurementStruct.iMeasurementType )
- {
- __RDEBUG( ( _L( "Measurement with type[%d] is disabled by user" ), iMeasurementOption ) );
- // Cannot return error code because this causes problems in
- // TestScripter and TestCombiner error handling. Now testing continue
- // without measurement.
- return KErrNone;
- }
-
- iMeasurementStruct.iMeasurementOperation = KMeasurementStop;
-
- // Move measurement stop execution forward to TestServer.
- return iTestModuleBase->iTestModuleIf->HandleMeasurementProcess(
- iMeasurementStruct );
-
- }
-
-// End of File