--- a/installationservices/swcomponentregistry/test/tscr/source/transactionmanagementsteps.cpp Tue Aug 31 15:21:33 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,362 +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:
-* Implements the test steps for transaction management APIs in the SCR
-*
-*/
-
-
-#include "transactionmanagementsteps.h"
-
-using namespace Usif;
-
-
-// -----------CScrApplyTransactionStep-----------------
-
-CScrApplyTransactionStep::CScrApplyTransactionStep(CScrTestServer& aParent) : CScrTestStep(aParent)
- {
- }
-
-void CScrApplyTransactionStep::ImplTestStepPreambleL()
- {
- // empty
- }
-
-
-void CScrApplyTransactionStep::ImplTestStepL()
- {
- User::LeaveIfError(iScrSession.Connect());
- iScrSession.CreateTransactionL();
-
- // Add a new component into SCR database
- TComponentId componentId= AddNonLocalisableComponentL(iScrSession);
- AppendSharedComponentIdL(componentId);
-
- // Register a file to the component
- TPtrC fileName;
- GetFileNameFromConfigL(fileName);
- iScrSession.RegisterComponentFileL(componentId, fileName);
-
- // Get a property from config file and set it.
- CPropertyEntry *property = GetPropertyFromConfigLC(ETrue);
- if(property->PropertyType() != CPropertyEntry::EIntProperty)
- {
- ERR_PRINTF1(_L("The property is not an integer property which is expected!"));
- User::Leave(KErrArgument);
- }
- CIntPropertyEntry *propertyInt = dynamic_cast<CIntPropertyEntry*>(property);
- iScrSession.SetComponentPropertyL(componentId, propertyInt->PropertyName(), propertyInt->IntValue());
- CleanupStack::PopAndDestroy(propertyInt);
-
- // Commit the transaction if it is marked in the configuration
- TBool isCommitTransaction(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("CommitTransaction"), isCommitTransaction);
- if(isCommitTransaction)
- {
- iScrSession.CommitTransactionL();
- }
-
- // Cancel thetransaction if it is marked in the configuration
- TBool isCancelTransaction(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("CancelTransaction"), isCancelTransaction);
- if(isCancelTransaction)
- {
- iScrSession.RollbackTransactionL();
- }
-
- // Close the session
- iScrSession.Close();
- }
-
-void CScrApplyTransactionStep::ImplTestStepPostambleL()
- {
- // empty
- }
-
-
-// -----------CScrCreateTransactionStep-----------------
-
-void OpenSessionLC(RSoftwareComponentRegistry& aSession)
- {
- User::LeaveIfError(aSession.Connect());
- CleanupClosePushL(aSession);
- }
-
-void CreateTransactionL(RSoftwareComponentRegistry& aSession)
- {
- aSession.CreateTransactionL();
- }
-
-void OpenSubsessionL(RSoftwareComponentRegistry aSession, RSoftwareComponentRegistryView& aSubsession)
- {
- CComponentFilter *filter = CComponentFilter::NewL(); // NewL is used for the sake of coverage
- CleanupStack::PushL(filter);
- aSubsession.OpenViewL(aSession, filter);
- CleanupStack::PopAndDestroy(filter);
- }
-
-void OpenSubsessionLC(RSoftwareComponentRegistry aSession, RSoftwareComponentRegistryView& aSubsession)
- {
- OpenSubsessionL(aSession, aSubsession);
- CleanupClosePushL(aSubsession);
- }
-
-CScrCreateTransactionStep::CScrCreateTransactionStep(CScrTestServer& aParent) : CScrTestStep(aParent)
- {
- }
-
-void CScrCreateTransactionStep::ImplTestStepPreambleL()
- {
- // empty
- }
-
-
-void CScrCreateTransactionStep::ImplTestStepL()
- {
- RSoftwareComponentRegistry session1;
- RSoftwareComponentRegistry session2;
- RSoftwareComponentRegistryView subsession;
- RSoftwareComponentRegistryView subsession2;
-
- TBool isBeginTransactionBeforeSubsession(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("BeginTransactionBeforeSubsession"), isBeginTransactionBeforeSubsession);
- if(isBeginTransactionBeforeSubsession)
- {
- OpenSessionLC(session1);
- CreateTransactionL(session1);
- OpenSessionLC(session2);
- OpenSubsessionLC(session2, subsession);
- CleanupStack::PopAndDestroy(3, &session1);
- }
-
- TBool isOpenSubsessionInTheSameSession(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("OpenSubsessionInTheSameSession"), isOpenSubsessionInTheSameSession);
- if(isOpenSubsessionInTheSameSession)
- {
- OpenSessionLC(session1);
- CreateTransactionL(session1);
- OpenSubsessionLC(session1, subsession);
- CleanupStack::PopAndDestroy(2, &session1);
-
- // Now do the same, but in reverse order
- OpenSessionLC(session1);
- OpenSubsessionLC(session1, subsession);
- CreateTransactionL(session1);
- CleanupStack::PopAndDestroy(2, &session1);
- }
-
- TBool isBeginTransactionAfterSubsession(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("BeginTransactionAfterSubsession"), isBeginTransactionAfterSubsession);
- if(isBeginTransactionAfterSubsession)
- {
- OpenSessionLC(session1);
- OpenSessionLC(session2);
- OpenSubsessionLC(session1, subsession);
- CreateTransactionL(session2);
- CleanupStack::PopAndDestroy(3, &session1);
- }
-
- TBool isBeginTransactionInTheSameSession(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("BeginTransactionInTheSameSession"), isBeginTransactionInTheSameSession);
- if(isBeginTransactionAfterSubsession)
- {
- OpenSessionLC(session1);
- OpenSubsessionLC(session1, subsession);
- CreateTransactionL(session1);
- CleanupStack::PopAndDestroy(2, &session1);
- }
-
- TBool isBeginAfterAnotherBegin(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("BeginTransactionAfterAnotherBegin"), isBeginAfterAnotherBegin);
- if(isBeginAfterAnotherBegin)
- {
- OpenSessionLC(session1);
- CreateTransactionL(session1);
- OpenSessionLC(session2);
- CreateTransactionL(session2);
- CleanupStack::PopAndDestroy(2, &session1);
- }
-
- TBool isMultipleSubsessions(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("MultipleSubsessions"), isMultipleSubsessions);
- if(isMultipleSubsessions)
- {
- OpenSessionLC(session1);
- OpenSubsessionLC(session1, subsession);
- OpenSessionLC(session2);
- OpenSubsessionLC(session2, subsession2);
- CleanupStack::PopAndDestroy(4, &session1);
- }
-
- TBool isWriteAfterBegin(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("WriteAfterBeginTransaction"), isWriteAfterBegin);
- if(isWriteAfterBegin)
- {
- OpenSessionLC(session1);
- CreateTransactionL(session1);
- OpenSessionLC(session2);
- session2.AddComponentL(_L("test"),_L("vendor"),_L("plain"));
- CleanupStack::PopAndDestroy(2, &session1);
- }
-
- TBool isReadAfterBegin(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("ReadAfterBeginTransaction"), isReadAfterBegin);
- if(isReadAfterBegin)
- {
- OpenSessionLC(session1);
- CreateTransactionL(session1);
- OpenSessionLC(session2);
- CComponentEntry *entry = CComponentEntry::NewLC();
- session2.GetComponentL(1, *entry);
- CleanupStack::PopAndDestroy(3, &session1);
- }
-
- TBool mutatingOperationWithSubsession(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("MutatingOperationWithSubsession"), mutatingOperationWithSubsession);
- if(mutatingOperationWithSubsession)
- {
- OpenSessionLC(session1);
- OpenSubsessionLC(session1, subsession);
- OpenSessionLC(session2);
- session2.AddComponentL(_L("test"),_L("vendor"),_L("plain"));
- CleanupStack::PopAndDestroy(3, &session1); // session2, subsession
- }
-
- TBool closeSessionWithoutClosingSubsession(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("CloseSessionWithoutClosingSubsession"), closeSessionWithoutClosingSubsession);
- if(closeSessionWithoutClosingSubsession)
- {
- OpenSessionLC(session1);
- CreateTransactionL(session1);
- OpenSubsessionL(session1, subsession);
- OpenSubsessionL(session1, subsession2);
- CComponentEntry *entry = subsession.NextComponentL();
- CleanupStack::PushL(entry);
- CComponentEntry *entry2 = subsession2.NextComponentL();
- CleanupStack::PushL(entry2);
- CleanupStack::PopAndDestroy(3, &session1); // entry, entry2
- }
-
-
- TBool isMultipleActiveSubsessions (EFalse);
- GetBoolFromConfig(ConfigSection(), _L("MultipleActiveSubsessions"), isMultipleActiveSubsessions);
- if(isMultipleActiveSubsessions)
- {
- OpenSessionLC(session1);
- OpenSubsessionLC(session1, subsession);
- TInt foundRecords (0);
- CComponentEntry *entry = subsession.NextComponentL();
- if(entry)
- {
- ++foundRecords;
- delete entry;
- entry = NULL;
- }
-
- OpenSessionLC(session2);
- CComponentFilter *filter = CComponentFilter::NewL(); // NewL is used for the sake of coverage
- CleanupStack::PushL(filter);
- filter->SetNameL(_L("nonexistingcomponentnamefortransactionmanagementtest"));
- filter->SetVendorL(_L("nonexistingvendornamefortransactionmanagementtest"));
- subsession2.OpenViewL(session2, filter);
- CleanupStack::PopAndDestroy(filter);
- CleanupClosePushL(subsession2);
-
- CComponentEntry *entry2 = subsession2.NextComponentL();
- if(entry2)
- {
- delete entry2;
- entry2 = NULL;
- entry2 = subsession2.NextComponentL();
- ERR_PRINTF1(_L("Subsession2 has unexpectedly retrieved a component!"));
- SetTestStepResult(EFail);
- }
- CleanupStack::PopAndDestroy(2, &session2); // session2, subsession2
-
- entry = subsession.NextComponentL();
- while(entry)
- {
- ++foundRecords;
- delete entry;
- entry = NULL;
- entry = subsession.NextComponentL();
- }
- if(foundRecords < 2)
- {
- ERR_PRINTF1(_L("Subsession1 has unexpectedly reached the end of the view!"));
- SetTestStepResult(EFail);
- }
- CleanupStack::PopAndDestroy(2, &session1);
- }
- }
-
-void CScrCreateTransactionStep::ImplTestStepPostambleL()
- {
- // empty
- }
-
-// -----------CScrManageAnotherTransactionStep-----------------
-
-CScrManageAnotherTransactionStep::CScrManageAnotherTransactionStep(CScrTestServer& aParent) : CScrTestStep(aParent)
- {
- }
-
-void CScrManageAnotherTransactionStep::ImplTestStepPreambleL()
- {
- // empty
- }
-
-
-void CScrManageAnotherTransactionStep::ImplTestStepL()
- {
- User::LeaveIfError(iScrSession.Connect());
- iScrSession.CreateTransactionL();
-
- RSoftwareComponentRegistry anotherSession;
- User::LeaveIfError(anotherSession.Connect());
- CleanupClosePushL(anotherSession);
-
- // Commit the transaction if it is marked in the configuration
- TBool isCommitTransaction(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("CommitTransaction"), isCommitTransaction);
- if(isCommitTransaction)
- anotherSession.CommitTransactionL();
-
- TBool isCancelTransaction(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("CancelTransaction"), isCancelTransaction);
- if(isCancelTransaction)
- anotherSession.RollbackTransactionL();
-
- TBool isInvokeMutatingFunction(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("InvokeMutatingFunction"), isInvokeMutatingFunction);
- if(isInvokeMutatingFunction)
- anotherSession.AddComponentL(_L("test"), _L("vendor"),_L("plain"));
-
- TBool isInvokeNonMutatingFunction(EFalse);
- GetBoolFromConfig(ConfigSection(), _L("InvokeNonMutatingFunction"), isInvokeNonMutatingFunction);
- if(isInvokeNonMutatingFunction)
- {
- RArray<TComponentId> componentIdList;
- anotherSession.GetComponentIdsL(componentIdList);
- componentIdList.Close();
- }
-
- CleanupStack::PopAndDestroy(&anotherSession);
- iScrSession.Close();
- }
-
-void CScrManageAnotherTransactionStep::ImplTestStepPostambleL()
- {
- // empty
- }