diff -r 7fdc9a71d314 -r 8ad140f3dd41 stif/TestEngine/src/TestEngineClient.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/stif/TestEngine/src/TestEngineClient.cpp Wed Oct 13 16:17:58 2010 +0300 @@ -0,0 +1,852 @@ +/* +* 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 +#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& aTestCaseBuffer : Test case array + + Return Values: TInt: Symbian OS error code + + Errors/Exceptions: None + + Status: Approved + +------------------------------------------------------------------------------- +*/ +EXPORT_C TInt RTestEngine::GetTestCases( + CFixedFlatArray& 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 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: RunTestCase + + Description: Run a test case asynchronously. + + Parameters: TFullTestResultPckg& aTestResult : TFullTestResult : + Test Result package + const TDesC& aTestCaseArgs: Test case arguments + 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, + const TDesC& aTestCaseArgs, + TRequestStatus& aStatus ) + { + TIpcArgs args( &aTestResult, &aTestCaseArgs, 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& 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