--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stif/TestEngine/src/TestEngineClient.cpp Tue Feb 02 01:57:15 2010 +0200
@@ -0,0 +1,821 @@
+/*
+* 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 module contains implementation of
+* RTestEngineServer class member functions.
+*
+*/
+
+// INCLUDE FILES
+#include <e32svr.h>
+#include "TestEngineClient.h"
+#include "TestEngineCommon.h"
+
+// EXTERNAL DATA STRUCTURES
+// None
+
+// EXTERNAL FUNCTION PROTOTYPES
+// None
+
+// CONSTANTS
+// None
+
+// MACROS
+// None
+
+// LOCAL CONSTANTS AND MACROS
+// None
+
+// MODULE DATA STRUCTURES
+// None
+
+// LOCAL FUNCTION PROTOTYPES
+// None
+
+// FORWARD DECLARATIONS
+// None
+
+// ==================== LOCAL FUNCTIONS =======================================
+// None
+
+// ================= MEMBER FUNCTIONS =========================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngineServer
+
+ Method: Connect
+
+ Description: Connect method creates new RTestEngineServer session.
+
+ RTestEngineServer session is used to manage the test case execution.
+
+ Parameters: None
+
+ Return Values: TInt KErrNone : TestEngineServer created successfully
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngineServer::Connect()
+ {
+ TInt ret = StartEngine();
+ if ( ret == KErrNone)
+ {
+ ret = CreateSession( KTestEngineName, Version() );
+ }
+ return ret;
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngineServer
+
+ Method: Version
+
+ Description: Return client side version number from RTestEngineServer.
+
+ Parameters: None
+
+ Return Values: TVersion : Version number from RTestEngineServer
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TVersion RTestEngineServer::Version() const
+ {
+ return ( TVersion( KTestEngineMajorVersionNumber,
+ KTestEngineMinorVersionNumber, KTestEngineBuildVersionNumber ) );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngineServer
+
+ Method: Close
+
+ Description: Closes the RTestEngineServer session.
+
+ Parameters: None
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestEngineServer::Close()
+ {
+ // Check that server is connected
+ if ( Handle() != 0 )
+ {
+ TIpcArgs args( TIpcArgs::ENothing, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ SendReceive( ETestEngineServerCloseSession, args );
+ }
+ RSessionBase::Close();
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ DESCRIPTION
+
+ This module contains implementation of RTestEngine class member functions.
+
+-------------------------------------------------------------------------------
+*/
+
+// ================= MEMBER FUNCTIONS =========================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: Open
+
+ Description: Open creates a subsession to TestEngine.
+
+ Parameters: RTestEngineServer& aServer : Handle to Test Engine Server
+ const TFileName& aIniFile : Ini file to be used for
+ initialization of the Test Engine
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::Open( RTestEngineServer& aServer,
+ const TFileName& aIniFile )
+ {
+ TIpcArgs args( &aIniFile, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return CreateSubSession( aServer, ETestEngineCreateSubSession, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: Close
+
+ Description: Close the RTestEngine subsession.
+
+ Parameters: None
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestEngine::Close()
+ {
+ RSubSessionBase::CloseSubSession( ETestEngineCloseSubSession );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: SetAttribute
+
+ Description: Sets attributes to Test Framework
+
+ Parameters: TAttribute aAttribute: in: Attribute type
+ const TDesC& aValue: in: Attribute value
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Proposal
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::SetAttribute( TAttribute aAttribute,
+ const TDesC& aValue )
+ {
+ TIpcArgs args( aAttribute, &aValue, TIpcArgs::ENothing );
+ return SendReceive( ETestEngineSetAttribute, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: AddTestModule
+
+ Description: Load dynamically a new Test Module to the Test Framework.
+
+ Parameters: const TName& aTestModule : Name of the Test Module to be added
+ const TFileName& aIniFile : Initialization file of Test Module
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::AddTestModule( const TName& aTestModule,
+ const TFileName& aIniFile )
+ {
+ TIpcArgs args( &aTestModule, &aIniFile, TIpcArgs::ENothing );
+ return SendReceive( ETestEngineAddTestModule, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: RemoveTestModule
+
+ Description: Remove the existing Test Module from the Test Framework.
+
+ Parameters: const TName& aTestModule : Name of the Test Module to be
+ removed
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::RemoveTestModule( const TName& aTestModule )
+ {
+ TIpcArgs args( &aTestModule, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return SendReceive( ETestEngineRemoveTestModule, args );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: AddConfigFile
+
+ Description: Add new config file to Test Module.
+
+ Parameters: const TName& aTestModule : Name of Test Module where the config
+ file will be added
+ const TFileName& aConfigFile : Name of config file to be added
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::AddConfigFile( const TName& aTestModule,
+ const TFileName& aConfigFile )
+ {
+ TIpcArgs args( &aTestModule, &aConfigFile, TIpcArgs::ENothing );
+ return SendReceive( ETestEngineAddConfigFile, args );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: RemoveConfigFile
+
+ Description: Remove config file from Test Module.
+
+ Parameters: const TName& aTestModule : Test Module name
+ const TFileName& aConfigFile : Name of config file to be removed
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Proposal
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::RemoveConfigFile( const TName& aTestModule,
+ const TFileName& aConfigFile )
+ {
+ TIpcArgs args( &aTestModule, &aConfigFile, TIpcArgs::ENothing );
+ return SendReceive( ETestEngineRemoveConfigFile, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: EnumerateTestCases
+
+ Description: First phase of two-phased test case query operation.
+
+ Test cases are inquired by two-phased operation calling first the
+ EnumerateTestCases method and then the GetTestCases.
+
+ Parameters: TInt& aCount : Test case count
+ TRequestStatus& aStatus : Request status
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestEngine::EnumerateTestCases( TCaseCount& aCount,
+ TRequestStatus& aStatus )
+ {
+ TIpcArgs args( &aCount, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ SendReceive( ETestEngineEnumerateTestCases, args, aStatus );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: GetTestCases
+
+ Description: Second phase of two-phased test case query operation.
+
+ GetTestCases retrieves test cases from Test Modules to aTestCases that is
+ a list consisting of several TTestInfo objects.
+
+ Parameters: CArrayFixFlat<TTestInfo>& aTestCaseBuffer : Test case array
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::GetTestCases(
+ CFixedFlatArray<TTestInfo>& aTestCaseBuffer )
+ {
+ // Construct and send message
+ TIpcArgs args( &aTestCaseBuffer.Des(), TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return SendReceive( ETestEngineGetTestCases, args );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: ErrorNotification
+
+ Description: Obtains error notifications from Test Engine and Test
+ Servers via Test Engine.
+
+ Parameters: TTestProgressPckg& aError : Error package
+ TRequestStatus& aStatus : Request status
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestEngine::ErrorNotification( TErrorNotificationPckg& aError,
+ TRequestStatus& aStatus )
+ {
+ TIpcArgs args( &aError, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ SendReceive( ETestEngineErrorNotification, args, aStatus );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: CancelAsyncRequest
+
+ Description: Asynchronous requests can be canceled by this function.
+
+ Parameters: TInt aReqToCancel : Request to be cancelled
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::CancelAsyncRequest( TInt aReqToCancel )
+ {
+ TIpcArgs args( aReqToCancel, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return SendReceive( ETestEngineCancelAsyncRequest, args );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: Event
+
+ Description: Used to control STIF Test Framework event system.
+
+ Parameters: TEventIfPckg& aEvent : in : Event information
+ TRequestStatus& aStatus : in : Request status
+
+ Return Values: TInt KErrNone : No errors occurred
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestEngine::Event( TEventIfPckg& aEvent,
+ TRequestStatus& aStatus )
+ {
+ TIpcArgs args( &aEvent, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ SendReceive( ETestEngineEvent, args, aStatus );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: OpenLoggerSession
+
+ Description: Open created subsession to TestEngine.
+
+ Parameters: RTestEngineServer& aServer : Handle to Test Engine Server
+ TLoggerSettings& aLoggerSettings: in: Logger's overwrite struct
+
+ Return Values: TInt KErrNone: TestEngine opened and initialized
+ succesfully
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::OpenLoggerSession( RTestEngineServer& aServer,
+ TLoggerSettings& aLoggerSettings )
+ {
+ // Package
+ TPckg<TLoggerSettings> loggerSettingsPckg( aLoggerSettings );
+
+ TIpcArgs args( &loggerSettingsPckg, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ // Goes to CTestEngine's DispatchMessageL() method
+ CreateSubSession( aServer, ETestEngineLoggerSettings, args );
+ RSubSessionBase::CloseSubSession( ETestEngineCloseLoggerSettings );
+
+ return KErrNone;
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestEngine
+
+ Method: AddTestCaseResultToTestReport
+
+ Description: Sends info about executed test cases to test engine, which
+ will forward it to test report.
+ This is used when after reboot UIStore reads info about
+ executed test cases before reboot.
+
+ Parameters: TTestIngo& aTestInfo : test info structure
+ TFullTestResult& aTestResult: test result structure
+ TInt aError: error
+
+ Return Values: TInt error code returned by test engine
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestEngine::AddTestCaseResultToTestReport(const TTestInfo& aTestInfo,
+ const TFullTestResult& aTestResult,
+ const TInt aError)
+ {
+ // Create packages
+ TTestInfoPckg testInfoPckg(aTestInfo);
+ TFullTestResultPckg fullTestResultPckg(aTestResult);
+
+ // Create argument list
+ TIpcArgs args(&testInfoPckg, &fullTestResultPckg, aError);
+
+ // Send it to test engine
+ TInt res = SendReceive(ETestEngineReportTestCase, args);
+
+ return res;
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ DESCRIPTION
+
+ This module contains implementation of RTestCase class member functions.
+
+-------------------------------------------------------------------------------
+*/
+
+// ================= MEMBER FUNCTIONS =========================================
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: Open
+
+ Description: Open creates a subsession to TestCase.
+
+ Parameters: RTestEngineServer& aServer : Handle to Test Engine Server
+ const TTestInfoPckg& aTestCaseInfo : TTestInfoPckg : Test info
+ package
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestCase::Open( RTestEngineServer& aServer,
+ const TTestInfoPckg& aTestCaseInfo )
+ {
+ TIpcArgs args( &aTestCaseInfo, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return CreateSubSession( aServer, ETestCaseCreateSubSession, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: Close
+
+ Description: Close the RTestCase subsession.
+
+ Parameters: None
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestCase::Close()
+ {
+ RSubSessionBase::CloseSubSession( ETestCaseCloseSubSession );
+
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: RunTestCase
+
+ Description: Run a test case asynchronously.
+
+ Parameters: TFullTestResultPckg& aTestResult : TFullTestResult :
+ Test Result package
+ TRequestStatus& aStatus : Request status
+
+ Return Values: TInt KErrNone : Test case could be run
+ Other error code : Reason the test case couldn't be run
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestCase::RunTestCase( TFullTestResultPckg& aTestResult,
+ TRequestStatus& aStatus )
+ {
+ TIpcArgs args( &aTestResult, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ SendReceive( ETestCaseRunTestCase, args, aStatus );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: Pause
+
+ Description: Pause suspends the execution of the test case.
+
+ Parameters: None
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestCase::Pause()
+ {
+ TIpcArgs args( TIpcArgs::ENothing, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return SendReceive( ETestCasePause, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: Resume
+
+ Description: Resume the test case suspended previously.
+
+ Parameters: None
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestCase::Resume()
+ {
+ TIpcArgs args( TIpcArgs::ENothing, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return SendReceive( ETestCaseResume, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: NotifyProgress
+
+ Description: Request different progress information from the test case.
+
+ Parameters: TTestProgressPckg& aProgress : TTestProgress : Test Progress
+ package
+ TRequestStatus& aStatus : Request status
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestCase::NotifyProgress( TTestProgressPckg& aProgress,
+ TRequestStatus& aStatus )
+ {
+ TIpcArgs args( &aProgress, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ SendReceive( ETestCaseNotifyProgress, args, aStatus );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: NotifyRemoteType
+
+ Description: Request remote commands information from the test case.
+
+ Parameters: TRemoteCommandPckg& aType: in: Request type
+ TRequestStatus& aStatus : Request status
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Proposal
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C void RTestCase::NotifyRemoteType( TStifCommandPckg& aType,
+ TPckg<TInt>& aMsgSize,
+ TRequestStatus& aStatus )
+ {
+ TIpcArgs args( &aType, &aMsgSize, TIpcArgs::ENothing );
+ SendReceive( ETestCaseNotifyRemoteType, args, aStatus );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: NotifyRemoteMsg
+
+ Description: Request remote commands information from the test case.
+
+ Parameters: TDesC& aMessage: in: Message buffer
+ TRemoteCmdType aType: in: Message direction
+
+ Return Values: None
+
+ Errors/Exceptions: None
+
+ Status: Proposal
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestCase::NotifyRemoteMsg( TDes8& aMessage,
+ TStifCommand aType )
+ {
+ TIpcArgs args( &aMessage, aType, aMessage.Length() );
+ return SendReceive( ETestCaseNotifyRemoteMsg, args );
+ }
+
+/*
+-------------------------------------------------------------------------------
+
+ Class: RTestCase
+
+ Method: CancelAsyncRequest
+
+ Description: Asynchronous requests can be canceled by this function.
+
+ Parameters: TInt aReqToCancel : Request to be cancelled
+
+ Return Values: TInt: Symbian OS error code
+
+ Errors/Exceptions: None
+
+ Status: Approved
+
+-------------------------------------------------------------------------------
+*/
+EXPORT_C TInt RTestCase::CancelAsyncRequest( TInt aReqToCancel )
+ {
+ TIpcArgs args( aReqToCancel, TIpcArgs::ENothing, TIpcArgs::ENothing );
+ return SendReceive( ETestCaseCancelAsyncRequest, args );
+ }
+
+// ================= OTHER EXPORTED FUNCTIONS =================================
+
+// None
+
+// End of File