backupandrestore/backuptest/burtestserver/TestSteps/src/t_teststeprestore.cpp
changeset 0 d0791faffa3f
child 19 0aa8cc770c8a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/backupandrestore/backuptest/burtestserver/TestSteps/src/t_teststeprestore.cpp	Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,425 @@
+// 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 "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
+ @released
+*/
+#include "t_teststeprestore.h"
+
+namespace bur_ts
+	{
+	
+	CBURTestStepRestore* CBURTestStepRestore::NewL(CBURTestServer& aTestServer)
+		/**
+		Symbian OS Constructor
+		
+		@internalComponent
+		@released
+		
+		@param aParent - The parent CBURTestServer of this child test step.
+		@return Pointer to a newly created CBURTestStepRestore object.
+		*/
+		{
+		CBURTestStepRestore* self = new (ELeave) CBURTestStepRestore(aTestServer);
+		CleanupStack::PushL(self);
+		self->ConstructL();
+		CleanupStack::Pop();
+		return self;
+		}
+	
+	CBURTestStepRestore::CBURTestStepRestore(CBURTestServer& aTestServer)
+		/**
+		C++ Constructor
+		
+		@internalComponent
+		@released
+		
+		@param aParent - The parent CBURTestServer of this child test step.
+		*/
+		:CBURTestStepBase(aTestServer)
+		{}
+	
+	void CBURTestStepRestore::ConstructL()
+		/**
+		Symbian OS 2nd-phase Constructor
+		
+		@internalComponent
+		@released
+		*/
+		{
+		TInt error;
+		
+		// Initialise the drive list to empty:
+		iDriveList.FillZ();
+		
+		iMode = ERestoreMode;
+		
+		User::LeaveIfError(iFs.Connect());
+		
+		// Install an active scheduler for this test step
+		iActiveScheduler = new(ELeave) CActiveScheduler;
+		CActiveScheduler::Install(iActiveScheduler);
+		
+		TRAP(error, iBackupClient = CSBEClient::NewL());
+		if (error != KErrNone)
+			{
+			_LIT(KClientConnection, "SBEClientConn");
+			User::Panic(KClientConnection,error);
+			}
+			
+		_LIT(KBURTRestore, "BURTestServerRestore");
+		User::RenameThread(KBURTRestore);
+		//User::SetCritical(User::ESystemCritical);
+		
+		SetTestStepName(KBURTestRestore);
+		}
+	
+	CBURTestStepRestore::~CBURTestStepRestore()
+		/**
+		C++ Destructor
+		
+		@internalComponent
+		@released
+		*/
+		{
+		}
+
+	TVerdict CBURTestStepRestore::doTestStepPreambleL()
+		/**
+		Override of base class virtual function
+		
+		@internalComponent
+		@released
+		@return TVerdict code
+		*/
+		{
+		SetTestStepResult(EPass);
+		return TestStepResult();
+		}
+
+	TVerdict CBURTestStepRestore::doTestStepL()
+		/**
+		Override of base class pure virtual
+		
+		@internalComponent
+		@released
+		@return TVerdict code
+		*/
+		{
+		_LIT(KLog1, "Processing user options...");
+		Log(LOG_LEVEL2, KLog1);
+		ProcessUserOptionsL();
+		
+		TBURPartType type = EBURRestoreFull;
+			
+		iStorageManager->ReadDataOwnersFromDiskL(iDataOwners);
+		
+		CheckValidRegistrationL();	
+			
+		if (iIsPartial)
+			{
+			_LIT(KLog2, "Preparing for PARTIAL restore...");
+			Log(LOG_LEVEL2, KLog2);
+			PrepareForPartialBURL();
+			SetSIDListForPartialL();
+			type = EBURRestorePartial;
+			}
+		else
+			{
+			_LIT(KLog3, "Preparing for FULL restore...");
+			Log(LOG_LEVEL2, KLog3);
+			}
+			
+		// Set restore mode:
+		_LIT(KLog4, "Setting restore mode...");
+		Log(LOG_LEVEL2, KLog4);
+		TRAPD(burmode, SetBURModeL(type, iBackupIncType));
+		if (burmode != KErrNone)
+			{
+			_LIT(KLog5, "Error setting restore Mode ");
+			LogWithNum(LOG_LEVEL3, KLog5, burmode);
+			}
+		
+		//SupplyRegistrationDataL();
+		
+		// system data
+		SupplySystemSnapshotDataL();
+		RestoreSystemBaseDataL();
+		
+		RestoreJavaMidletL();
+			
+		// confirm system files restored 
+		iBackupClient->AllSystemFilesRestored();
+		
+		
+		/** Restore data according to user preferences */
+		if (iBackupIncType == EBackupIncrement)
+			{
+			IncrementalRestoreL();
+			}
+		else
+			{
+			BaseRestoreL();
+			}
+			
+		Log(LOG_LEVEL2, _L("Setting backup mode to Normal ..."));
+		TRAPD(err2,SetBURModeL(EBURNormal, ENoBackup));
+		if (err2 != KErrNone)
+			{
+			_LIT(KBURError, "Error setting Backup mode ");
+			LogWithNum(LOG_LEVEL3, KBURError, err2);
+			}
+		
+		VerifyRestoreResultL();
+		
+		return TestStepResult();
+		}
+	
+	void CBURTestStepRestore::VerifyRestoreResultL()
+		{		
+		if (iPrivateFileNames.Count() != iPrivateFileSizes.Count())
+			{
+			iFailures++;
+			_LIT(KLogCount, "Restore name and size count of private files don't match");
+			Log(LOG_LEVEL3, KLogCount);
+			SetTestStepResult(TVerdict(EFail));
+			return;
+			}
+		
+		/** if we have configure name list of private file and then we check it. */
+		if (iPrivateFileNames.Count() > 0)
+			{			
+			TInt count = iPrivateFileNames.Count();
+			for (TInt i=0; i<count; ++i)
+				{
+				RFile file;
+				CleanupClosePushL(file);				
+				TInt err = file.Open(Fs(), iPrivateFileNames[i], EFileRead);
+				if (err != KErrNone)
+					{
+					CleanupStack::PopAndDestroy(&file);
+					User::Leave(err);
+					}
+				
+				TInt size;
+				file.Size(size);
+				
+				if (size != iPrivateFileSizes[i])
+					{
+					iFailures++;
+					_LIT(KLogRestore, "Restore private files error ");
+					Log(LOG_LEVEL3, KLogRestore);
+					SetTestStepResult(TVerdict(EFail));						
+					}
+				CleanupStack::PopAndDestroy(&file); // file
+				}// end for	
+			}// end if
+		}
+	
+	void CBURTestStepRestore::BaseRestoreL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		RestoreJavaMidletDataL();
+		
+		// passive
+		SupplyPassiveSnapshotDataL();
+		RestorePassiveBaseDataL();
+		
+		//active
+		SupplyActiveSnapshotDataL();
+		RestoreActiveBaseDataL();
+		}
+	
+	void CBURTestStepRestore::IncrementalRestoreL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		RestoreJavaMidletDataL();
+		
+		// passive
+		SupplyPassiveSnapshotDataL();
+		RestorePassiveBaseDataL();
+		RestorePassiveIncDataL();
+		
+		
+		//active
+		SupplyActiveSnapshotDataL();
+		RestoreActiveBaseDataL();
+		RestoreActiveIncDataL();
+		}
+		
+	
+	void CBURTestStepRestore::SupplyRegistrationDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		_LIT(KRes, "Supplying registration data...");
+		Log(LOG_LEVEL2, KRes);
+		DoSupplyL(ERegistrationData);
+		}
+	
+	void CBURTestStepRestore::SupplyPassiveSnapshotDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		_LIT(KSupp, "Supplying passive snapshot data...");
+		Log(LOG_LEVEL2, KSupp);
+		DoSupplyL(EPassiveSnapshotData);	
+		}
+	
+	void CBURTestStepRestore::RestorePassiveBaseDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		_LIT(KResBase, "Restoring passive base data...");
+		Log(LOG_LEVEL2, KResBase);
+		DoSupplyL(EPassiveBaseData);
+		}
+	
+	void CBURTestStepRestore::RestorePassiveIncDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		_LIT(KPassInc, "Restoring passive incremental data...");
+		Log(LOG_LEVEL2, KPassInc);
+		DoSupplyL(EPassiveIncrementalData);
+		}
+	
+	void CBURTestStepRestore::SupplyActiveSnapshotDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		_LIT(KSuppSnap, "Supplying active snapshot data...");
+		Log(LOG_LEVEL2, KSuppSnap);
+		DoSupplyL(EActiveSnapshotData);
+		}
+		
+	void CBURTestStepRestore::RestoreActiveBaseDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		_LIT(KActBase, "Restoring active base data...");
+		Log(LOG_LEVEL2, KActBase);
+		DoSupplyL(EActiveBaseData);
+		}
+		
+	void CBURTestStepRestore::RestoreActiveIncDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		_LIT(KActIncD, "Restoring active incremental data...");
+		Log(LOG_LEVEL2, KActIncD);
+		DoSupplyL(EActiveIncrementalData);
+		}
+		
+	void CBURTestStepRestore::RestoreSystemBaseDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		GeneratePIDTransferTypesL(iTransferTypes, ESystemData);
+		// go through each of them and check if we have snapshot to supply
+		if (iTransferTypes.Count())
+			{
+			_LIT(KSysBase, "Restoring system base data...");
+			Log(LOG_LEVEL2, KSysBase);
+			SupplyDataL(iTransferTypes);
+			}
+		}
+		
+	void CBURTestStepRestore::SupplySystemSnapshotDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		GeneratePIDTransferTypesL(iTransferTypes, ESystemSnapshotData);
+		// go through each of them and check if we have snapshot to supply
+		if (iTransferTypes.Count())
+			{
+			_LIT(KSysSnap, "Supply System Snapshot Data ...");
+			Log(LOG_LEVEL2, KSysSnap);
+			SupplyDataL(iTransferTypes);
+			}
+		}
+		
+	void CBURTestStepRestore::RestoreJavaMidletL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		GenerateJavaTransferTypesL(iTransferTypes, EJavaMIDlet);
+		if (iTransferTypes.Count())
+			{
+			_LIT(KJMidlet, "Restoring Java Midlets ...");
+			Log(LOG_LEVEL2, KJMidlet);
+			SupplyDataL(iTransferTypes);
+			}
+		}
+	
+	void CBURTestStepRestore::RestoreJavaMidletDataL()
+		/**
+		@internalComponent
+		@released
+		*/
+		{
+		GenerateJavaTransferTypesL(iTransferTypes, EJavaMIDletData);
+		if (iTransferTypes.Count())
+			{
+			_LIT(KJMidletData, "Restoring Java Midlets Data ...");
+			Log(LOG_LEVEL2, KJMidletData);
+			SupplyDataL(iTransferTypes);
+			}
+		}
+
+	TVerdict CBURTestStepRestore::doTestStepPostambleL()
+		/**
+		@return - TVerdict code
+		Override of base class pure virtual
+		*/
+		{
+		_LIT(KLog, "Number of failures:");
+		LogWithNum(LOG_LEVEL3, KLog, iFailures);
+		if (iFailures)
+			{
+			SetTestStepResult(TVerdict(EFail));
+			}
+		return TestStepResult();
+		}
+		
+
+	} 	// end namespace