diff -r 7333d7932ef7 -r 8b7f4e561641 installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.cpp --- a/installationservices/swinstallationfw/test/tusif/source/tsifoperationstep.cpp Tue Aug 31 15:21:33 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1186 +0,0 @@ -/* -* Copyright (c) 2008-2010 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: -* -*/ - - -/** - @file - @internalTechnology -*/ - -#include "tsifoperationstep.h" -#include "tsifsuitedefs.h" -#include - -using namespace Usif; - -CSifOperationStep::~CSifOperationStep() -/** -* Destructor -*/ - { - } - -CSifOperationStep::CSifOperationStep() : iExclusiveOperation(ETrue) -/** -* Constructor -*/ - { - } - -void CSifOperationStep::ImplTestStepPreambleL() -/** -* @return - TVerdict code -* Override of base class virtual -*/ - { - CSifSuiteStepBase::ImplTestStepPreambleL(); - INFO_PRINTF1(_L("I am in CSifOperationStep::ImplTestStepPreambleL().")); - if (TestStepResult()!=EPass) - { - return; - } - - if (!GetIntFromConfig(ConfigSection(),KTe_CancelAfter, iCancelAfter)) - { - iCancelAfter = -1; - } - - TInt err = iSif.Connect(); - if (err != KErrNone) - { - SetTestStepResult(EFail); - INFO_PRINTF2(_L("Failed to connect to the SIF server, error code: %d"), err); - } - else - { - SetTestStepResult(EPass); - } - - LoadExclusiveOperationFlagFromConfigL(); - } - -void CSifOperationStep::ImplTestStepPostambleL() -/** -* @return - TVerdict code -* Override of base class virtual -*/ - { - INFO_PRINTF1(_L("Cleanup in CSifOperationStep::~CSifOperationStep()")); - - iSif.Close(); - - delete iComponentInfo; - iComponentInfo = NULL; - ClearOpaqueParams(); - } - -void CSifOperationStep::ClearOpaqueParams() - { - delete iPluginOpaqueArguments; - iPluginOpaqueArguments = NULL; - delete iPluginOpaqueResults; - iPluginOpaqueResults = NULL; - delete iPluginRefOpaqueResults; - iPluginRefOpaqueResults = NULL; - } - -void CSifOperationStep::CancelableWait() - { - if (iCancelAfter >= 0) - { - User::After(iCancelAfter); - iSif.CancelOperation(); - } - else - { - User::WaitForRequest(iStatus); - } - } - - -void CSifOperationStep::LoadFileNameFromConfigL() - { - if(!GetStringFromConfig(ConfigSection(),KTe_PackageFile, iFileName)) - { - INFO_PRINTF2(_L("Parameter %S not found in the ini file"), &KTe_PackageFile); - User::Leave(KErrNotFound); - } - } - -void CSifOperationStep::LoadComponentIdFromConfigL() - { - TPtrC componentName, componentVendor; - if (GetStringFromConfig(ConfigSection(), KTe_ComponentName, componentName) && - GetStringFromConfig(ConfigSection(), KTe_ComponentVendor, componentVendor)) - { - iComponentId = FindComponentInScrL(componentName, componentVendor); - if (iComponentId != 0) - { - return; - } - INFO_PRINTF3(_L("Component name = %S, vendor = %S not found in SCR"), &componentName, &componentVendor); - User::Leave(KErrNotFound); - } - - - if(!GetIntFromConfig(ConfigSection(), KTe_ComponentId, iComponentId)) - { - User::Leave(KErrNotFound); - } - } - -void CSifOperationStep::LoadComponentInfoFromConfigL() - { - } - -void CSifOperationStep::LoadExclusiveOperationFlagFromConfigL() - { - GetBoolFromConfig(ConfigSection(),KTe_ExclusiveOperation, iExclusiveOperation); - } - -void CSifOperationStep::LoadPluginOpaqueParamsFromConfigL(const TDesC& aNamePattern, const TDesC& aTypePattern, const TDesC& aValuePattern, COpaqueNamedParams& aOpaqueParams) - { - // name pattern - HBufC* namePattern = HBufC::NewLC(aNamePattern.Length()+KMaxIntDigits); - TPtr bufNamePattern(namePattern->Des()); - // value pattern - HBufC* valuePattern = HBufC::NewLC(aValuePattern.Length()+KMaxIntDigits); - TPtr bufValuePattern(valuePattern->Des()); - // value type pattern - HBufC* typePattern = HBufC::NewLC(aTypePattern.Length()+KMaxIntDigits); - TPtr bufTypePattern(typePattern->Des()); - - const TInt maxNumParams = 16; - for (TInt i=0; i(aParam)->ClearOpaqueParams(); - } - -void CSifOperationStep::LoadOpaqueParamsL() - { - GetBoolFromConfig(ConfigSection(),KTe_UseEnhancedApi, iUseEnhancedApi); - - CleanupStack::PushL(TCleanupItem(ClearOpaqueParamsCleanup, this)); - if (iUseEnhancedApi) - { - delete iPluginOpaqueArguments; - iPluginOpaqueArguments = NULL; - iPluginOpaqueArguments = COpaqueNamedParams::NewL(); - delete iPluginOpaqueResults; - iPluginOpaqueResults = NULL; - iPluginOpaqueResults = COpaqueNamedParams::NewL(); - delete iPluginRefOpaqueResults; - iPluginRefOpaqueResults = NULL; - iPluginRefOpaqueResults = COpaqueNamedParams::NewL(); - - LoadPluginOpaqueParamsFromConfigL(KTe_PluginOpaqueArgumentName, KTe_PluginOpaqueArgumentType, KTe_PluginOpaqueArgumentValue, *iPluginOpaqueArguments); - LoadPluginOpaqueParamsFromConfigL(KTe_PluginRefOpaqueResultName, KTe_PluginRefOpaqueResultType, KTe_PluginRefOpaqueResultValue, *iPluginRefOpaqueResults); - } - CleanupStack::Pop(); // ClearOpaqueParams - } - -TBool CSifOperationStep::CompareOpaqueResultsL() - { - if (iPluginOpaqueResults == NULL && iPluginRefOpaqueResults == NULL) - { - return ETrue; - } - else if (iPluginOpaqueResults == NULL || iPluginRefOpaqueResults == NULL) - { - return EFalse; - } - - const TInt llen = iPluginOpaqueResults->CountL(); - const TInt rlen = iPluginRefOpaqueResults->CountL(); - if (llen != rlen) - { - INFO_PRINTF3(_L("The number of expected and returned opaque params differs. Expected: %d, returned: %d "), rlen, llen); - return EFalse; - } - - RCPointerArray names; - CleanupClosePushL(names); - iPluginOpaqueResults->GetNamesL(names); - - for (TInt i=0; iStringByNameL(lName); - const TDesC& rValue = iPluginRefOpaqueResults->StringByNameL(lName); - - if (rValue == KTe_AnyValuePermitted && rValue != KNullDesC) - { - continue; - } - - if (lValue.Size() != rValue.Size()) - { - INFO_PRINTF4(_L("Mismatch on param sizes for param %S. Expected size %d, returned size %d"), &lName, rValue.Size(), lValue.Size()); - CleanupStack::PopAndDestroy(&names); - return EFalse; - } - if (lValue.Size() != sizeof(TInt) && lValue != rValue) - { - INFO_PRINTF4(_L("Mismatch for string param %S. Expected %S, returned %S"), &lName, &rValue, &lValue); - CleanupStack::PopAndDestroy(&names); - return EFalse; - } - if (lValue.Size() == sizeof(TInt)) - { - TInt lIntValue = iPluginOpaqueResults->IntByNameL(lName); - TInt rIntValue = iPluginRefOpaqueResults->IntByNameL(lName); - if (lIntValue != rIntValue) - { - INFO_PRINTF4(_L("Mismatch for integer param %S. Expected %d, returned %d"), &lName, rIntValue, lIntValue); - CleanupStack::PopAndDestroy(&names); - return EFalse; - } - } - } - - CleanupStack::PopAndDestroy(&names); - return ETrue; - } - -void CSifOperationStep::PrintOpaqueParamsL(const COpaqueNamedParams& aOpaqueParams) - { - RCPointerArray names; - CleanupClosePushL(names); - aOpaqueParams.GetNamesL(names); - for (TInt i=0; iSetRootNodeL(rootNode); - CleanupStack::Pop(rootNode); - } - -namespace - { - HBufC* CompInfoParamNameLC(const TDesC& aStr1, const TDesC& aStr2) - { - HBufC* conc = HBufC::NewLC(aStr1.Length()+aStr2.Length()+1); - TPtr bufConc(conc->Des()); - bufConc.Copy(aStr1); - bufConc.Append(_L(".")); - bufConc.Append(aStr2); - return conc; - } - } - -TPtrC CSifGetComponentInfoStep::LoadCompInfoNodeStringParamL(const TDesC& aNodePrefix, const TDesC& aParamName) - { - HBufC* name = CompInfoParamNameLC(aNodePrefix, aParamName); - - TPtrC value; - if (!GetStringFromConfig(ConfigSection(), *name, value)) - { - INFO_PRINTF2(_L("ComponentInfo param: %S not found in the ini file"), name); - User::Leave(KErrNotFound); - } - - CleanupStack::PopAndDestroy(name); - return value; - } - -TInt CSifGetComponentInfoStep::LoadCompInfoNodeIntParamL(const TDesC& aNodePrefix, const TDesC& aParamName, TBool aMandatory) - { - HBufC* name = CompInfoParamNameLC(aNodePrefix, aParamName); - - TInt value(0); - if (!GetIntFromConfig(ConfigSection(), *name, value) && aMandatory) - { - INFO_PRINTF2(_L("ComponentInfo param: %S not found in the ini file"), name); - User::Leave(KErrNotFound); - } - - CleanupStack::PopAndDestroy(name); - return value; - } - -TBool CSifGetComponentInfoStep::LoadCompInfoNodeBoolParamL(const TDesC& aNodePrefix, const TDesC& aParamName, TBool aMandatory) - { - HBufC* name = CompInfoParamNameLC(aNodePrefix, aParamName); - - TBool value(EFalse); - if (!GetBoolFromConfig(ConfigSection(), *name, value) && aMandatory) - { - INFO_PRINTF2(_L("ComponentInfo param: %S not found in the ini file"), name); - User::Leave(KErrNotFound); - } - - CleanupStack::PopAndDestroy(name); - return value; - } - -CComponentInfo::CNode* CSifGetComponentInfoStep::LoadCompInfoNodeLC(const TDesC& aNodeName) - { - TPtrC swType(LoadCompInfoNodeStringParamL(aNodeName, KTe_SoftwareTypeName)); - TPtrC name(LoadCompInfoNodeStringParamL(aNodeName, KTe_ComponentName)); - TPtrC vendor(LoadCompInfoNodeStringParamL(aNodeName, KTe_ComponentVendor)); - TPtrC version(LoadCompInfoNodeStringParamL(aNodeName, KTe_ComponentVersion)); - TPtrC globalId(LoadCompInfoNodeStringParamL(aNodeName, KTe_GlobalComponentId)); - - TInt scomoState(LoadCompInfoNodeIntParamL(aNodeName, KTe_ScomoState)); - TInt installStatus(LoadCompInfoNodeIntParamL(aNodeName, KTe_InstallStatus)); - TInt componentId(LoadCompInfoNodeIntParamL(aNodeName, KTe_ComponentId)); - TInt authenticity(LoadCompInfoNodeIntParamL(aNodeName, KTe_Authenticity)); - TInt size(LoadCompInfoNodeIntParamL(aNodeName, KTe_MaxInstalledSize)); - TBool hasexe(LoadCompInfoNodeBoolParamL(aNodeName, KTe_HasExecutable)); - TBool driveSelectionRequired(LoadCompInfoNodeBoolParamL(aNodeName, KTe_DriveSelectionRequired)); - TInt noOfApps(LoadCompInfoNodeIntParamL(aNodeName,KTe_NumberOfApplications)); - - TBuf<20> appUidTxt; - TBuf<20> appFileNameTxt; - TBuf<20> appGroupNameTxt; - TBuf<20> appIconFileNameTxt; - TBuf<20> appIconFileSize; - const TInt MAX_INT_STR_LEN = 8; - TBuf integerAppendStr; - RPointerArray applications; - - for(TInt index = 0; index < noOfApps ; index++) - { - integerAppendStr.Format(_L("%d"), index); - appUidTxt = KTe_ApplicationUid; - appUidTxt.Append(integerAppendStr); - TInt val = 0; - HBufC* name = CompInfoParamNameLC(aNodeName, appUidTxt); - GetHexFromConfig(ConfigSection(),*name, val); - TUid appuid = TUid::Uid(val); - CleanupStack::PopAndDestroy(name); - - appFileNameTxt=KTe_ApplicationName; - appFileNameTxt.Append(integerAppendStr); - TPtrC appFileName(LoadCompInfoNodeStringParamL(aNodeName,appFileNameTxt)); - - appGroupNameTxt=KTe_ApplicationGroupName; - appGroupNameTxt.Append(integerAppendStr); - TPtrC appGroupName(LoadCompInfoNodeStringParamL(aNodeName,appGroupNameTxt)); - - appIconFileNameTxt=KTe_ApplicationIconFileName; - appIconFileNameTxt.Append(integerAppendStr); - TPtrC appIconFileName(LoadCompInfoNodeStringParamL(aNodeName,appIconFileNameTxt)); - - Usif::CComponentInfo::CApplicationInfo* app = NULL; - app = Usif::CComponentInfo::CApplicationInfo::NewLC(appuid, appFileName, appGroupName, appIconFileName); - - appIconFileSize = KTe_ApplicationIconFileSize; - appIconFileSize.Append(integerAppendStr); - TInt fileSize(LoadCompInfoNodeIntParamL(aNodeName,appIconFileSize)); - iIconFileSizes.Append(fileSize); - - applications.AppendL(app); - CleanupStack::Pop(app); - } - - - TInt packedCaps(LoadCompInfoNodeIntParamL(aNodeName, KTe_UserGrantableCaps)); - TCapabilitySet capSet; - capSet.SetEmpty(); - UnpackCapabilitySet(packedCaps, capSet); - - CComponentInfo::CNode* node = CComponentInfo::CNode::NewLC(swType, name, version, vendor, - static_cast(scomoState), static_cast(installStatus), - static_cast(componentId), globalId, static_cast(authenticity), - capSet, size, hasexe, driveSelectionRequired, &applications); - - - // Load children - TInt numChildren(LoadCompInfoNodeIntParamL(aNodeName, KTe_CompInfoNumChildren, EFalse)); - for (TInt i=0; iDes()); - childNodeNamePtr.Copy(aNodeName); - childNodeNamePtr.Append(KTe_CompInfoChildNodePrefix); - childNodeNamePtr.AppendNum(i); - - CComponentInfo::CNode* childNode = LoadCompInfoNodeLC(*childNodeName); - node->AddChildL(childNode); - CleanupStack::Pop(childNode); - - CleanupStack::PopAndDestroy(childNodeName); - } - applications.Close(); - return node; - } - - -TBool CSifGetComponentInfoStep::CompareAppInfoL(const CComponentInfo::CNode& aExpectedNode, const CComponentInfo::CNode& aObtainedNode) - { - RPointerArray obtainedApplicationInfo; - RPointerArray expectedApplicationInfo; - obtainedApplicationInfo = aObtainedNode.Applications(); - expectedApplicationInfo = aExpectedNode.Applications(); - TInt obtainedApplicationInfoCount = obtainedApplicationInfo.Count(); - TInt expectedApplicationInfoCount = expectedApplicationInfo.Count(); - - if(obtainedApplicationInfoCount != expectedApplicationInfoCount) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Info Count: %d/%d"), expectedApplicationInfoCount, obtainedApplicationInfoCount); - return EFalse; - } - if(0 != expectedApplicationInfoCount) - { - for(TInt i=0 ; i < expectedApplicationInfoCount ; i++) - { - - if(expectedApplicationInfo[i]->AppUid() != obtainedApplicationInfo[i]->AppUid()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application UID: 0x%08x/0x%08x"), expectedApplicationInfo[i]->AppUid(), obtainedApplicationInfo[i]->AppUid()); - return EFalse; - } - - if(expectedApplicationInfo[i]->Name().Compare(obtainedApplicationInfo[i]->Name())) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Name: %S/%S"), &expectedApplicationInfo[i]->Name(), &obtainedApplicationInfo[i]->Name()); - return EFalse; - } - - if(expectedApplicationInfo[i]->GroupName().Compare(obtainedApplicationInfo[i]->GroupName())) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Group Name: %S/%S"), &expectedApplicationInfo[i]->GroupName(), &obtainedApplicationInfo[i]->GroupName()); - return EFalse; - } - - _LIT(emtyString,""); - if(obtainedApplicationInfo[i]->IconFileName().Compare(emtyString)) - { - //Opening a file server session for icon file size comparison - RFs fs; - User::LeaveIfError(fs.Connect()); - CleanupClosePushL(fs); - TEntry entry; - User::LeaveIfError(fs.Entry(obtainedApplicationInfo[i]->IconFileName(),entry)); - CleanupStack::Pop(&fs); - fs.Close(); - - if(iCompareIconFileSize && iIconFileSizes[iconIndex++] != entry.iSize) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Icon File Size: %d/%d"), iIconFileSizes[--iconIndex], entry.iSize); - return EFalse; - } - } - if(expectedApplicationInfo[i]->IconFileName().Compare(obtainedApplicationInfo[i]->IconFileName())) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Application Icon File Name: %S/%S"), &expectedApplicationInfo[i]->IconFileName(), &obtainedApplicationInfo[i]->IconFileName()); - return EFalse; - } - } - } - return ETrue; - } - - -TBool CSifGetComponentInfoStep::CompareCompInfoNodeL(const CComponentInfo::CNode& aExpectedNode, const CComponentInfo::CNode& aObtainedNode) - { - INFO_PRINTF2(_L("Checking CComponentInfo for component: '%S'"), &aExpectedNode.ComponentName()); - if (aExpectedNode.SoftwareTypeName() != aObtainedNode.SoftwareTypeName()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained SoftwareTypeName: '%S'/'%S'"), &aExpectedNode.SoftwareTypeName(), &aObtainedNode.SoftwareTypeName()); - return EFalse; - } - - if (aExpectedNode.ComponentName() != aObtainedNode.ComponentName()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained ComponentName: '%S'/'%S'"), &aExpectedNode.ComponentName(), &aObtainedNode.ComponentName()); - return EFalse; - } - - if (aExpectedNode.Version() != aObtainedNode.Version()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Version: '%S'/'%S'"), &aExpectedNode.Version(), &aObtainedNode.Version()); - return EFalse; - } - - if (aExpectedNode.Vendor() != aObtainedNode.Vendor()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Vendor: '%S'/'%S'"), &aExpectedNode.Vendor(), &aObtainedNode.Vendor()); - return EFalse; - } - - if (aExpectedNode.ScomoState() != aObtainedNode.ScomoState() && aObtainedNode.InstallStatus() != EInvalid && - aObtainedNode.InstallStatus() != ENewComponent) // SCOMO status is meaningless on non-existing components - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained ScomoState: %d/%d"), aExpectedNode.ScomoState(), aObtainedNode.ScomoState()); - return EFalse; - } - - if (aExpectedNode.InstallStatus() != aObtainedNode.InstallStatus()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained InstallStatus: %d/%d"), aExpectedNode.InstallStatus(), aObtainedNode.InstallStatus()); - return EFalse; - } - - if (aExpectedNode.ComponentId() != aObtainedNode.ComponentId()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained ComponentId: %d/%d"), aExpectedNode.ComponentId(), aObtainedNode.ComponentId()); - return EFalse; - } - - if (aExpectedNode.GlobalComponentId() != aObtainedNode.GlobalComponentId()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained GlobalComponentId: '%S'/'%S'"), &aExpectedNode.GlobalComponentId(), &aObtainedNode.GlobalComponentId()); - return EFalse; - } - - if (aExpectedNode.Authenticity() != aObtainedNode.Authenticity()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Authenticity: %d/%d"), aExpectedNode.Authenticity(), aObtainedNode.Authenticity()); - return EFalse; - } - - if (PackCapabilitySet(aExpectedNode.UserGrantableCaps()) != PackCapabilitySet(aObtainedNode.UserGrantableCaps())) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained UserGrantableCaps: %d/%d"), PackCapabilitySet(aExpectedNode.UserGrantableCaps()), PackCapabilitySet(aObtainedNode.UserGrantableCaps())); - return EFalse; - } - - if (iCompareMaxInstalledSize && aExpectedNode.MaxInstalledSize() != aObtainedNode.MaxInstalledSize()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained MaxInstalledSize: %d/%d"), aExpectedNode.MaxInstalledSize(), aObtainedNode.MaxInstalledSize()); - return EFalse; - } - if (aExpectedNode.HasExecutable() != aObtainedNode.HasExecutable()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Has Executable Flag: %d/%d"), aExpectedNode.HasExecutable(), aObtainedNode.HasExecutable()); - return EFalse; - } - - if (aExpectedNode.DriveSeletionRequired() != aObtainedNode.DriveSeletionRequired()) - { - INFO_PRINTF3(_L("CComponentInfo doesn't match: expected/obtained Drive selection required: %d/%d"), aExpectedNode.DriveSeletionRequired(), aObtainedNode.DriveSeletionRequired()); - return EFalse; - } - - if(!CompareAppInfoL(aExpectedNode, aObtainedNode)) - { - iIconFileSizes.Close(); - return EFalse; - } - - const RPointerArray& expectedChildren = aExpectedNode.Children(); - const RPointerArray& obtainedChildren = aObtainedNode.Children(); - if (expectedChildren.Count() != obtainedChildren.Count()) - { - INFO_PRINTF4(_L("CComponentInfo doesn't match: component %S has different number of embedded components, expected/obtained: %d/%d"), &aExpectedNode.ComponentName(), expectedChildren.Count(), obtainedChildren.Count()); - return EFalse; - } - - for (TInt i=0; iRootNodeL(), compInfo->RootNodeL()) ? EPass : EFail);); - iIconFileSizes.Close(); - CleanupStack::PopAndDestroy(compInfo); - } - -// ***************************************************************************************************** - - -CSifInstallStep::~CSifInstallStep() -/** -* Destructor -*/ - { - } - -CSifInstallStep::CSifInstallStep() -/** -* Constructor -*/ - { - SetTestStepName(KSifInstallStep); - } - -void CSifInstallStep::ImplTestStepPreambleL() -/** -* @return - TVerdict code -* Override of base class virtual -*/ - { - CSifOperationStep::ImplTestStepPreambleL(); - INFO_PRINTF1(_L("I am in Test Step Preamble in Class CSifInstallStep")); - } - - -void CSifInstallStep::ImplTestStepL() -/** -* @return - TVerdict code -* Override of base class pure virtual -* Our implementation only gets called if the base class ImplTestStepPreambleL() did -* not leave. That being the case, the current test result value will be EPass. -*/ - { - if (TestStepResult()!=EPass) - { - INFO_PRINTF1(_L("CSifInstallStep::ImplTestStepL() called with TestStepResult()!=EPass")); - return; - } - - INFO_PRINTF1(_L("In the file CSifInstallStep::ImplTestStepL()")); - - LoadOpaqueParamsL(); - CleanupStack::PushL(TCleanupItem(ClearOpaqueParamsCleanup, this)); - - LoadFileNameFromConfigL(); - - GetBoolFromConfig(ConfigSection(),KTe_OperationByFileHandle, iInstallByFileHandle); - - RFs fs; - RFile file; - if (iInstallByFileHandle) - { - User::LeaveIfError(fs.Connect()); - fs.ShareProtected(); - CleanupClosePushL(fs); - User::LeaveIfError(file.Open(fs, iFileName, EFileRead | EFileShareReadersOnly)); - CleanupClosePushL(file); - - if (iUseEnhancedApi) - { - iSif.Install(file, *iPluginOpaqueArguments, *iPluginOpaqueResults, iStatus, iExclusiveOperation); - } - else - { - iSif.Install(file, iStatus, iExclusiveOperation); - } - } - else - { - if (iUseEnhancedApi) - { - iSif.Install(iFileName, *iPluginOpaqueArguments, *iPluginOpaqueResults, iStatus, iExclusiveOperation); - } - else - { - iSif.Install(iFileName, iStatus, iExclusiveOperation); - } - } - - CancelableWait(); - - if (iInstallByFileHandle) - { - CleanupStack::PopAndDestroy(2, &fs); - } - - TInt err = iStatus.Int(); - if (err != KErrNone) - { - INFO_PRINTF2(_L("CSifInstallStep::ImplTestStepL failed with error code = %d"), err); - User::LeaveIfError(err); - } - - TBool res = EFalse; - TRAP(err, res = CompareOpaqueResultsL()); - if (err != KErrNoMemory) - User::Leave(err); // Do not treat OOM errors as fatal by this point - otherwise OOM tests will atempt to uninstall the component again after uninstall has completed - - if (err == KErrNoMemory) // Handling KErrNoMemory as it is done purposefully as part of OOM Test - SetTestStepResult(EPass); - else if (!res) - { - SetTestStepResult(EFail); - INFO_PRINTF1(_L("CSifInstallStep::ImplTestStepL failed because of CompareOpaqueResultsL")); - INFO_PRINTF1(_L("=================== Begin of Received Opaque Results ===================")); - PrintOpaqueParamsL(*iPluginOpaqueResults); - INFO_PRINTF1(_L("=================== End of Received Opaque Results ===================")); - INFO_PRINTF1(_L("=================== Begin of Expected Opaque Results ===================")); - PrintOpaqueParamsL(*iPluginRefOpaqueResults); - INFO_PRINTF1(_L("=================== End of Expected Opaque Results ===================")); - } - CleanupStack::PopAndDestroy(); //ClearOpaqueParamsCleanup - } - -// ***************************************************************************************************** - - -CSifUninstallStep::~CSifUninstallStep() -/** -* Destructor -*/ - { - } - -CSifUninstallStep::CSifUninstallStep() -/** -* Constructor -*/ - { - SetTestStepName(KSifUninstallStep); - } - -void CSifUninstallStep::ImplTestStepPreambleL() -/** -* @return - TVerdict code -* Override of base class virtual -*/ - { - CSifOperationStep::ImplTestStepPreambleL(); - INFO_PRINTF1(_L("I am in Test Step Preamble in Class CSifUninstallStep")); - - LoadComponentIdFromConfigL(); - } - -void CSifUninstallStep::ImplTestStepL() -/** -* @return - TVerdict code -* Override of base class pure virtual -* Our implementation only gets called if the base class ImplTestStepPreambleL() did -* not leave. That being the case, the current test result value will be EPass. -*/ - { - INFO_PRINTF1(_L("In the file CSifUninstallStep::ImplTestStepL()")); //Block start - LoadOpaqueParamsL(); - CleanupStack::PushL(TCleanupItem(ClearOpaqueParamsCleanup, this)); - - if (iUseEnhancedApi) - { - iSif.Uninstall(iComponentId, *iPluginOpaqueArguments, *iPluginOpaqueResults, iStatus, iExclusiveOperation); - } - else - { - iSif.Uninstall(iComponentId, iStatus, iExclusiveOperation); - } - - CancelableWait(); - - User::LeaveIfError(iStatus.Int()); - - TBool res = EFalse; - TRAPD(err, res = CompareOpaqueResultsL()); - if (err != KErrNoMemory) - User::Leave(err); // Do not treat OOM errors as fatal by this point - otherwise OOM tests will atempt to uninstall the component again after uninstall has completed - - if (err == KErrNoMemory) // Handling KErrNoMemory as it is done purposefully as part of OOM Test - SetTestStepResult(EPass); - else if (!res) - SetTestStepResult(EFail); - - CleanupStack::PopAndDestroy(); //ClearOpaqueParamsCleanup - } - -// ***************************************************************************************************** - - -CSifActivateStep::CSifActivateStep(TBool aActivate): iActivate(aActivate) - { - SetTestStepName(KSifActivateStep); - } - -CSifActivateStep::~CSifActivateStep() - { - } - -void CSifActivateStep::ImplTestStepPreambleL() -/** -* @return - TVerdict code -* Override of base class virtual -*/ - { - CSifOperationStep::ImplTestStepPreambleL(); - INFO_PRINTF1(_L("I am in Test Step Preamble in Class CSifActivateStep")); - - if (TestStepResult()==EPass) - { - LoadComponentIdFromConfigL(); - } - - } - -void CSifActivateStep::ImplTestStepL() -/** -* @return - TVerdict code -* Override of base class pure virtual -* Our implementation only gets called if the base class ImplTestStepPreambleL() did -* not leave. That being the case, the current test result value will be EPass. -*/ - { - INFO_PRINTF1(_L("In the file CSifActivateStep::ImplTestStepL()")); - - if (iActivate) - { - iSif.Activate(iComponentId, iStatus); - } - else - { - iSif.Deactivate(iComponentId, iStatus); - } - - CancelableWait(); - - User::LeaveIfError(iStatus.Int()); - - if (!CompareOpaqueResultsL()) - SetTestStepResult(EFail); - } - -/** -* This test step implements verification of concurrent operations. -*/ - -CSifMultipleInstallStep::~CSifMultipleInstallStep() - /** - * Destructor - */ - { - } - -CSifMultipleInstallStep::CSifMultipleInstallStep() - /** - * Constructor - */ - { - SetTestStepName(KSifMultipleInstallStep); - } - -void CSifMultipleInstallStep::ImplTestStepPreambleL() -/** -* @return - TVerdict code -* Override of base class virtual -*/ - { - INFO_PRINTF1(_L("This is TestStepPreamble method of class CSifMultipleInstallStep")); - - LoadFileNameFromConfigL(); - LoadExclusiveOperationFlagFromConfigL(); - } - -void CSifMultipleInstallStep::ImplTestStepL() - { - INFO_PRINTF1(_L("In the file CSifMultipleInstallStep::ImplTestStepL()")); - LoadOpaqueParamsL(); - - if (TestStepResult()!=EPass) - { - INFO_PRINTF1(_L("CSifMultipleInstallStep::ImplTestStepL() called with TestStepResult()!=EPass")); - return; - } - - TInt expectedConcurrentResult = 0; - TInt overlapRequest = EFalse; - if (!GetIntFromConfig(ConfigSection(), KTe_ExpectedConcurrentResult, expectedConcurrentResult) || - !GetBoolFromConfig(ConfigSection(), KTe_OverlapRequest, overlapRequest)) - { - INFO_PRINTF3(_L("Expected test parameters: %S or %S not found "), &KTe_ExpectedConcurrentResult, &KTe_OverlapRequest); - User::Leave(KErrNotFound); - } - - /* First installation request */ - RSoftwareInstall sif1; - TInt error = sif1.Connect(); - if (error != KErrNone) - { - INFO_PRINTF2(_L("Failed to connect to the SIF server, error code: %d"), error); - User::Leave(error); - } - CleanupClosePushL(sif1); - - TRequestStatus status1; - sif1.Install(iFileName, status1); - - if (!overlapRequest) - { - User::WaitForRequest(status1); - } - - /* Second installation request */ - - // Use different file name if provided - TPtrC fileName2; - if (!GetStringFromConfig(ConfigSection(), _L("packageFile2"), fileName2)) - { - fileName2.Set(iFileName); - } - - RSoftwareInstall sif2; - error = sif2.Connect(); - if (error != KErrNone) - { - INFO_PRINTF2(_L("Failed to connect to the SIF server, error code: %d"), error); - User::Leave(error); - } - CleanupClosePushL(sif2); - - TRequestStatus status2; - - if (iUseEnhancedApi) - { - sif2.Install(fileName2, *iPluginOpaqueArguments, *iPluginOpaqueResults, status2, iExclusiveOperation); - } - else - { - sif2.Install(fileName2, status2, iExclusiveOperation); - } - - if (overlapRequest) - { - User::WaitForRequest(status1); - } - - User::WaitForRequest(status2); - - //close both the sessions at the end. - CleanupStack::PopAndDestroy(2, &sif1); - - if(status2 != expectedConcurrentResult) - { - INFO_PRINTF3(_L("status2: %d expectedResult1: %d"), status2.Int(), expectedConcurrentResult); - SetTestStepResult(EFail); - } - User::LeaveIfError(status1.Int()); - }