installationservices/swcomponentregistry/test/tscr/source/componentmanagementsteps.cpp
changeset 24 84a16765cd86
child 25 98b66e4fb0be
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/installationservices/swcomponentregistry/test/tscr/source/componentmanagementsteps.cpp	Fri Mar 19 09:33:35 2010 +0200
@@ -0,0 +1,605 @@
+/*
+* Copyright (c) 2008-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: 
+* Implements the test steps for component management APIs in the SCR 
+*
+*/
+
+
+#include "componentmanagementsteps.h"
+#include "tscrdefs.h"
+#include <scs/cleanuputils.h>
+
+using namespace Usif;
+
+
+// -----------CScrAddComponentStep-----------------
+
+CScrAddComponentStep::CScrAddComponentStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrAddComponentStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+Usif::TComponentId CScrAddComponentStep::AddLocalisableComponentL()
+	{
+	RPointerArray<CLocalizableComponentInfo> componentInfo;
+	CleanupResetAndDestroyPushL(componentInfo);
+	GetLocalisedComponentsFromConfigL(componentInfo);
+	
+	TPtrC swTypeName;
+	GetSoftwareTypeNameL(swTypeName);
+	
+	TScrComponentOperationType operationType(EScrCompInstall);
+	TInt opTypeInt(0);
+	if(GetIntFromConfig(ConfigSection(), KOperationType, opTypeInt))
+		{
+		operationType = static_cast<TScrComponentOperationType>(opTypeInt);
+		}
+		
+	TComponentId componentId;
+	TPtrC globalIdName;
+	if(GetGlobalIdNameL(globalIdName))
+		componentId = iScrSession.AddComponentL(componentInfo, swTypeName, &globalIdName,operationType);
+	else
+		componentId = iScrSession.AddComponentL(componentInfo, swTypeName,NULL,operationType);
+	
+	CleanupStack::PopAndDestroy(&componentInfo);
+	return componentId;
+	}
+
+void CScrAddComponentStep::ImplTestStepL()
+	{		
+	TBool isLocalisable(EFalse);
+	GetBoolFromConfig(ConfigSection(), _L("IsLocalisable"), isLocalisable);
+	TComponentId componentId(0);
+	
+	if (isLocalisable)
+		componentId = AddLocalisableComponentL();
+	else
+		componentId = AddNonLocalisableComponentL();
+	
+	TPtrC version;
+	if (GetStringFromConfig(ConfigSection(), KVersionName, version))
+		{
+		// Version param is provided. Set the version of the component.
+		iScrSession.SetComponentVersionL(componentId, version);
+		}
+			
+	AppendSharedComponentIdL(componentId);
+	}
+
+
+void CScrAddComponentStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrSetComponentPropertyStep-----------------
+
+CScrSetComponentPropertyStep::CScrSetComponentPropertyStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrSetComponentPropertyStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrSetComponentPropertyStep::ImplTestStepL()
+	{
+	TInt componentId = GetComponentIdL();
+
+	RPointerArray<CPropertyEntry> properties;
+	CleanupResetAndDestroyPushL(properties);
+	GetPropertiesFromConfigL(properties, ETrue); // ETrue means that the localizable properties are supported.
+	TInt count = properties.Count();
+	for(TInt i=0; i<count; ++i)
+		{
+		CPropertyEntry::TPropertyType propertyType = properties[i]->PropertyType();
+		switch(propertyType)
+			{
+			case CPropertyEntry::EBinaryProperty:
+				{
+				CBinaryPropertyEntry* binaryProperty = dynamic_cast<CBinaryPropertyEntry*>(properties[i]);
+				iScrSession.SetComponentPropertyL(componentId, binaryProperty->PropertyName(), binaryProperty->BinaryValue());
+				break;
+				}
+			case CPropertyEntry::ELocalizedProperty:
+				{
+				CLocalizablePropertyEntry *locProperty = static_cast<CLocalizablePropertyEntry*>(properties[i]);
+				iScrSession.SetComponentPropertyL(componentId, locProperty->PropertyName(), locProperty->StrValue(), locProperty->LocaleL());
+				break;
+				}
+			case CPropertyEntry::EIntProperty:
+				{
+				CIntPropertyEntry *intProperty = dynamic_cast<CIntPropertyEntry*>(properties[i]);
+				iScrSession.SetComponentPropertyL(componentId, intProperty->PropertyName(), intProperty->Int64Value());
+				}
+			}// switch
+		}// for
+	
+	CleanupStack::PopAndDestroy(&properties);
+	}
+
+void CScrSetComponentPropertyStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrRegisterFileStep-----------------
+
+CScrRegisterFileStep::CScrRegisterFileStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrRegisterFileStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrRegisterFileStep::ImplTestStepL()
+	{
+	RPointerArray<HBufC> fileList;
+	CleanupResetAndDestroyPushL(fileList);
+	GetFileNameListFromConfigL(fileList);
+	
+	TInt componentId = GetComponentIdL();
+	
+	TInt fileCount = fileList.Count();
+	
+	for(TInt i=0; i<fileCount; ++i)
+		{
+		// Fetch the Boolean flag which would tell SCR that the registered file needn't affect the drive list used by the component. The flag is optional with default ETrue
+		_LIT(KConsiderDrivesPrefix, "ConsiderDrives");
+		TBuf<MAX_SCR_PARAM_LENGTH> considerDrivesParamName = KConsiderDrivesPrefix();
+		GenerateIndexedAttributeNameL(considerDrivesParamName, i);
+		TBool considerFileInDriveList(ETrue);
+		(void)GetBoolFromConfig(ConfigSection(), considerDrivesParamName, considerFileInDriveList);
+		
+		iScrSession.RegisterComponentFileL(componentId, *fileList[i], considerFileInDriveList);
+		}
+	CleanupStack::PopAndDestroy(&fileList);
+	}
+
+void CScrRegisterFileStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrAddFilePropertyStep-----------------
+CScrAddFilePropertyStep::CScrAddFilePropertyStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrAddFilePropertyStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrAddFilePropertyStep::ImplTestStepL()
+	{
+	TInt componentId = GetComponentIdL();
+	
+	TPtrC fileName;
+	GetFileNameFromConfigL(fileName);	
+	
+	RPointerArray<CPropertyEntry> propertiesAdded;
+	CleanupResetAndDestroyPushL(propertiesAdded);
+	GetPropertiesFromConfigL(propertiesAdded);
+	
+	TInt count = propertiesAdded.Count();
+	for(TInt i=0; i<count; ++i)
+		{
+		CPropertyEntry::TPropertyType propertyType = propertiesAdded[i]->PropertyType();
+		switch(propertyType)
+			{
+			case CPropertyEntry::EBinaryProperty:
+				{
+				CBinaryPropertyEntry *binaryProperty = dynamic_cast<CBinaryPropertyEntry*>(propertiesAdded[i]);
+				iScrSession.SetFilePropertyL(componentId, fileName, binaryProperty->PropertyName(), binaryProperty->BinaryValue());
+				break;
+				}
+			case CPropertyEntry::EIntProperty:
+				{
+				CIntPropertyEntry *intProperty = dynamic_cast<CIntPropertyEntry*>(propertiesAdded[i]);
+				iScrSession.SetFilePropertyL(componentId, fileName, intProperty->PropertyName(), intProperty->IntValue());
+				break;
+				}
+			case CPropertyEntry::ELocalizedProperty:
+				{
+				PrintErrorL(_L("Localizable properties are not supported for files!"), KErrAbort);
+				}								
+			}// switch
+		}// for
+	
+	CleanupStack::PopAndDestroy(&propertiesAdded);
+	}
+
+void CScrAddFilePropertyStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrSetCommonPropertyStep-----------------
+CScrSetCommonPropertyStep::CScrSetCommonPropertyStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrSetCommonPropertyStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrSetCommonPropertyStep::ImplTestStepL()
+	{
+	TInt componentId = GetComponentIdL();
+	
+	TPtrC version;
+	if(!GetStringFromConfig(ConfigSection(), KVersionName, version))
+		PrintErrorL(_L("Version was not found!"), KErrNotFound);
+
+	TBool isRemovable;
+	if(!GetBoolFromConfig(ConfigSection(), KRemovableName, isRemovable))
+		PrintErrorL(_L("Removable was not found!"), KErrNotFound);
+
+	TBool isDrmProtected;
+	if(!GetBoolFromConfig(ConfigSection(), KDrmProtectedName, isDrmProtected))
+		PrintErrorL(_L("DrmProtected flag was not found!"), KErrNotFound);
+
+	TBool isHidden;
+	if(!GetBoolFromConfig(ConfigSection(), KHiddenName, isHidden))
+		PrintErrorL(_L("Hidden flag was not found!"), KErrNotFound);
+
+	TBool isKnownRevoked;
+	if(!GetBoolFromConfig(ConfigSection(), KKnownRevokedName, isKnownRevoked))
+		PrintErrorL(_L("KnownRevoked flag was not found!"), KErrNotFound);
+
+	TBool isOriginVerified;
+	if(!GetBoolFromConfig(ConfigSection(), KOriginVerifiedName, isOriginVerified))
+		PrintErrorL(_L("OriginVerified flag was not found!"), KErrNotFound);
+
+	TInt64 componentSize(0);
+	if(!Get64BitIntegerFromConfigL(KComponentSizeName(), componentSize))
+		PrintErrorL(_L("ComponentSize was not found!"), KErrNotFound);
+	
+	TLanguage locale(ELangNone);
+	if(!GetLocaleFromConfigL(locale))
+		PrintErrorL(_L("Locale was not found!"), KErrNotFound);
+	
+	TPtrC componentName;
+	GetComponentNameFromConfigL(componentName);
+
+	TPtrC vendorName;
+	GetVendorNameFromConfigL(vendorName);
+
+	StartTimer();
+    iScrSession.SetComponentVersionL(componentId, version);
+    iScrSession.SetIsComponentRemovableL(componentId, isRemovable);
+    iScrSession.SetIsComponentDrmProtectedL(componentId, isDrmProtected);
+    iScrSession.SetIsComponentHiddenL(componentId, isHidden);
+    iScrSession.SetIsComponentKnownRevokedL(componentId, isKnownRevoked);
+    iScrSession.SetIsComponentOriginVerifiedL(componentId, isOriginVerified);
+    iScrSession.SetComponentSizeL(componentId, componentSize);
+    iScrSession.SetComponentNameL(componentId, componentName, locale);
+    iScrSession.SetVendorNameL(componentId, vendorName, locale);	
+	
+	}
+
+void CScrSetCommonPropertyStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrDeleteComponentPropertyStep-----------------
+CScrDeleteComponentPropertyStep::CScrDeleteComponentPropertyStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrDeleteComponentPropertyStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrDeleteComponentPropertyStep::ImplTestStepL()
+	{
+	TInt componentId = GetComponentIdL();		
+	RPointerArray<CPropertyEntry> propertiesToBeDeleted;
+	CleanupResetAndDestroyPushL(propertiesToBeDeleted);
+	GetPropertiesFromConfigL(propertiesToBeDeleted);
+	
+	TInt propCount = propertiesToBeDeleted.Count();
+	for(TInt i=0; i<propCount; ++i)
+		{
+		iScrSession.DeleteComponentPropertyL(componentId, propertiesToBeDeleted[i]->PropertyName());
+		}
+	CleanupStack::PopAndDestroy(&propertiesToBeDeleted);
+	}
+
+void CScrDeleteComponentPropertyStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrDeleteFilePropertyStep-----------------
+CScrDeleteFilePropertyStep::CScrDeleteFilePropertyStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrDeleteFilePropertyStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrDeleteFilePropertyStep::ImplTestStepL()
+	{
+	TInt componentId = GetComponentIdL();
+
+	TPtrC propertyName;
+	if (!GetStringFromConfig(ConfigSection(), KPropertyNameParam, propertyName))
+		PrintErrorL(_L("Property was not found!"), KErrNotFound);	
+	
+	TPtrC fileName;
+	GetFileNameFromConfigL(fileName);			
+
+	iScrSession.DeleteFilePropertyL(componentId, fileName, propertyName);
+	}
+
+void CScrDeleteFilePropertyStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrUnregisterFileStep-----------------
+CScrUnregisterFileStep::CScrUnregisterFileStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrUnregisterFileStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrUnregisterFileStep::ImplTestStepL()
+	{
+	TInt componentId = GetComponentIdL();
+	
+	TPtrC fileName;
+	GetFileNameFromConfigL(fileName);			
+
+	iScrSession.UnregisterComponentFileL(componentId, fileName);
+	}
+
+void CScrUnregisterFileStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrDeleteComponentStep-----------------
+CScrDeleteComponentStep::CScrDeleteComponentStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrDeleteComponentStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrDeleteComponentStep::ImplTestStepL()
+	{
+	TInt componentId = GetComponentIdL();
+	iScrSession.DeleteComponentL(componentId);
+	}
+
+void CScrDeleteComponentStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrDeleteAllComponentsStep-----------------
+CScrDeleteAllComponentsStep::CScrDeleteAllComponentsStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrDeleteAllComponentsStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrDeleteAllComponentsStep::ImplTestStepL()
+	{
+	RArray<TInt> componentList;
+	CleanupClosePushL(componentList);
+	ReadAllSharedComponentIdsL(componentList);
+	
+	TInt componentCount = componentList.Count();
+	for(TInt i=0; i<componentCount; ++i)
+		{
+		TRAPD(err,iScrSession.DeleteComponentL(componentList[i]));
+		if(KErrNone == err)
+			{
+			INFO_PRINTF2(_L("Component Id %d has been deleted."), componentList[i]);
+			}
+		else if(KErrNotFound == err)
+			{ // Since some components might have been deleted in the previous test cases, ignore this error.
+			INFO_PRINTF2(_L("Component Id %d has already been deleted."), componentList[i]);
+			}
+		else
+			{
+			ERR_PRINTF3(_L("Component Id %d couldn't be deleted. Error Number:%d"),componentList[i],err);
+			SetTestStepResult(EFail);
+			}
+		};
+	CleanupStack::PopAndDestroy(&componentList);
+	
+	TBuf<MAX_SCR_BUFFER_LENGTH> componentIdBuf = KNullDesC();
+	WriteSharedDataL(KComponentIdName, componentIdBuf, ESetText);
+	}
+
+void CScrDeleteAllComponentsStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrInstallComponentStep-----------------
+
+CScrInstallComponentStep::CScrInstallComponentStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrInstallComponentStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrInstallComponentStep::ImplTestStepL()
+	{
+	// BEGIN transaction
+	iScrSession.CreateTransactionL();
+	
+	// Add component record with localizable names
+	RPointerArray<CLocalizableComponentInfo> localNames;
+	CleanupResetAndDestroyPushL(localNames);
+	CLocalizableComponentInfo *localName1 = CLocalizableComponentInfo::NewLC(_L("name1"), _L("vendor1"),ELangEnglish);
+	localNames.AppendL(localName1);
+	CleanupStack::Pop(localName1);
+	CLocalizableComponentInfo *localName2 = CLocalizableComponentInfo::NewLC(_L("name2"), _L("vendor2"),ELangAmerican);
+	localNames.AppendL(localName2);
+	CleanupStack::Pop(localName2);
+	TComponentId compId = iScrSession.AddComponentL(localNames, _L("plain"));
+	CleanupStack::PopAndDestroy(&localNames);
+	
+	// Set common component attributes
+	iScrSession.SetComponentVersionL(compId, _L("2.1.3"));
+	iScrSession.SetComponentSizeL(compId, 2346);
+	iScrSession.SetIsComponentRemovableL(compId, EFalse);
+	
+	// Set custom component attributes
+	TBuf<10> propName;
+	for(TInt i=0; i<27; ++i)
+		{
+		propName.Copy(_L("intprop"));
+		propName.AppendNum(i);
+		iScrSession.SetComponentPropertyL(compId, propName, i);
+		}
+	for(TInt i=0; i<6; ++i)
+		{
+		propName.Copy(_L("strprop"));
+		propName.AppendNum(i);
+		iScrSession.SetComponentPropertyL(compId, propName, propName);
+		}
+	
+	// Register files
+	TBuf<50> fileName;
+	for(TInt i=0; i<10; ++i)
+		{
+		fileName.Copy(_L("c:\\file"));
+		fileName.AppendNum(i);
+		fileName.Append(_L(".txt"));
+		iScrSession.RegisterComponentFileL(compId, fileName);
+		}
+	
+	// Set file properties
+	for(TInt i=0; i<6; ++i)
+		{
+		propName.Copy(_L("fintprop"));
+		propName.AppendNum(i);
+		iScrSession.SetFilePropertyL(compId, fileName, propName, i);
+		}
+	TBuf8<50> propValue;
+	for(TInt i=0; i<3; ++i)
+		{
+		propName.Copy(_L("fstrprop"));
+		propName.AppendNum(i);
+		propValue.Copy(_L8("propValue"));
+		propValue.AppendNum(i);
+		iScrSession.SetFilePropertyL(compId, fileName, propName, propValue);
+		}
+		
+	// Commit transaction
+	iScrSession.CommitTransactionL();
+	}
+	
+void CScrInstallComponentStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrAddComponentDependencyStep-----------------
+
+CScrAddComponentDependencyStep::CScrAddComponentDependencyStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrAddComponentDependencyStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrAddComponentDependencyStep::ImplTestStepL()
+	{		
+	CGlobalComponentId *supplierGlobalId  = GetGlobalComponentIdLC(KSupplierGlobalIdName(), KSupplierSwTypeName());
+	
+	HBufC *versionFrom = GetVersionFromConfigL(KVersionFrom);
+	if(versionFrom)
+		CleanupStack::PushL(versionFrom);
+	HBufC *versionTo = GetVersionFromConfigL(KVersionTo);
+	if(versionTo)
+		CleanupStack::PushL(versionTo);
+	CVersionedComponentId *supplierVersionedId = CVersionedComponentId::NewL(*supplierGlobalId, versionFrom, versionTo);
+	if(versionTo)
+		CleanupStack::PopAndDestroy(versionTo);
+	if(versionFrom)
+		CleanupStack::PopAndDestroy(versionFrom);
+	CleanupStack::PopAndDestroy(supplierGlobalId);
+	CleanupStack::PushL(supplierVersionedId);
+	
+	CGlobalComponentId *dependantGlobalId = GetGlobalComponentIdLC(KDependantGlobalIdName(), KDependantSwTypeName());
+	iScrSession.AddComponentDependencyL(*supplierVersionedId, *dependantGlobalId);
+	CleanupStack::PopAndDestroy(2, supplierVersionedId); // supplierVersionedId, dependantGlobalId
+	}
+
+
+void CScrAddComponentDependencyStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}
+
+// -----------CScrDeleteComponentDependencyStep-----------------
+
+CScrDeleteComponentDependencyStep::CScrDeleteComponentDependencyStep(CScrTestServer& aParent)	: CScrTestStep(aParent)
+	{
+	}
+
+void CScrDeleteComponentDependencyStep::ImplTestStepPreambleL()
+	{
+	CScrTestStep::ImplTestStepPreambleL();
+	}
+
+void CScrDeleteComponentDependencyStep::ImplTestStepL()
+	{		
+	CGlobalComponentId *supplierGlobalId  = GetGlobalComponentIdLC(KSupplierGlobalIdName(), KSupplierSwTypeName());
+	CGlobalComponentId *dependantGlobalId = GetGlobalComponentIdLC(KDependantGlobalIdName(), KDependantSwTypeName());
+	iScrSession.DeleteComponentDependencyL(*supplierGlobalId, *dependantGlobalId);
+	CleanupStack::PopAndDestroy(2, supplierGlobalId); // supplierGlobalId, dependantGlobalId
+	}
+
+
+void CScrDeleteComponentDependencyStep::ImplTestStepPostambleL()
+	{
+	CScrTestStep::ImplTestStepPostambleL();
+	}