/** Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).* All rights reserved.* This component and the accompanying materials are made available* under the terms of the License "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: * tswisstep.h* SWIS test step declaration**//** @file*/#ifndef __TSWISSTEP_H__#define __TSWISSTEP_H__#include <test/testexecutestepbase.h>#include "../../testutil/client/testutilclient.h"#include "tupsserver.h"#include "tuiscriptadaptors.h"#include "e32base.h"namespace Swi { class CInstallPrefs; }/** * Base test step class containing handy functions * @test * @internalComponent */class CUpsTestStep : public CTestStep {protected: enum TReadType { ESimpleType, //to read "numexist" and "numnonexist" value from INI. ECancelType, //to read "numexistcancel" and "numnonexistcancel" value from INI. ERegisteredType //to read "numregistered" value from INI. }; /** * Get the file names for checking if present or missing. * The test step's INI file must contain entry "numexistcancel=<n>" and one or more entries * "existcancel<i>=<fname>". * The test step's INI file must contain entry "numnonexistcancel=<n>" and one or more entries * "nonexistcancel<i>=<fname>". * The test step's INI file must contain entry "numexist=<n>" and one or more entries * "exist<i>=<fname>". * The test step's INI file must contain entry "numnonexist=<n>" and one or more entries * "nonexist<i>=<fname>". * * @param aFileNumExist this array contains the name of the files which must exist after * installation/un-installation/cancellation. * @param aFileNumNonExist this array contains the name of the files which must not exist after * installation/un-installation/cancellation. * @param aDoCancelTest Used to make decision for reading from the INI file. * ETrue Cancel Testing is enabled, so read entries "numexistcancel" and "numnonexistcancel". * EFalse Read entries "numexist" and "numnonexist". */ void GetFileNamesForCheck(RArray<TPtrC>& aFileNumExist,RArray<TPtrC>& aFileNumNonExist, TReadType aReadType); /** * Extract the file names from the INI file. * @param aEntries Number of file name entries. * @param aEntryBase Base name of the keys specifying names of files to * check; an index (0..n-1) is appended to the base * name to get the actual key name. * @param aFileArray Contains all the file names to check for missing or present. */ void ExtractFileName(TInt aEntries, const TDesC& aEntryBase, RArray<TPtrC>& aFileArray); /** * Checks for files that should exist if the installation was successful, * and which shouldn't exist if the installation was cancelled. * @param aCheckExist Controls the kind of testing done * ETrue Files must exist * EFalse Files must not exist * @param aFileArray Contains all the file names to check for missing or present depending * on the aCheckExist. If ETrue, this contains the names of files that must exist * else if EFalse contains the names of files that must not be present. * @param aTestUtil Contains reference to the testutilserver session. * @param aMsecTimeout Timeout to wait for file to be created, if not already existing */ void CheckIfFilesExist(TBool aCheckExist, const RArray<TPtrC>& aFileArray, RTestUtilSession& aTestUtil, TInt aMsecTimeout=0); /** * Checks whether certain files do or do not exist by checking the registry entry and * sets test step result accordingly. * @param aFileArray Contains all the file names to check for missing/present. */ void CheckRegistryEntry(RArray<TPtrC>& aFileArray); /** * Checks that the correct dialogs have been called during the installation. */ void CheckDialogsCalled(const Swi::Test::CUIScriptAdaptor& ui); /** * Checks whether a fatal OCSP response was encountered during the installation. */ void CheckFatalOcspResponse(const Swi::Test::CUIScriptAdaptor& ui); /** * Checks whether the values of ocsp outcomes in the ini file matches with that of * the DisplayOcspResultL function. */ void CheckExpectedOcspOutcomes(const Swi::Test::CUIScriptAdaptor& ui); /** * Copy files from one place to another. * * @param aNumEntries Name of the key that specifies number of file name * entries * @param aFrom Base name of the keys specifying names of files to * copy from; an index (0..n-1) is appended to the base * name to get the actual key name * @param aTo Base name of the keys specifying names of files to * copy to; an index (0..n-1) is appended to the base * name to get the actual key name */ void CopyFilesL(const TDesC& aNumEntries, const TDesC& aFrom, const TDesC& aTo); /** * Delete files. * * @param aNumEntries Name of the key that specifies number of file name * entries * @param aDeleteKeyBase Base name of the keys specifying names of files * to delete; an index (0..n-1) is appended to the * base name to get the actual key name */ void DeleteFilesL(const TDesC& aNumEntries, const TDesC& aDeleteKeyBase); /** * Stores all the values of expected install sizes as indicated in the test * step's INI file. * @param aNumExpectedSizeEntries Name of key that specifies the number of * expected install sizes. * @param aExpectedInstallSize A reference to the array of install sizes. */ void StoreExpectedInstallSizesL(TInt aNumExpectedSizeEntries, RArray<TTableOfInstallSizes>& aExpectedValue); /** Verify the Pub and Sub value of the current installation/uninstallation */ void CheckPubSubStatus(TDesC& aPubSubStatus); /** * Check that the pub and sub status returns to KErrNone after a test. * This check should typically be last, whereas the previous method should * be done ASAP after an install/uninstall since there's a race condition. */ void CheckPubSubStatusIdle(); /** * Set or clear read only bit on files. * * @param aNumEntries Name of the key that specifies number of file name * entries * @param aFileKeyBase Base name of the keys specifying names of files * to set; an index (0..n-1) is appended to the * base name to get the actual key name * @param aFileKeyBase Base name of the keys specifying operation on files * ; an index (0..n-1) is appended to the * base name to get the actual key name. */ void SetClearReadOnlyFilesL(const TDesC& aNumEntries, const TDesC& aFileKeyBase, const TDesC& aSetClearOpBase); /** * Check current step result against list of expected result codes. */ void CheckExpectedResultCodesL(); /** * Compares hashes for pairs of files read from config section, sets the * test step result to fail if any pair does not match or if there is an * error attempting to get a hash. */ void CompareFilesL(); /** * Compares file contents with buffer. Sets test step result to fail if * the contents do not match or there is an error in performing the * operation. */ void CompareFileWithBufferL(const Swi::Test::CUIScriptAdaptor& ui); };/** * Installation test step class * @test * @internalComponent */class CUpsInstallStep : public CUpsTestStep {public: enum TInstallType { EUseFileName }; CUpsInstallStep(TInstallType aInstallType); ~CUpsInstallStep(); virtual TVerdict doTestStepPreambleL(); virtual TVerdict doTestStepPostambleL(); virtual TVerdict doTestStepL();private: TInt DoInstallL(Swi::CInstallPrefs& aInstallPrefs); void GetFilesToHoldOpenL();private: TFileName iSisFileName; // name of the file to install TFileName iXmlFileName; // name of the file containing dialog data Swi::Test::CUIScriptAdaptor* iUi; // XML script-based UI implementation TInstallType iInstallType; // use file handle to install RArray<TTableOfInstallSizes> iExpectedValue; // array of expected install sizes TBool iDoCancelTest; TPtrC iExpectedHash; TInt iExpectedDialog; TInt iKErrCode; TPtrC Outcomes;// outcomes as received from ini file TUid iUid; TInt iExpectedUserDrive; // -1 if not checked TPtrC iPubSubStatus; TBool iExpectFileChange; };/** * Uninstallation test step class * @test * @internalComponent */class CUpsUninstallStep : public CUpsTestStep {public: enum TUninstallType { EByUid, EByPackage }; CUpsUninstallStep(TUninstallType aType); ~CUpsUninstallStep(); virtual TVerdict doTestStepPreambleL(); virtual TVerdict doTestStepPostambleL(); virtual TVerdict doTestStepL();private: TInt DoUninstallL();private: TUid iUid; TFileName iXmlFileName; // name of the file containing dialog data TPtrC iVendorName; TInt iKErrCode; Swi::Test::CUIScriptAdaptor* iUi; // XML script-based UI implementation TPtrC iPackageName; TUninstallType iType; };_LIT(KUpsInstallStep, "InstallStep");_LIT(KUpsUnInstallAugStep, "UninstallAugStep");_LIT(KUpsUnInstallStep, "UninstallStep");#endif // __TSWISSTEP_H__