diff -r 8116cc943311 -r 5c72fd91570d services/terminalmodeservice/tsrc/upnptmservertest/inc/tmservertest.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/services/terminalmodeservice/tsrc/upnptmservertest/inc/tmservertest.h Tue Aug 31 16:06:48 2010 +0300 @@ -0,0 +1,518 @@ +/** +* Copyright (c) 2010 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: +* +*/ + + +#ifndef TMSERVERTEST_H +#define TMSERVERTEST_H + +// INCLUDES +#include "StifTestModule.h" +#include "testtimer.h" +#include "discoverytesttimer.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// MACROS +#define TEST_MODULE_VERSION_MAJOR 0 +#define TEST_MODULE_VERSION_MINOR 0 +#define TEST_MODULE_VERSION_BUILD 0 + +// Logging path +_LIT( KTmServerTestLogPath, "\\logs\\testframework\\upnptmservertest\\" ); +// Log file +_LIT(KTmServerTestLogFile, "upnptmservertest.txt" ); +_LIT(KTmServerTestLogFileWithTitle, "upnptmservertest_[%S].txt" ); + +const TInt KIconWidth = 21; +const TInt KIconHeight = 21; +const TInt KIconDepth = 24; +const TInt KIconWidth1 = 88; +const TInt KIconHeight1 = 88; +const TInt KIconWidth2 = 36; +const TInt KIconHeight2 = 44; +const TInt KIconWidth3 = 60; +const TInt KIconHeight3 = 60; +const TInt KIconDepth1 = 12; +const TUint KProfileIdValue = 0; +const TUint KAppIdValue = 1; +const TUint KAppId1Value = 2; +const TUint KAppId2Value = 3; +const TUint KAppId3Value = 4; +const TUint KAppId4Value = 5; +const TUint KAppId5Value = 6; +const TUint KNonExistentAppIdValue = 7; +const TUint KNonExistentAppId1Value = 8; +const TUint KInvalidProfileIdValue = 9; +const TInt KInvalidAppIdValue = -1; + + +#define GETPTR & +#define ENTRY(str,func) {_S(str), GETPTR func,0,0,0} +#define FUNCENTRY(func) {_S(#func), GETPTR func,0,0,0} +#define OOM_ENTRY(str,func,a,b,c) {_S(str), GETPTR func,a,b,c} +#define OOM_FUNCENTRY(func,a,b,c) {_S(#func), GETPTR func,a,b,c} + +// FORWARD DECLARATIONS +class CTmServerTest; + +// DATA TYPES +// A typedef for function that does the actual testing, +// function is a type +typedef TInt (CTmServerTest::* TestFunction)(TTestResult&); + +// CLASS DECLARATION +/** +* An internal structure containing a test case name and +* the pointer to function doing the test +* +* @lib ?library +* @since ?Series60_version +*/ +class TCaseInfoInternal + { +public: + const TText* iCaseName; + TestFunction iMethod; + TBool iIsOOMTest; + TInt iFirstMemoryAllocation; + TInt iLastMemoryAllocation; + }; + +// CLASS DECLARATION + +/** +* A structure containing a test case name and +* the pointer to function doing the test +* +* @lib ?library +* @since ?Series60_version +*/ +class TCaseInfo + { +public: + TPtrC iCaseName; + TestFunction iMethod; + TBool iIsOOMTest; + TInt iFirstMemoryAllocation; + TInt iLastMemoryAllocation; + + TCaseInfo( const TText* a ) : iCaseName( (TText*) a ) + { + }; + + }; + + +class CDiscoverDevice : public CUpnpControlPoint + { +public: + // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CDiscoverDevice* NewL(CTmServerTest& aTmServerTest); + + /** + * Destructor. + */ + virtual ~CDiscoverDevice(); + +protected: + // Functions from base classes + + /** + * From CUpnpControlPoint State update handler. + */ + void StateUpdatedL( CUpnpService* aService ); + + /** + * From CUpnpControlPoint Device discovery handler. + */ + void DeviceDiscoveredL( CUpnpDevice* aDevice ); + + /** + * From CUpnpControlPoint Device dissappear handler. + */ + void DeviceDisappearedL( CUpnpDevice* aDevice ); + + /** + * From CUpnpControlPoint Action response handler function. + */ + void ActionResponseReceivedL( CUpnpAction* aAction ); + + /** + * From CUpnpControlPoint HTTP message handler function. + */ + void HttpResponseReceivedL( CUpnpHttpMessage* aMessage ); + + + TInt TmServerStateUpdated( CUpnpDevice& aDevice, CUpnpService*& aService ); + + +public: + + /** + * C++ default constructor. + */ + CDiscoverDevice(CTmServerTest& aTmServerTest ); + + void ConstructL(); + TInt LaunchAppActionL( TInt aAppId, TInt aProfileId ); + TInt TerminateAppActionL( TInt aAppId, TInt aProfileId ); + TInt GetAppStatusActionL( TInt aAppId ); + TInt GetAppListActionL(const TDesC8& aAppListFilter ,TInt aProfileId ); + TInt SetClientProfileActionL(TInt aProfileId, const TDesC8& aClientInfoValue ); + TInt GetClientProfileActionL(TInt aProfileId ); + TInt GetMaxNumProfilesActionL(); + void SubscribeToServiceL(); + +public: + CTmServerTest& iTmServerTest; + }; + +// CLASS DECLARATION + +/** +* This a TmServerTest class. +* ?other_description_lines +* +* @lib ?library +* @since ?Series60_version +*/ +NONSHARABLE_CLASS(CTmServerTest) : public CTestModuleBase, + public MUpnpTmServerObserver + { +public: // Constructors and destructor + + + /** + * Two-phased constructor. + */ + static CTmServerTest* NewL(); + + /** + * Destructor. + */ + virtual ~CTmServerTest(); + +public: // New functions + + /** + * ?member_description. + * @since ?Series60_version + * @param ?arg1 ?description + * @return ?description + */ + //?type ?member_function( ?type ?arg1 ); + TInt StartTmServerDeviceL ( TTestResult& aResult ); + TInt PublishTmServerServiceL ( TTestResult& aResult ); + TInt StopTmServerDeviceL ( TTestResult& aResult ); + TInt ReStartTmServerDeviceL( TTestResult& aResult ); + TInt UnRegisterAppL( TTestResult& aResult ); + TInt UnRegisterAppsL( TTestResult& aResult ); + TInt RegisterDuplicateAppL( TTestResult& aResult ); + TInt RegisterDuplicateAppsL( TTestResult& aResult ); + TInt UnRegisterUnRegisteredAppL ( TTestResult& aResult ); + TInt UnRegisterUnRegisteredAppsL ( TTestResult& aResult ); + TInt HandleLaunchAppActionL ( TTestResult& aResult ); + TInt HandleInvalidAppIdLaunchAppActionL(TTestResult& aResult ); + TInt HandleInvalidProfileIdLaunchAppActionL(TTestResult& aResult ); + TInt HandleNonExistentLaunchAppActionL (TTestResult& aResult); + TInt HandleUnauthorizedLaunchAppActionL (TTestResult& aResult); + TInt HandleDeviceLockedLaunchAppActionL (TTestResult& aResult); + TInt HandleTerminateAppActionL ( TTestResult& aResult ); + TInt HandleNonExistentTerminateAppActionL( TTestResult& aResult ); + TInt HandleInvalidAppIdTerminateAppActionL( TTestResult& aResult ); + TInt HandleInvalidProfileIdTerminateAppActionL( TTestResult& aResult ); + TInt HandleUnauthorizedTerminateAppActionL ( TTestResult& aResult ); + TInt HandleDeviceLockedTerminateAppActionL ( TTestResult& aResult ); + TInt HandleGetAppListActionFilter1L(TTestResult& aResult ); + TInt HandleGetAppListActionFilter2L(TTestResult& aResult ); + TInt HandleGetAppListActionFilter3L(TTestResult& aResult ); + TInt HandleGetAppListActionFilter4L(TTestResult& aResult ); + TInt HandleGetAppListActionInvalidArg1L(TTestResult& aResult ); + TInt HandleGetAppListActionInvalidArg2L(TTestResult& aResult ); + TInt HandleGetAppListActionInvalidArg3L(TTestResult& aResult ); + TInt HandleGetAppListActionInvalidArg4L(TTestResult& aResult ); + TInt HandleGetAppListActionInvalidArg5L(TTestResult& aResult ); + TInt HandleInvalidProfileIdGetAppListActionL ( TTestResult& aResult ); + TInt HandleGetAppListActionOperationRejectedL ( TTestResult& aResult ); + TInt HandleGetAppListActionNoFilterL ( TTestResult& aResult ); + TInt HandleGetAppStatusActionL( TTestResult& aResult ); + TInt HandleWildcardGetAppStatusActionL( TTestResult& aResult ); + TInt HandleInvalidAppIdGetAppStatusActionL ( TTestResult& aResult ); + TInt HandleNonExistentGetAppStatusActionL ( TTestResult& aResult ); + TInt HandleSetClientProfileActionL( TTestResult& aResult ); + TInt HandleInvalidProfileIdSetClientProfileActionL (TTestResult& aResult ); + TInt HandleInvalidProfileSetClientProfileActionL (TTestResult& aResult ); + TInt HandleDeviceLockedSetClientProfileActionL (TTestResult& aResult ); + TInt HandleResourceBusySetClientProfileActionL (TTestResult& aResult ); + TInt HandleGetClientProfileActionL( TTestResult& aResult ); + TInt HandleInvalidProfileIdGetClientProfileActionL (TTestResult& aResult ); + TInt HandleGetMaxNumProfilesActionL( TTestResult& aResult ); + TInt HandleGetMaxNumProfilesOperationRejectedL ( TTestResult& aResult ); + TInt HandleEventAppStatusUpdateL ( TTestResult& aResult ); + TInt HandleEventAppListUpdateL ( TTestResult& aResult ); + TInt HandleEventDuplicateAppStatusUpdateL( TTestResult& aResult ); + TInt HandleEventProfileIdListStatusUpdateL( TTestResult& aResult ); + + void RegisterApplicationsL(CUpnpTmServer& aTmServer ); + void SetTmServerSettingsL(); + void TestTimerTimedOutL(); + void TestTimerDiscoveryTimedOut(); + void DeviceVerified(); + void DeviceLostVerified(); + void ServiceVerified(); + +public: // methods from MUpnpTmServerObserver + TTerminalModeErrorCode OnGetApplicationList( TUint aProfileId ); + TTerminalModeErrorCode OnLaunchApp( TUint aAppId, RBuf8& aUrl, TUint aProfileId ); + TTerminalModeErrorCode OnTerminateApp( TUint aAppId, TUint aProfileId ); + TTerminalModeErrorCode OnGetAppStatus( TUint aAppId, TUint& aProfileId ,RBuf8& aStatusType ); + TTerminalModeErrorCode OnGetMaxNumProfiles( TUint& aProfileIdCount ); + TTerminalModeErrorCode OnSetClientProfile( TUint aProfileId, const TDesC8& aClientProfile,RBuf8& aResultProfile ); + TTerminalModeErrorCode OnGetClientProfile( TUint aProfileId, RBuf8& aClientProfile ); + const CUpnpTmClientIconPref& GetClientIconPrefsL( TUint aProfileId ); + +public: // Functions from base classes + + /** + * From CTestModuleBase InitL is used to initialize the + * TmServerTest. It is called once for every instance of + * TestModuleTmServerTest after its creation. + * @since ?Series60_version + * @param aIniFile Initialization file for the test module (optional) + * @param aFirstTime Flag is true when InitL is executed for first + * created instance of TmServerTest. + * @return Symbian OS error code + */ + TInt InitL( TFileName& aIniFile, TBool aFirstTime ); + + /** + * From CTestModuleBase GetTestCasesL is used to inquiry test cases + * from TmServerTest. + * @since ?Series60_version + * @param aTestCaseFile Test case file (optional) + * @param aTestCases Array of TestCases returned to test framework + * @return Symbian OS error code + */ + TInt GetTestCasesL( const TFileName& aTestCaseFile, + RPointerArray& aTestCases ); + + /** + * From CTestModuleBase RunTestCaseL is used to run an individual + * test case. + * @since ?Series60_version + * @param aCaseNumber Test case number + * @param aTestCaseFile Test case file (optional) + * @param aResult Test case result returned to test framework (PASS/FAIL) + * @return Symbian OS error code (test case execution error, which is + * not reported in aResult parameter as test case failure). + */ + TInt RunTestCaseL( const TInt aCaseNumber, + const TFileName& aTestCaseFile, + TTestResult& aResult ); + + /** + * From CTestModuleBase; OOMTestQueryL is used to specify is particular + * test case going to be executed using OOM conditions + * @param aTestCaseFile Test case file (optional) + * @param aCaseNumber Test case number (optional) + * @param aFailureType OOM failure type (optional) + * @param aFirstMemFailure The first heap memory allocation failure value (optional) + * @param aLastMemFailure The last heap memory allocation failure value (optional) + * @return TBool + */ + virtual TBool OOMTestQueryL( const TFileName& /* aTestCaseFile */, + const TInt /* aCaseNumber */, + TOOMFailureType& aFailureType, + TInt& /* aFirstMemFailure */, + TInt& /* aLastMemFailure */ ); + + /** + * From CTestModuleBase; OOMTestInitializeL may be used to initialize OOM + * test environment + * @param aTestCaseFile Test case file (optional) + * @param aCaseNumber Test case number (optional) + * @return None + */ + virtual void OOMTestInitializeL( const TFileName& /* aTestCaseFile */, + const TInt /* aCaseNumber */ ); + + /** + * From CTestModuleBase; OOMHandleWarningL + * @param aTestCaseFile Test case file (optional) + * @param aCaseNumber Test case number (optional) + * @param aFailNextValue FailNextValue for OOM test execution (optional) + * @return None + * + * User may add implementation for OOM test warning handling. Usually no + * implementation is required. + */ + virtual void OOMHandleWarningL( const TFileName& /* aTestCaseFile */, + const TInt /* aCaseNumber */, + TInt& /* aFailNextValue */); + + /** + * From CTestModuleBase; OOMTestFinalizeL may be used to finalize OOM + * test environment + * @param aTestCaseFile Test case file (optional) + * @param aCaseNumber Test case number (optional) + * @return None + * + */ + virtual void OOMTestFinalizeL( const TFileName& /* aTestCaseFile */, + const TInt /* aCaseNumber */ ); + + /** + * Method used to log version of test module + */ + void SendTestModuleVersion(); + +protected: // New functions + + /** + * ?member_description. + * @since ?Series60_version + * @param ?arg1 ?description + * @return ?description + */ + +private: + + /** + * C++ default constructor. + */ + CTmServerTest(); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + // Prohibit copy constructor if not deriving from CBase. + // ?classname( const ?classname& ); + // Prohibit assigment operator if not deriving from CBase. + // ?classname& operator=( const ?classname& ); + + /** + * Function returning test case name and pointer to test case function. + * @since ?Series60_version + * @param aCaseNumber test case number + * @return TCaseInfo + */ + const TCaseInfo Case ( const TInt aCaseNumber ) const; + + /** + * [test case declarations] - do not remove + */ + //ADD NEW METHOD DEC HERE" + + /** + * Printing test case. + * @since ?Series60_version + * @param aResult Test case result (PASS/FAIL) + * @return Symbian OS error code (test case execution error + * that is not returned as test case result in aResult) + */ + TInt PrintTest( TTestResult& aResult ); + + /** + * Printing loop test case. + * @since ?Series60_version + * @param aResult Test case result (PASS/FAIL) + * @return Symbian OS error code (test case execution error + * that is not returned as test case result in aResult) + */ + TInt LoopTest( TTestResult& aResult ); + + + +public: // Data + // ?one_line_short_description_of_data + //?data_declaration; + TBool iTmServerDeviceType; + TBool iTmServerServiceType; + +protected: // Data + // ?one_line_short_description_of_data + //?data_declaration; + +public: + TBool iGetAppList; + TBool iStartApp; + TBool iStopApp; + TBool iSetClientProfile; + TBool iGetClientProfile; + TBool iGetMaxNumProfiles; + TBool iGetAppStatus; + TBool iStatusNotified; + TBool iOperationRejected; + TBool iResourceBusy; + + +private: // Data + // Pointer to test (function) to be executed + TestFunction iMethod; + + // Pointer to logger + CStifLogger * iLog; + + // Normal logger + CStifLogger* iStdLog; + + // Test case logger + CStifLogger* iTCLog; + + // Flag saying if test case title should be added to log file name + TBool iAddTestCaseTitleToLogName; + + // Flag saying if version of test module was already sent + TBool iVersionLogged; + +private: + CUpnpTmServer* iTmServer; + CDiscoverDevice* iSearchDevice; + CTestTimer* iTestTimer; + CDiscoveryTestTimer* iDiscoveryTestTimer; + CUpnpRemotableApp* iRemotableApp; + CUpnpTerminalModeIcon* iTerminalModeIcon; + CUpnpRemotableApp* iRemotableApp1; + CUpnpRemotableApp* iRemotableApp2; + CUpnpRemotableApp* iRemotableApp3; + CUpnpRemotableApp* iRemotableApp4; + CUpnpRemotableApp* iRemotableApp5; + CUpnpTmServerDeviceInfo* iTmServerDeviceInfo; + RPointerArray iRemotableAppArray; + TBool iDeviceVerified; + TBool iDeviceLostVerified; + TBool iServiceVerified; + RPointerArray iClientIconPrefArray; + }; + +#endif // TMSERVERTEST_H + +// End of File