--- a/installationservices/swtransactionservices/test/tintegrityservices/source/tintegrityservicesstep.cpp Tue Aug 31 15:21:33 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1487 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-/**
- @file
- @test
- @internalTechnology
-*/
-
-#include "tintegrityservicesstep.h"
-#include <s32file.h>
-#include "journal.h"
-#include "journalfile.h"
-
-
-/////////////////////////////////////////////////////////////////////
-// CIntegrityServicesStep
-/////////////////////////////////////////////////////////////////////
-CIntegrityServicesStepBase::CIntegrityServicesStepBase(CStsTestServer &aStsTestServer):CStsBaseTestStep(aStsTestServer)
- {
- }
-void CIntegrityServicesStepBase::ImplTestStepPreambleL()
- {
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::ImplTestStepPreambleL()"));
- __UHEAP_MARK;
-
- // Install an active scheduler
- CActiveScheduler* s = new (ELeave) CActiveScheduler;
- s->Install(s);
-
- User::LeaveIfError(iIntegritySession.Connect());
-
- ReadFailureSettingsL();
- }
-
-void CIntegrityServicesStepBase::ImplTestStepPostambleL()
- {
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::ImplTestStepPostambleL()"));
- // Remove the installed active scheduler
- CActiveScheduler* s = CActiveScheduler::Current();
- s->Install(NULL);
- delete s;
-
- iIntegritySession.Close();
-
-__UHEAP_MARKEND;
-
-
- }
-
-void CIntegrityServicesStepBase::GetStringArrayFromConfigL(const TDesC& aSectName, const TDesC& aKeyName, RArray<TPtrC>& aArray)
- {
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::GetStringArrayFromConfigL()"));
- _LIT(KKeyFormat, "-%02d");
- HBufC* buf = HBufC::NewLC(aKeyName.Length() + KKeyFormat().Length());
- TPtr ptr(buf->Des());
- INFO_PRINTF2(_L("Parsing attribute: %S"), &aKeyName);
-
- TInt i = 0;
- TBool cont = ETrue;
- do
- {
- ++i;
- ptr = aKeyName;
- ptr.AppendFormat(KKeyFormat(), i);
- TPtrC val;
-
- cont = GetStringFromConfig(aSectName, ptr, val);
- if (cont)
- {
- User::LeaveIfError(aArray.Append(val));
- }
- } while (cont);
-
- INFO_PRINTF2(_L("Element count: %d"), i-1);
- CleanupStack::PopAndDestroy(buf);
- }
-
-TBool CIntegrityServicesStepBase::CheckFilesL()
- {
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::CheckFilesL()"));
- TInt result = ETrue;
- RArray<TPtrC> fileArray;
- CleanupClosePushL(fileArray);
-
- GetStringArrayFromConfigL(ConfigSection(), KPresent, fileArray);
- for (TInt file = 0; file < fileArray.Count();file++)
- {
- if(FileExistsL(fileArray[file]))
- {
- INFO_PRINTF2(_L("%S was found"), &fileArray[file]);
- }
- else
- {
- ERR_PRINTF2(_L("%S was not found"), &fileArray[file]);
- result = EFalse;
- }
- }
- fileArray.Reset();
-
- GetStringArrayFromConfigL(ConfigSection(), KAbsent, fileArray);
- for (TInt file = 0; file < fileArray.Count();file++)
- {
- if(FileExistsL(fileArray[file]))
- {
- ERR_PRINTF2(_L("%S was found"), &fileArray[file]);
- result = EFalse;
- }
- else
- {
- INFO_PRINTF2(_L("%S was not found"), &fileArray[file]);
- }
- }
- fileArray.Reset();
- CleanupStack::PopAndDestroy(&fileArray);
- return result;
- }
-
-void CIntegrityServicesStepBase::ReadFailureSettingsL()
- {
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::ReadFailureSettings()"));
- TPtrC failType;
- if(!GetStringFromConfig(ConfigSection(), KFailType, failType))
- {
- failType.Set(KNullDesC);
- }
-
- TPtrC failPosition;
- if(!GetStringFromConfig(ConfigSection(), KFailPosition, failPosition))
- {
- failPosition.Set(KNullDesC);
- }
-
- TPtrC failFileName;
- if(!GetStringFromConfig(ConfigSection(), KFailFileName, failFileName))
- {
- failFileName.Set(KNullDesC);
- }
-
- iIntegritySession.SetSimulatedFailureL(failType, failPosition, failFileName);
- }
-
-void CIntegrityServicesStepBase::doInstallL()
- {
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::doInstallL()"));
- RArray<TPtrC> fileArray;
- CleanupClosePushL(fileArray);
-
- GetStringArrayFromConfigL(ConfigSection(), KRemoveFile, fileArray);
- for (TInt file = 0; file < fileArray.Count();file++)
- {
- INFO_PRINTF2(_L("RemovingFile: %S"), &fileArray[file]);
-
- iIntegritySession.RemoveL(fileArray[file]);
- }
- fileArray.Reset();
-
-
- GetStringArrayFromConfigL(ConfigSection(), KAddFile, fileArray);
- for (TInt file = 0; file < fileArray.Count();file++)
- {
- INFO_PRINTF2(_L("AddingFile: %S"), &fileArray[file]);
- iIntegritySession.AddL(fileArray[file]);
- iIntegritySession.CreateNewTestFileL(fileArray[file]);
- }
- fileArray.Reset();
-
- GetStringArrayFromConfigL(ConfigSection(), KTempFile, fileArray);
- for (TInt file = 0; file < fileArray.Count();file++)
- {
- INFO_PRINTF2(_L("TemporaryFile: %S"), &fileArray[file]);
- iIntegritySession.TemporaryL(fileArray[file]);
- iIntegritySession.CreateTempTestFileL(fileArray[file]);
- }
- fileArray.Reset();
-
- RArray<TPtrC> operationArray;
- CleanupClosePushL(operationArray);
-
- GetStringArrayFromConfigL(ConfigSection(), KArbitraryOpFile, fileArray);
- GetStringArrayFromConfigL(ConfigSection(), KOperation, operationArray);
- TInt fileCount = fileArray.Count();
-
- if (fileCount != operationArray.Count())
- {
- ERR_PRINTF3(_L("Number of files (%d) does not match number of operations (%d)"), fileCount, operationArray.Count());
- SetTestStepResult(EFail);
- }
- else
- {
- for (TInt file = 0; file < fileCount;file++)
- {
- if (operationArray[file].CompareF(KAddFile) == 0)
- {
- INFO_PRINTF2(_L("AddingFile: %S"), &fileArray[file]);
- iIntegritySession.AddL(fileArray[file]);
- iIntegritySession.CreateNewTestFileL(fileArray[file]);
- }
- else if (operationArray[file].CompareF(KRemoveFile) == 0)
- {
- INFO_PRINTF2(_L("RemovingFile: %S"), &fileArray[file]);
- iIntegritySession.RemoveL(fileArray[file]);
- }
- else if (operationArray[file].CompareF(KTempFile) == 0)
- {
- INFO_PRINTF2(_L("TemporaryFile: %S"), &fileArray[file]);
- iIntegritySession.TemporaryL(fileArray[file]);
- iIntegritySession.CreateTempTestFileL(fileArray[file]);
- }
- else
- {
- ERR_PRINTF3(_L("Operation %S not understood, skipping file %S"), &operationArray[file], &fileArray[file]);
- }
- }
- }
- CleanupStack::PopAndDestroy(2, &fileArray);
-
- iIntegritySession.CommitL();
- }
-
-void CIntegrityServicesStepBase::doRecoverL()
- {
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::doRecoverL()"));
- iIntegritySession.RollBackL(EFalse);
- }
-
-void CIntegrityServicesStepBase::doCleanupL()
- {
-
- INFO_PRINTF1(_L("CIntegrityServicesStepBase::doCleanupL()"));
- RArray<TPtrC> fileArray;
- CleanupClosePushL(fileArray);
-
- GetStringArrayFromConfigL(ConfigSection(), KCleanupFile, fileArray);
- for (TInt file = 0; file < fileArray.Count();file++)
- {
- TRAPD(err, DeleteFileL(fileArray[file]));
- if(err != KErrNone && err != KErrPathNotFound && err != KErrNotFound)
- {
- User::Leave(err);
- }
- }
- fileArray.Reset();
- GetStringArrayFromConfigL(ConfigSection(), KCleanupDirectory, fileArray);
- for (TInt file = 0; file < fileArray.Count();file++)
- {
- TRAPD(err, DeleteFileL(fileArray[file]));
- if(err != KErrNone && err != KErrPathNotFound && err != KErrNotFound)
- {
- User::Leave(err);
- }
- }
- fileArray.Reset();
- CleanupStack::PopAndDestroy(&fileArray);
- }
-
-/////////////////////////////////////////////////////////////////////
-// CInstallStep
-/////////////////////////////////////////////////////////////////////
-CInstallStep::CInstallStep(CStsTestServer &aStsTestServer):CIntegrityServicesStepBase(aStsTestServer)
- {
- SetTestStepName(KInstall);
- }
-
-void CInstallStep::ImplTestStepL()
- {
- INFO_PRINTF1(_L("CInstallStep::ImplTestStepL()"));
- TRAPD(err, doInstallL());
-
- if(err == KErrNone || err == KIntegrityServicesSimulatedBatteryFailure)
- {
- if(CheckFilesL())
- {
- SetTestStepResult(EPass);
- }
- else
- {
- SetTestStepResult(EFail);
- }
- }
- else
- {
- User::Leave(err);
- }
-
- }
-
-/////////////////////////////////////////////////////////////////////
-// CRecoverStep
-/////////////////////////////////////////////////////////////////////
-CRecoverStep::CRecoverStep(CStsTestServer &aStsTestServer):CIntegrityServicesStepBase(aStsTestServer)
- {
- SetTestStepName(KRecover);
- }
-
-void CRecoverStep::ImplTestStepL()
- {
- INFO_PRINTF1(_L("CRecoverStep::ImplTestStepL()"));
- // begin recovery
- TRAPD(err, doRecoverL());
-
- if(err == KErrNone || err == KIntegrityServicesSimulatedBatteryFailure)
- {
- if(CheckFilesL())
- {
- SetTestStepResult(EPass);
- }
- else
- {
- SetTestStepResult(EFail);
- }
- }
- else
- {
- User::Leave(err);
- }
-
-
- }
-
-/////////////////////////////////////////////////////////////////////
-// CCleanupStep
-/////////////////////////////////////////////////////////////////////
-CCleanupStep::CCleanupStep(CStsTestServer &aStsTestServer):CIntegrityServicesStepBase(aStsTestServer)
- {
- SetTestStepName(KCleanup);
- }
-
-void CCleanupStep::ImplTestStepL()
- {
- INFO_PRINTF1(_L("CCleanupStep::ImplTestStepL()"));
- doCleanupL();
-
- SetTestStepResult(EPass);
-
- }
-
-/////////////////////////////////////////////////////////////////////
-// CRecoverStep
-/////////////////////////////////////////////////////////////////////
-CCheckStep::CCheckStep(CStsTestServer &aStsTestServer):CIntegrityServicesStepBase(aStsTestServer)
- {
- SetTestStepName(KCheck);
- }
-
-void CCheckStep::ImplTestStepL()
- {
- INFO_PRINTF1(_L("CCheckStep::ImplTestStepL()"));
- // Just check for files
- if(CheckFilesL())
- {
- SetTestStepResult(EPass);
- }
- else
- {
- SetTestStepResult(EFail);
- }
-
-
- }
-
-
-//---------- new unit tests developed as part of the STS framework ----------
-using namespace Usif;
-
-//define event names for logging purposes (used in journal file unit tests and journal unit tests
-_LIT(KENone, "ENone");
-_LIT(KERemovedFile,"ERemovedFile");
-_LIT(KEBackupFile,"EBackupFile");
-_LIT(KETempFile,"ETempFile");
-_LIT(KEAddedFile,"EAddedFile");
-_LIT(KECommitted,"ECommitted");
-_LIT(KEBackupFilesRemoved,"EBackupFilesRemoved");
-_LIT(KEAddedFilesRemoved,"EAddedFilesRemoved");
-_LIT(KERemovedFilesRestored,"ERemovedFilesRestored");
-_LIT(KETempFilesRemoved, "ETempFilesRemoved");
-
-
-const TDesC* eventNames[] = {
- &KENone,
- &KERemovedFile,
- &KEBackupFile,
- &KETempFile,
- &KEAddedFile,
- &KECommitted,
- &KEBackupFilesRemoved,
- &KEAddedFilesRemoved,
- &KERemovedFilesRestored,
- &KETempFilesRemoved
- };
-
-
-const TFileMode defaultJournalFileMode = TFileMode (TFileMode(EFileWrite) | TFileMode(EFileShareAny));
-
-CJournalFileUnitTest::CJournalFileUnitTest(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KJournalFileUnitTest);
- }
-
-CJournalFileUnitTest::~CJournalFileUnitTest()
- {
- delete testJournalFile;
- iFs.Close();
- iLoader.Close();
- }
-
-
-void CJournalFileUnitTest::ImplTestStepPreambleL()
-/**
- @return - void code
- Override of base class virtual
- */
- {
- INFO_PRINTF1(_L("JournalFileUnitTest Preamble"));
- User::LeaveIfError(iFs.Connect());
- User::LeaveIfError(iLoader.Connect());
- testJournalFile = CTestFile::NewL(iFs);
- SetTestStepResult(EPass);
-
- }
-
-void CJournalFileUnitTest::ImplTestStepL()
-/**
- @return - void code
- Override of base class pure virtual
- */
- {
- INFO_PRINTF1(_L("JournalFileUnitTest in test step"));
- SetTestStepResult(EPass);
-
- TPtrC journalFilePathInIni = GetTargetFilePathFromConfigL();
- TParsePtrC journalFilePathParse(journalFilePathInIni);
- TDriveUnit journaldrive(journalFilePathParse.Drive());
- HBufC* targetFileName = HBufC::NewLC(KMaxFileName);
- HBufC* backupFileName = HBufC::NewLC(KMaxFileName);
-
- CJournalFile* journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
-
- //feed incorrect file to the journalfile (ie: file's on other drive)
- TPtr targetFileNameBasePtr(targetFileName->Des());
- targetFileNameBasePtr.Append(TDriveUnit(journaldrive+1).Name());
- targetFileNameBasePtr.Append(journalFilePathParse.Path());
-
- TPtr targetFileNamePtr(targetFileNameBasePtr);
- targetFileNamePtr.Append(_L("dummyadd.txt"));
-
- TPtr targetBackupFileNamePtr(backupFileName->Des());
-
- TInt err(0);
-
- TInt seekPosition(0);
- TInt seekToEndPosition(0);
- TIntValue intValue = {0};
- TIntValue extraByte = {0xFF};
-
- TRAP(err, journalFile->AddL(targetFileNamePtr));
- if(err!=KErrBadName)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::AddL() returned incorrect error code. KErrBadName is expected %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
- targetFileNamePtr.Set(targetFileNameBasePtr);
- targetFileNamePtr.Append(_L("dummytemp.txt"));
- TRAP(err, journalFile->TemporaryL(targetFileNamePtr));
- if(err!=KErrBadName)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::RemoveL() returned incorrect error code. KErrBadName is expected %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
-
- targetFileNamePtr.Set(targetFileNameBasePtr);
- targetFileNamePtr.Append(_L("dummyremove.txt"));
- TRAP(err, journalFile->RemoveL(targetFileNamePtr, targetBackupFileNamePtr));
- if(err!=KErrBadName)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::RemoveL() returned incorrect error code. KErrBadName is expected %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
-
- *targetFileName = KEmptyString;
- targetFileNameBasePtr.Set(targetFileName->Des());
- targetFileNameBasePtr.Append(journalFilePathParse.DriveAndPath());
-
- CleanupStack::PopAndDestroy(journalFile);
- DeleteFileL(journalFilePathInIni);
-//-------------------------------------------------------------------------------------
-//Steps:
-// 1.) create a CJournalFile object
-// 2.) set last event by invoking CJournalFile::EventL() (this sets the iLastEvent as well as writes the event value to the journal file on disk)
-// 3.) destroy object
-// 4.) corrupt information by overwriting the event value in the file to requested invalid value
-// 5.) recreate CjournalFile object -> this will trigger CJournalFile::ReadEntryL
-// note: the purpose of this testcase to excersise the main switch-case in CJournalFile::ReadEntryL
-//-------------------------------------------------------------------------------------
-
- TIntegrityServicesEvent eventsToSet[] = {ERemovedFile,
- EBackupFile,
- ETempFile,
- EAddedFile,
- ECommitted,
- EBackupFilesRemoved,
- EAddedFilesRemoved,
- //ETempFilesRemoved,
- ERemovedFilesRestored,
- };
- TInt numOfInvalidEvents[] = {6, //number of invalid events for ERemovedFile
- 1, //number of invalid events for EBackupFile
- 6, //number of invalid events for ETempFile
- 6, //number of invalid events for EAddedFile
- 7, //number of invalid events for ECommitted
- 9, //number of invalid events for EBackupFilesRemoved
- 6, //number of invalid events for EAddedFilesRemoved
- //ETempFilesRemoved
- 9 //number of invalid events for ERemovedFilesRestored
- };
- TIntegrityServicesEvent invalidEvents[][10] = {{EBackupFile, ECommitted, EBackupFilesRemoved, EAddedFilesRemoved, ERemovedFilesRestored, ETempFilesRemoved}, //invalid events for ERemovedFile
- {EBackupFile}, //invalid events for EBackupFile, this is not really invalid value for EBackupFile, actually EBackupFile itself is invalid on its own in the file
- {EBackupFile, ECommitted, EBackupFilesRemoved, EAddedFilesRemoved, ERemovedFilesRestored, ETempFilesRemoved}, //invalid events for ETempFile
- {EBackupFile, ECommitted, EBackupFilesRemoved, EAddedFilesRemoved, ERemovedFilesRestored, ETempFilesRemoved}, //invalid events for EAddedFile
- {ENone, EBackupFile, ECommitted, EBackupFilesRemoved, EAddedFilesRemoved, ERemovedFilesRestored, ETempFilesRemoved}, //invalid events for ECommitted
- {ENone, ERemovedFile, EBackupFile, ETempFile, EAddedFile, EBackupFilesRemoved, EAddedFilesRemoved, ERemovedFilesRestored, ETempFilesRemoved}, //invalid events for EBackupFilesRemoved
- {ENone, EBackupFile, EBackupFilesRemoved, EAddedFilesRemoved, ERemovedFilesRestored, ETempFilesRemoved}, //invalid events for EAddedFilesRemoved
- //{}, //invalid events for ETempFilesRemoved
- {ENone, ERemovedFile, EBackupFile, ETempFile, EAddedFile, ECommitted, EBackupFilesRemoved, ETempFilesRemoved, ERemovedFilesRestored} //invalid events for ERemovedFilesRestored
- };
-
- ASSERT(sizeof(eventsToSet)/sizeof(TIntegrityServicesEvent) == sizeof(numOfInvalidEvents)/sizeof(TInt) == sizeof(invalidEvents)/(sizeof(TIntegrityServicesEvent)*10));
- for (TInt i=0; i<sizeof(eventsToSet)/sizeof(TIntegrityServicesEvent); ++i)
- {
- for(TInt j=0; j<numOfInvalidEvents[i]; ++j)
- {
- journalFile=0;
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- journalFile->EventL(invalidEvents[i][j]); //set last event to any of the requested invalid events (also writes it to jounral file)
- CleanupStack::PopAndDestroy(journalFile);
- intValue.int32 = static_cast<TInt32>(eventsToSet[i]);
- seekPosition=0;
- OpenJournalFileL(journalFilePathInIni, defaultJournalFileMode);
- SeekInJournalFileL(ESeekStart, seekPosition);
- WriteIntToJournalFileL(intValue, Mode32Bit); //write the requested event to journal file (overwrites last event set by EventL())
- seekToEndPosition=0;
- SeekInJournalFileL(ESeekEnd, seekToEndPosition);
- WriteIntToJournalFileL(extraByte, Mode8Bit);
- CloseJournalFile();
- //force a Sync and catch the error that should be KErrCorrupt
- journalFile=0;
- TRAPD(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrCorrupt)
- {
- ERR_PRINTF4(_L("<font color=red>CJournalFile::SynchL() returned incorrect error code. KErrCorrupt is expected and %d is returned! Conditions: last event set via EventL(): %S Event written into journal file: %S</font>"), err, eventNames[invalidEvents[i][j]], eventNames[eventsToSet[i]]);
- SetTestStepResult(EFail);
- }
- DeleteFileL(journalFilePathInIni);
- }
- }
-//-------------------------------------------------------------------------------------
-//Steps:
-// 1.) create a journal file using CJournalFile::NewLC
-// 2.) add an item via AddL() or TemporaryL()
-// 2.) corrupt disk information in the filename written into the file
-// 3.) try to recreate journal object using CJournalFile::NewLC
-// 4.) expect KErrCorrupt
-//-------------------------------------------------------------------------------------
-
- targetFileNamePtr.Set(targetFileNameBasePtr);
- targetFileNamePtr.Append(_L("dummyadd_or_temp.txt"));
- for(TInt i=0; i<2; i++)
- {
- //create a journal file and add an item via AddL() or TemporaryL()
- journalFile=0;
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- if(i==0)
- {
- journalFile->AddL(targetFileNamePtr);
- }
- else if(i==1)
- {
- journalFile->TemporaryL(targetFileNamePtr);
- }
- CleanupStack::PopAndDestroy(journalFile);
- //open journal file and corrupt it by overwriting the drive letter in the file's path
- seekPosition=sizeof(TInt32)+1;
- OpenJournalFileL(journalFilePathInIni, defaultJournalFileMode);
- SeekInJournalFileL(ESeekStart, seekPosition);
- intValue = ReadIntFromJournalFileL(Mode8Bit);
- intValue.int8++; //corrupt drive letter (ie: 'c' ==> 'd')
- SeekInJournalFileL(ESeekStart, seekPosition);
- WriteIntToJournalFileL(intValue, Mode8Bit);
- CloseJournalFile();
- //check that CJournalFile recognizes corruption
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrCorrupt)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrCorrupt is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
- DeleteFileL(journalFilePathInIni);
- }
-//-------------------------------------------------------------------------------------
-//Steps:
-// 1.) create a journal file using CJournalFile::NewLC
-// 2.) add an item via RemoveyL()
-// 2.) corrupt disk information in various ways in the file
-// 3.) try to recreate journal object using CJournalFile::NewL
-// 4.) expect KErrCorrupt
-//-------------------------------------------------------------------------------------
-
- journalFile=0;
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- targetFileNamePtr.Set(targetFileNameBasePtr);
- targetFileNamePtr.Append(_L("dummyremove.txt"));
- journalFile->RemoveL(targetFileNamePtr, targetBackupFileNamePtr);
- CleanupStack::PopAndDestroy(journalFile);
-
- OpenJournalFileL(journalFilePathInIni, defaultJournalFileMode);
- seekPosition=sizeof(TInt32)+1+targetFileNamePtr.Length();
- SeekInJournalFileL(ESeekStart, seekPosition);
- intValue.int32 = static_cast<TInt32>(EAddedFile); //corrupt operation: originally EBackupFile is recorded here
- WriteIntToJournalFileL(intValue, Mode32Bit);
-
- //check that CJournalFile recognizes corruption
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrCorrupt)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrCorrupt is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
-
- SeekInJournalFileL(ESeekStart, seekPosition);
- intValue.int32 = static_cast<TInt32>(EBackupFile); //restore original record
- WriteIntToJournalFileL(intValue, Mode32Bit);
-
- //check that journal file is not corrupted
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrNone)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrNone is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
-
- seekPosition=sizeof(TInt32)+1;
- SeekInJournalFileL(ESeekStart, seekPosition);
- intValue = ReadIntFromJournalFileL(Mode8Bit); //read first file's drive letter
- intValue.int8++; //corrupt drive letter (ie: 'c' ==> 'd')
- SeekInJournalFileL(ESeekStart, seekPosition);
- WriteIntToJournalFileL(intValue, Mode8Bit); //write corrupt drive letter to file
-
- //check that CJournalFile recognizes corruption
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrCorrupt)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrCorrupt is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
-
- intValue.int8--; //restore original drive letter
- SeekInJournalFileL(ESeekStart, seekPosition);
- WriteIntToJournalFileL(intValue, Mode8Bit); //write original drive letter to file
-
-
- //check that journal file is not corrupted
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrNone)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrNone is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
-
- seekPosition=sizeof(TInt32)+1+targetFileNamePtr.Length()+sizeof(TInt32)+1;
- SeekInJournalFileL(ESeekStart, seekPosition);
- intValue = ReadIntFromJournalFileL(Mode8Bit); //read second file's drive letter (backup file name)
- intValue.int8++; //corrupt drive letter (ie: 'c' ==> 'd')
- SeekInJournalFileL(ESeekStart, seekPosition);
- WriteIntToJournalFileL(intValue, Mode8Bit); //write corrupt drive letter to file
-
-
- //check that CJournalFile recognizes corruption
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrCorrupt)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrCorrupt is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
-
- intValue.int8--; //restore original drive letter
- SeekInJournalFileL(ESeekStart, seekPosition);
- WriteIntToJournalFileL(intValue, Mode8Bit); //write original drive letter to file
-
- //check that journal file is not corrupted
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrNone)
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrNone is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
- CloseJournalFile();
- INFO_PRINTF1(_L("Deleting journal file - Line 769"));
- DeleteFileL(journalFilePathInIni);
-
-
- CreateJournalFileL(journalFilePathInIni, TFileMode(TFileMode(EFileWrite) | TFileMode(EFileShareExclusive)));
- journalFile=0;
- TRAP(err,
- journalFile = CJournalFile::NewLC(iFs, iLoader, journalFilePathInIni, journaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- );
- if(err!=KErrInUse )
- {
- ERR_PRINTF2(_L("<font color=red>CJournalFile::NewL() returned incorrect error code. KErrInUse is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
- CloseJournalFile();
- INFO_PRINTF1(_L("Deleting journal file - Line 783"));
- DeleteFileL(journalFilePathInIni);
-
- CleanupStack::PopAndDestroy(2, targetFileName);
- }
-
-void CJournalFileUnitTest::ImplTestStepPostambleL()
-/**
- @return - void code
- Override of base class virtual
- */
- {
- INFO_PRINTF1(_L("JournalFileUnitTest Postamble"));
- delete testJournalFile;
- testJournalFile=0;
- iFs.Close();
- iLoader.Close();
- }
-
-void CJournalFileUnitTest::OpenJournalFileL(const TDesC& aFileName, TFileMode aMode)
- {
- testJournalFile->OpenJournalFileL(aFileName, aMode);
- }
-
-void CJournalFileUnitTest::CreateJournalFileL(const TDesC& aFileName, TFileMode aMode)
- {
- testJournalFile->CreateJournalFileL(aFileName, aMode);
- }
-
-void CJournalFileUnitTest::SeekInJournalFileL(TSeek aSeekMode, TInt &aPos)
- {
- testJournalFile->SeekInJournalFileL(aSeekMode, aPos);
- }
-
-TIntValue CJournalFileUnitTest::ReadIntFromJournalFileL(TIntMode mode)
- {
- return testJournalFile->ReadIntFromJournalFileL(mode);
- }
-
-void CJournalFileUnitTest::CloseJournalFile()
- {
- testJournalFile->CloseJournalFile();
- }
-
-void CJournalFileUnitTest::WriteIntToJournalFileL(TIntValue value, TIntMode mode)
- {
- testJournalFile->WriteIntToJournalFileL(value, mode);
- }
-
-
-
-/*static*/ CTestFile* CTestFile::NewL(RFs& aFs)
- {
- CTestFile* self = new(ELeave) CTestFile(aFs);
- return self;
- }
-
-CTestFile::CTestFile(RFs& aFs): iFs(aFs)
- {
-
- }
-
-CTestFile::~CTestFile()
- {
- CloseJournalFile();
- }
-
-void CTestFile::OpenJournalFileL(const TDesC& aFileName, TFileMode aMode)
- {
- TInt err = journalFile.Open(iFs, aFileName, aMode);
- User::LeaveIfError(err);
- }
-
-void CTestFile::CreateJournalFileL(const TDesC& aFileName, TFileMode aMode)
- {
- TInt err = iFs.MkDirAll(aFileName);
- if(err != KErrNone && err != KErrAlreadyExists)
- {
- User::Leave(err);
- }
- err = journalFile.Create(iFs, aFileName, aMode);
- User::LeaveIfError(err);
- }
-
-void CTestFile::CloseJournalFile()
- {
- journalFile.Close();
- }
-
-void CTestFile::WriteIntToJournalFileL(TIntValue value, TIntMode mode)
- {
- HBufC8* fileIOBuffer = HBufC8::NewLC(10);
- TPtr8 fileIOBufferPtr(fileIOBuffer->Des());
- TPckgC<TInt32> pckg(value.int32);
-
- switch(mode)
- {
- case Mode8Bit:
- case Mode16Bit:
- case Mode32Bit:
- fileIOBufferPtr.Append(pckg);
- User::LeaveIfError(journalFile.Write(fileIOBufferPtr, static_cast<TInt>(mode)));
- break;
- default:
- User::Leave(KErrArgument);
- break;
- }
-
- CleanupStack::PopAndDestroy(fileIOBuffer);
- }
-
-TIntValue CTestFile::ReadIntFromJournalFileL(TIntMode mode)
- {
- HBufC8* fileIOBuffer = HBufC8::NewLC(10);
- TPtr8 fileIOBufferPtr(fileIOBuffer->Des());
- User::LeaveIfError(journalFile.Read(fileIOBufferPtr, static_cast<TInt>(mode)));
- TIntValue ret = {0};
-
- switch(mode)
- {
- case Mode8Bit:
- case Mode16Bit:
- case Mode32Bit:
- {
- for(TInt i=0; i<static_cast<TInt>(mode); ++i)
- {
- ret.int32 |= TInt32((*fileIOBuffer)[i]) << (8*i);
- }
- break;
- }
- default:
- User::Leave(KErrArgument);
- break;
- }
- CleanupStack::PopAndDestroy(fileIOBuffer);
- return ret;
- }
-
-void CTestFile::SeekInJournalFileL(TSeek aSeekMode, TInt &aPos)
- {
- User::LeaveIfError(journalFile.Seek(aSeekMode, aPos));
- }
-
-
-
-//------------------------------------------------------------------------------------------------------------
-
-CJournalFileUnitTestScenarioBase::CJournalFileUnitTestScenarioBase(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer), iCleanupNeeded(ETrue)
- {
- }
-
-CJournalFileUnitTestScenarioBase::~CJournalFileUnitTestScenarioBase()
- {
- iFs.Close();
- iLoader.Close();
- delete iTargetFileName;
- delete iBackupFileName;
- }
-
-
-void CJournalFileUnitTestScenarioBase::ImplTestStepPreambleL()
- {
- INFO_PRINTF1(_L("CJournalFileUnitTestScenarioBase Preamble"));
- iJournalFileName.Set(GetTargetFilePathFromConfigL());
- User::LeaveIfError(iFs.Connect());
- User::LeaveIfError(iLoader.Connect());
- iTargetFileName = HBufC::NewL(KMaxFileName);
- iBackupFileName = HBufC::NewL(KMaxFileName);
- TParsePtrC journalFilePathParse(iJournalFileName);
- TPtr ptr(iTargetFileName->Des());
- ptr.Append(journalFilePathParse.DriveAndPath());
- ptr.Append(_L("journalfile_oom_test_dummyfile.txt"));
- iJournaldrive = journalFilePathParse.Drive();
- SetTestStepResult(EPass);
-
- }
-
-void CJournalFileUnitTestScenarioBase::ImplTestStepL()
- {
- CleanupStack::PushL(TCleanupItem(&CJournalFileUnitTestScenarioBase::InTestCleanup, this));
- ImplTestCaseScenarioL();
- CleanupStack::PopAndDestroy(this);
- }
-
-void CJournalFileUnitTestScenarioBase::ImplTestStepPostambleL()
- {
- INFO_PRINTF1(_L("CJournalFileUnitTestScenarioBase Postamble"));
-
- delete iTargetFileName;
- iTargetFileName=0;
- delete iBackupFileName;
- iBackupFileName=0;
- iFs.Close();
- iLoader.Close();
- TRAP_IGNORE(DeleteFileL(iJournalFileName));
- }
-
-/*static*/void CJournalFileUnitTestScenarioBase::InTestCleanup(TAny* aObject)
- {
- CJournalFileUnitTestScenarioBase* object=static_cast<CJournalFileUnitTestScenarioBase*>(aObject);
- object->INFO_PRINTF1(_L("CJournalFileUnitTestScenarioBase::InTestCleanup()"));
- if(object->iCleanupNeeded)
- {
- TRAP_IGNORE(object->DeleteFileL(object->iJournalFileName));
- }
- }
-
-//------------------------------------------------------------------------------------------------------------
-CJournalFileUnitTestAdd::CJournalFileUnitTestAdd(CStsTestServer &aStsTestServer): CJournalFileUnitTestScenarioBase(aStsTestServer)
- {
- SetTestStepName(KJournalFileUnitTestAdd);
- }
-void CJournalFileUnitTestAdd::ImplTestCaseScenarioL()
- {
- INFO_PRINTF1(_L("CJournalFileUnitTestAdd in test step"));
- CJournalFile* journalFile = CJournalFile::NewLC(iFs, iLoader, iJournalFileName, iJournaldrive);
- journalFile->AddL(*iTargetFileName);
- CleanupStack::PopAndDestroy(journalFile);
- }
-//------------------------------------------------------------------------------------------------------------
-CJournalFileUnitTestTemp::CJournalFileUnitTestTemp(CStsTestServer &aStsTestServer): CJournalFileUnitTestScenarioBase(aStsTestServer)
- {
- SetTestStepName(KJournalFileUnitTestTemp);
- }
-
-void CJournalFileUnitTestTemp::ImplTestCaseScenarioL()
- {
- INFO_PRINTF1(_L("CJournalFileUnitTestTemp in test step"));
- CJournalFile* journalFile = CJournalFile::NewLC(iFs, iLoader, iJournalFileName, iJournaldrive);
- journalFile->TemporaryL(*iTargetFileName);
- CleanupStack::PopAndDestroy(journalFile);
- }
-
-//------------------------------------------------------------------------------------------------------------
-CJournalFileUnitTestRemove::CJournalFileUnitTestRemove(CStsTestServer &aStsTestServer): CJournalFileUnitTestScenarioBase(aStsTestServer)
- {
- SetTestStepName(KJournalFileUnitTestRemove);
- }
-
-void CJournalFileUnitTestRemove::ImplTestCaseScenarioL()
- {
- INFO_PRINTF1(_L("CJournalFileUnitTestRemove in test step"));
- TPtr backupFileNamePtr(iBackupFileName->Des());
- CJournalFile* journalFile = CJournalFile::NewLC(iFs, iLoader, iJournalFileName, iJournaldrive);
- journalFile->RemoveL(*iTargetFileName, backupFileNamePtr);
- CleanupStack::PopAndDestroy(journalFile);
- }
-//------------------------------------------------------------------------------------------------------------
-CJournalFileUnitTestRead::CJournalFileUnitTestRead(CStsTestServer &aStsTestServer): CJournalFileUnitTestScenarioBase(aStsTestServer)
- {
- iCleanupNeeded=EFalse;
- SetTestStepName(KJournalFileUnitTestRead);
- }
-
-void CJournalFileUnitTestRead::ImplTestCaseScenarioL()
- {
- INFO_PRINTF1(_L("CJournalFileUnitTestRead in test step"));
- CJournalFile* journalFile = CJournalFile::NewLC(iFs, iLoader, iJournalFileName, iJournaldrive);
- CleanupStack::PopAndDestroy(journalFile);
- }
-//------------------------------------------------------------------------------------------------------------
-CJournalFileUnitTestEvent::CJournalFileUnitTestEvent(CStsTestServer &aStsTestServer): CJournalFileUnitTestScenarioBase(aStsTestServer)
- {
- }
-
-void CJournalFileUnitTestEvent::ImplTestCaseScenarioL()
- {
- INFO_PRINTF1(_L("CJournalFileUnitTestEvent in test step"));
- CJournalFile* journalFile = CJournalFile::NewLC(iFs, iLoader, iJournalFileName, iJournaldrive);
- journalFile->EventL(ECommitted);
- CleanupStack::PopAndDestroy(journalFile);
- }
-//------------------------------------------------------------------------------------------------------------
-
-//------------------------------------------------------------------------------------------------------------
-CJournalUnitTest::CJournalUnitTest(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KJournalUnitTest);
- }
-
-CJournalUnitTest::~CJournalUnitTest()
- {
- delete iTestFileInterface;
- iFs.Close();
- iLoader.Close();
- }
-
-void CJournalUnitTest::ImplTestStepPreambleL()
- {
- INFO_PRINTF1(_L("JournalFileUnitTest Preamble"));
- iJournalPathInIni.Set(GetTargetFilePathFromConfigL());
- iTrID = GetTransactionIdFromConfigL();
- User::LeaveIfError(iFs.Connect());
- User::LeaveIfError(iLoader.Connect());
- iTestFileInterface = CTestFile::NewL(iFs);
- SetTestStepResult(EPass);
-
- }
-
-void CJournalUnitTest::ImplTestStepL()
- {
- INFO_PRINTF1(_L("JournalUnitTest in test step"));
- SetTestStepResult(EPass);
- TestCase1L();
- }
-
-void CJournalUnitTest::ImplTestStepPostambleL()
- {
- INFO_PRINTF1(_L("JournalFileUnitTest Postamble"));
- delete iTestFileInterface;
- iTestFileInterface=0;
- iFs.Close();
- iLoader.Close();
- }
-
-void CJournalUnitTest::TestCase1L()
- {
- INFO_PRINTF1(_L("JournalFileUnitTest Test Case1"));
-
-//-------------------------------------------------------------------------------------
-//Steps:
-// 1.) create a corrupt journal file on C drive (by writing invalid event into the file /eg: with a value of EAddedFile+1000/)
-// 2.) Create a journal
-// 3.) Add a file to the journal on C drive by invoking CJounral::AddL()
-// 4.) this will create a new journal file object representing journal activity on drive C, however due to the corrupt file being already on the C drive CJournalFile::NewLC will throw KErrCorrupt
-// 5.) expect KErrCorrupt
-// note: the purpose of this testcase to excersise the conditional branches in CJournal::PrepareToWriteL
-//-------------------------------------------------------------------------------------
-
- TInt err=0;
- TDriveUnit driveUnitC(KDriveLetterC);
- TDriveUnit driveUnitE(KDriveLetterE);
-
-
- HBufC* journalFileName = HBufC::NewLC(KMaxFileName);
- HBufC* targetFileName = HBufC::NewLC(KMaxFileName);
-
- TPtr journalFileNamePtr(journalFileName->Des());
- journalFileNamePtr.Append(driveUnitC.Name());
- CJournal::CreateJournalFileNameL(iTrID, iJournalPathInIni, journalFileNamePtr);
-
- //create file path base (eg: drive:\path\)
- TPtr targetFileNameBasePtr(targetFileName->Des());
- targetFileNameBasePtr.Append(driveUnitC.Name());
- targetFileNameBasePtr.Append(iJournalPathInIni);
-
- //open up the file via the test file interface (for writing corrupt data)
- iTestFileInterface->CreateJournalFileL(journalFileNamePtr, defaultJournalFileMode);
- TInt seekPosition=0;
- TIntValue intValue = {0};
- intValue.int32=static_cast<TInt32>(EAddedFile)+1000; //corrupt data in file (eg: write operation value to an invalid value)
- //corrupt data in journal file
- iTestFileInterface->SeekInJournalFileL(ESeekStart, seekPosition);
- iTestFileInterface->WriteIntToJournalFileL(intValue, Mode32Bit);
- iTestFileInterface->CloseJournalFile();
-
- TPtr targetFileNamePtr(targetFileNameBasePtr);
- targetFileNamePtr.Append(_L("dummyadd.txt"));
-
- //create a journal and add a file on C drive: that will force CJournalFile to read in and process the
- //previously created corrupt file. As the file contains corrupt information CJournalFile construction is expected to fail with KErrCorrupt
- CJournal* journal = CJournal::NewLC(iFs, iLoader, iTrID, iJournalPathInIni);
- TRAP(err, journal->AddL(targetFileNamePtr));
- if(err!=KErrCorrupt)
- {
- ERR_PRINTF2(_L("<font color=red>CJournal::AddL() returned incorrect error code. KErrCorrupt is expected and %d is returned!</font>"), err);
- SetTestStepResult(EFail);
- }
- CleanupStack::PopAndDestroy(journal); journal=0;
-
- //clean up: delete created journal file and drive file (.drv)
- DeleteFileL(*journalFileName);
- //reuse targetFileName buffer to create .drv filename to delete that file
- *targetFileName=KEmptyString;
- targetFileNamePtr.Set(targetFileName->Des());
- CJournal::CreateDrvFileNameL(iTrID, iJournalPathInIni, targetFileNamePtr);
- TRAP_IGNORE(DeleteFileL(targetFileNamePtr)); //clean up .drv file in case it's been created but avoid causing leave in case it hasn't
-
- CleanupStack::PopAndDestroy(targetFileName);
- CleanupStack::PopAndDestroy(journalFileName);
- }
-
-//------------------------------------------------------------------------------------------------------------
-
-
-CJournalUnitTestScenarioBase::CJournalUnitTestScenarioBase(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
- {
- iDriveUnitC = _L("c");
- iDriveUnitE = _L("e");
- }
-
-CJournalUnitTestScenarioBase::~CJournalUnitTestScenarioBase()
- {
- iFs.Close();
- iLoader.Close();
- delete iTargetFileName;
- delete iJournalFileName;
- delete iDrvFileName;
- delete iBackupFileName;
- }
-
-void CJournalUnitTestScenarioBase::ImplTestStepPreambleL()
- {
- INFO_PRINTF1(_L("CJournalUnitTestScenarioBase::ImplTestStepPreambleL()"));
- iJournalPathInIni.Set(GetTargetFilePathFromConfigL());
- iTrID = GetTransactionIdFromConfigL();
- User::LeaveIfError(iFs.Connect());
- User::LeaveIfError(iLoader.Connect());
- iTargetFileName = HBufC::NewL(KMaxFileName);
- iJournalFileName = HBufC::NewL(KMaxFileName);
- iDrvFileName = HBufC::NewL(KMaxFileName);
- iBackupFileName = HBufC::NewL(KMaxFileName);
-
- TPtr ptr(iJournalFileName->Des());
- ptr.Append(iDriveUnitC.Name());
- ptr.Append(iJournalPathInIni);
- ptr.AppendNumUC(iTrID, EHex);
- ptr.Append(KKournalFileExt);
-
- ptr.Set(iTargetFileName->Des());
- ptr.Append(iDriveUnitC.Name());
- ptr.Append(iJournalPathInIni);
-
- ptr.Set(iDrvFileName->Des());
- CJournal::CreateDrvFileNameL(iTrID, iJournalPathInIni, ptr);
-
- SetTestStepResult(EPass);
- }
-
-void CJournalUnitTestScenarioBase::ImplTestStepL()
- {
- INFO_PRINTF1(_L("CJournalUnitTestScenarioBase::ImplTestStepL()"));
-
- TPtr basePathPtr(iTargetFileName->Des());
- TPtr fileNamePtr(basePathPtr);
- TCleanupItem inTestCleanupItem(&CJournalUnitTestScenarioBase::InTestCleanUp, this);
- CleanupStack::PushL(inTestCleanupItem);
-
- CJournal* journal = CJournal::NewLC(iFs, iLoader, iTrID, iJournalPathInIni);
-
- *iBackupFileName=KEmptyString;
- TPtr backupFileNamePtr(iBackupFileName->Des());
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("journal_oom_test_dummyremovefile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- journal->RemoveL(fileNamePtr, backupFileNamePtr);
- *iBackupFileName=KEmptyString;
- backupFileNamePtr.Set(iBackupFileName->Des());
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- journal->RemoveL(fileNamePtr, backupFileNamePtr);
-
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("journal_oom_test_dummytempfile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- journal->TemporaryL(fileNamePtr);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- journal->TemporaryL(fileNamePtr);
-
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("journal_oom_test_dummyaddfile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- journal->AddL(fileNamePtr);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- journal->AddL(fileNamePtr);
-
- ScenarioEndL(journal);
- CleanupStack::PopAndDestroy(journal);
- CleanupStack::PopAndDestroy(this);
- }
-
-void CJournalUnitTestScenarioBase::ImplTestStepPostambleL()
- {
- INFO_PRINTF1(_L("CJournalUnitTestScenarioBase::ImplTestStepPostambleL()"));
- delete iTargetFileName;
- iTargetFileName=0;
- delete iJournalFileName;
- iJournalFileName=0;
- delete iDrvFileName;
- iDrvFileName=0;
- delete iBackupFileName;
- iBackupFileName=0;
- iFs.Close();
- iLoader.Close();
- }
-
-/*static*/ void CJournalUnitTestScenarioBase::InTestCleanUp(TAny* aObject)
- {
- CJournalUnitTestScenarioBase* object=static_cast<CJournalUnitTestScenarioBase*>(aObject);
- object->INFO_PRINTF1(_L("CJournalUnitTestScenarioBase::InTestCleanUp()"));
-
- TPtr ptr(object->iJournalFileName->Des());
- ptr.Replace(0, 2, object->iDriveUnitC.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete journal file on C drive
- ptr.Replace(0, 2, object->iDriveUnitE.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete journal file on E drive
- TRAP_IGNORE(object->DeleteFileL(*(object->iDrvFileName))); //delete drv file on system drive
- }
-
-//------------------------------------------------------------------------------------------------------------
-
-CJournalUnitTestInstall::CJournalUnitTestInstall(CStsTestServer &aStsTestServer): CJournalUnitTestScenarioBase(aStsTestServer)
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KJournalUnitTestInstall);
- }
-
-void CJournalUnitTestInstall::ScenarioEndL(CJournal* aJournal)
- {
- aJournal->CommitL();
- }
-
-//------------------------------------------------------------------------------------------------------------
-
-CJournalUnitTestRollback::CJournalUnitTestRollback(CStsTestServer &aStsTestServer): CJournalUnitTestScenarioBase(aStsTestServer)
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KJournalUnitTestRollback);
- }
-
-void CJournalUnitTestRollback::ScenarioEndL(CJournal* aJournal)
- {
- aJournal->RollBackL();
- }
-
-//------------------------------------------------------------------------------------------------------------
-
-
-CIntegrityServicesTestScenarioBase::CIntegrityServicesTestScenarioBase(CStsTestServer &aStsTestServer): CStsBaseTestStep(aStsTestServer)
- {
- iDriveUnitC = _L("c");
- iDriveUnitE = _L("e");
- }
-
-CIntegrityServicesTestScenarioBase::~CIntegrityServicesTestScenarioBase()
- {
- iFs.Close();
- iLoader.Close();
- delete iTargetFileName;
- delete iJournalFileName;
- delete iDrvFileName;
- delete iBackupFileName;
- delete iTransactionBackupDirectoryPath;
- }
-
-void CIntegrityServicesTestScenarioBase::ImplTestStepPreambleL()
- {
- INFO_PRINTF1(_L("IntegrityServicesTestOOM Preamble"));
- iTargetPathInIni.Set(GetTargetFilePathFromConfigL());
- iTrID = GetTransactionIdFromConfigL();
- User::LeaveIfError(iFs.Connect());
- User::LeaveIfError(iLoader.Connect());
- iTargetFileName = HBufC::NewL(KMaxFileName);
- iJournalFileName = HBufC::NewL(KMaxFileName);
- iDrvFileName = HBufC::NewL(KMaxFileName);
- iBackupFileName = HBufC::NewL(KMaxFileName);
- iTransactionBackupDirectoryPath = HBufC::NewL(KMaxFileName);
-
- TPtr ptr(iJournalFileName->Des());
- ptr.Append(iDriveUnitC.Name());
- CJournal::CreateJournalFileNameL(iTrID, KTransactionPath, ptr);
-
- ptr.Set(iDrvFileName->Des());
- CJournal::CreateDrvFileNameL(iTrID, KTransactionPath, ptr);
-
- TParsePtrC parse(*iDrvFileName);
- ptr.Set(iTransactionBackupDirectoryPath->Des()); //this is the directory that holds the backup files for the transaction
- ptr.Append(parse.DriveAndPath());
- ptr.Append(parse.Name());
-
- ptr.Set(iTargetFileName->Des());
- ptr.Append(iDriveUnitC.Name());
- ptr.Append(iTargetPathInIni);
- NormalizeDirectoryName(ptr); //removes trailing slash
-
- SetTestStepResult(EPass);
- }
-
-void CIntegrityServicesTestScenarioBase::ImplTestStepL()
- {
- TPtr basePathPtr(iTargetFileName->Des());
- TPtr fileNamePtr(basePathPtr);
- RFile newFile;
- TUint fileMode(EFileShareExclusive | EFileWrite);
-
- TCleanupItem inTestCleanupItem(&CIntegrityServicesTestScenarioBase::InTestCleanUp, this);
- CleanupStack::PushL(inTestCleanupItem);
-
- CIntegrityServices* integrityServices = CIntegrityServices::NewLC(iTrID);
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("\\integrityservices_oom_test_dummyremovefile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- integrityServices->RemoveL(fileNamePtr);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- integrityServices->RemoveL(fileNamePtr);
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("\\integrityservices_oom_test_dummyregistertempfile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- integrityServices->RegisterTemporaryL(fileNamePtr);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- integrityServices->RegisterTemporaryL(fileNamePtr);
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("\\integrityservices_oom_test_dummycreatetempfile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- CleanupClosePushL(newFile);
- integrityServices->CreateTemporaryL(fileNamePtr, newFile, fileMode);
- CleanupStack::PopAndDestroy(&newFile);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- CleanupClosePushL(newFile);
- integrityServices->CreateTemporaryL(fileNamePtr, newFile, fileMode);
- CleanupStack::PopAndDestroy(&newFile);
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("\\integrityservices_oom_test_dummyaddfile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- integrityServices->RegisterNewL(fileNamePtr);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- integrityServices->RegisterNewL(fileNamePtr);
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("\\integrityservices_oom_test_dummycreatenewfile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- CleanupClosePushL(newFile);
- integrityServices->CreateNewL(fileNamePtr, newFile, fileMode);
- CleanupStack::PopAndDestroy(&newFile);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- CleanupClosePushL(newFile);
- integrityServices->CreateNewL(fileNamePtr, newFile, fileMode);
- CleanupStack::PopAndDestroy(&newFile);
-
- fileNamePtr.Set(basePathPtr);
- fileNamePtr.Append(_L("\\integrityservices_oom_test_dummyoverwritefile.txt"));
- basePathPtr.Replace(0, 2, iDriveUnitC.Name());
- CleanupClosePushL(newFile);
- integrityServices->OverwriteL(fileNamePtr, newFile, fileMode);
- CleanupStack::PopAndDestroy(&newFile);
- basePathPtr.Replace(0, 2, iDriveUnitE.Name());
- CleanupClosePushL(newFile);
- integrityServices->OverwriteL(fileNamePtr, newFile, fileMode);
- CleanupStack::PopAndDestroy(&newFile);
-
- ScenarioEndL(integrityServices);
- CleanupStack::PopAndDestroy(integrityServices);
- CleanupStack::PopAndDestroy(this);
- }
-
-void CIntegrityServicesTestScenarioBase::ImplTestStepPostambleL()
- {
- INFO_PRINTF1(_L("IntegrityServicesTestOOM Postamble"));
- delete iTargetFileName;
- iTargetFileName=0;
- delete iJournalFileName;
- iJournalFileName=0;
- delete iDrvFileName;
- iDrvFileName=0;
- delete iBackupFileName;
- iBackupFileName=0;
- delete iTransactionBackupDirectoryPath;
- iTransactionBackupDirectoryPath=0;
- iFs.Close();
- iLoader.Close();
- }
-
-/*static*/void CIntegrityServicesTestScenarioBase::InTestCleanUp(TAny* aObject)
- {
- CIntegrityServicesTestScenarioBase* object=static_cast<CIntegrityServicesTestScenarioBase*>(aObject);
- //first clean up transaction related files
- TPtr ptr(object->iJournalFileName->Des());
- ptr.Replace(0, 2, object->iDriveUnitC.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete journal file on C drive
- ptr.Replace(0, 2, object->iDriveUnitE.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete journal file on E drive
- TRAP_IGNORE(object->DeleteFileL(*(object->iDrvFileName))); //delete drv file on system drive
- ptr.Set(object->iTransactionBackupDirectoryPath->Des());
- ptr.Replace(0, 2, object->iDriveUnitC.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete backup directory on C drive
- ptr.Replace(0, 2, object->iDriveUnitE.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete backup directory on E drive
-
- //then clean up all the added/created/etc... files
- ptr.Set(object->iTargetFileName->Des());
- ptr.Replace(0, 2, object->iDriveUnitC.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete target dir on C drive
- ptr.Replace(0, 2, object->iDriveUnitE.Name());
- TRAP_IGNORE(object->DeleteFileL(ptr)); //delete target dir on E drive
-
- }
-
-void CIntegrityServicesTestScenarioBase::NormalizeDirectoryName(TDes& aFileName)
-{
- TInt lastCharPos = aFileName.Length() - 1;
- if ( lastCharPos >= 0 && aFileName[lastCharPos] == KPathDelimiter &&
- aFileName.Locate(KPathDelimiter) != lastCharPos) // Take care not to remove slash from "c:\" and the like
- {
- aFileName.Delete(lastCharPos, 1);
- }
-}
-
-//------------------------------------------------------------------------------------------------------------
-
-CIntegrityServicesTestInstall::CIntegrityServicesTestInstall(CStsTestServer &aStsTestServer): CIntegrityServicesTestScenarioBase(aStsTestServer)
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KIntegrityservicesUnitTestInstall);
- }
-
-void CIntegrityServicesTestInstall::ScenarioEndL(Usif::CIntegrityServices* aIntegrServ)
- {
- aIntegrServ->CommitL();
- }
-
-//------------------------------------------------------------------------------------------------------------
-
-CIntegrityServicesTestRollback::CIntegrityServicesTestRollback(CStsTestServer &aStsTestServer): CIntegrityServicesTestScenarioBase(aStsTestServer)
- {
- // Call base class method to set up the human readable name for logging
- SetTestStepName(KIntegrityservicesUnitTestRollback);
- }
-
-void CIntegrityServicesTestRollback::ScenarioEndL(Usif::CIntegrityServices* aIntegrServ)
- {
- aIntegrServ->RollBackL();
- }