persistentstorage/sql/TEST/t_sqlbur.cpp
changeset 29 cce6680bbf1c
parent 0 08ec8eefde2f
child 51 7d4490026038
--- a/persistentstorage/sql/TEST/t_sqlbur.cpp	Fri May 14 13:32:10 2010 +0100
+++ b/persistentstorage/sql/TEST/t_sqlbur.cpp	Thu Jul 01 17:02:22 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2006-2010 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"
@@ -130,8 +130,13 @@
 //The SQL server would have the job to get a list of databases owned by
 //the given SID and to determine whether the backup flag is set
 //All databases that satisfy this requirement will be added to the array
-void CSqlBurTestHarness::GetBackUpListL(TSecureId /*aUid*/, RArray<TParse>& aFileList)
+void CSqlBurTestHarness::GetBackUpListL(TSecureId aUid, RArray<TParse>& aFileList)
 	{
+	if(aUid.iId == 0)
+		{//Simulates that there are no databases for backup
+		aFileList.Reset();
+		return;
+		}
 	//TheTest.Printf(_L("Getting backup file list for SID=%x\r\n"),aUid);
 	for(TInt i=0;i<KTestDbFileCnt;++i)
 		{
@@ -195,7 +200,7 @@
 	}
 
 //Reads the content of the db files and stores the content to a global memory buffer.
-//That buffer content will be sued later for  a verification of the restore process.
+//That buffer content will be used later for verification of the restore process.
 void StoreDbContentToBuf(RFs& aFs)
 	{
 	for(TInt i=0;i<KTestDbFileCnt;++i)
@@ -822,7 +827,95 @@
 
 	(void)TheTestHarness->Fs().Delete(KBackupFile2);
 	}
-			
+		
+/**
+@SYMTestCaseID			PDS-SQL-UT-4192
+@SYMTestCaseDesc		SQL Backup&Restore - empty backup file list test.
+						The test checks what will happen if the list with the files for backup is empty.
+						The GetBackupDataSectionL() should immediatelly set the flag parameter to true and do nothing.
+@SYMTestActions			SQL Backup&Restore - empty backup file list test.
+@SYMTestExpectedResults Test must not fail
+@SYMTestPriority		High
+@SYMDEF					DEF145198
+*/
+void EmptyBackupFileListTest()
+	{
+	TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4192 Backup&Restore: empty backup file list"));
+	
+	CSqlBackupClient* backupClient = NULL;
+	TRAPD(err, backupClient = CSqlBackupClient::NewL(TheTestHarness));
+	TEST(backupClient != NULL);
+	
+	TRAP(err, backupClient->InitialiseGetProxyBackupDataL(KNullUid, EDriveC));
+	TEST2(err, KErrNone);
+
+	TBuf8<100> buf;
+	TPtr8 ptr((TUint8*)buf.Ptr(), 0, buf.MaxLength());
+	TBool finishedFlag = EFalse;
+	TRAP(err, backupClient->GetBackupDataSectionL(ptr, finishedFlag));
+	delete backupClient;
+	TEST2(err, KErrNone);
+	TEST(finishedFlag);
+	TEST2(buf.Length(), 0);
+	}
+
+
+/**
+@SYMTestCaseID			PDS-SQL-UT-4193
+@SYMTestCaseDesc		SQL Backup&Restore - file I/O error simulation test.
+						The test executes a backup, followed by a restore operation 
+						in a file I/O error simulation loop.
+@SYMTestActions			SQL Backup&Restore - file I/O error simulation test.
+@SYMTestExpectedResults Test must not fail
+@SYMTestPriority		High
+@SYMDEF					DEF145198
+*/
+void BackupRestoreFileIoErrTest()
+	{
+	TheTest.Next(_L(" @SYMTestCaseID:PDS-SQL-UT-4193 Backup: File I/O error simulation test"));
+
+	//Make sure that the database content, just before the backup, will be copied to the test biffers.
+	//The buffers will be used during the restore testing for verification of the database content.
+	StoreDbContentToBuf(TheTestHarness->Fs());
+	
+	for(TInt fsError=KErrNotFound;fsError>=KErrBadName;--fsError)
+		{
+		TheTest.Printf(_L("===Backup&Restore, simulated file system error=%d\r\n"), fsError);
+		
+		TInt err = KErrGeneral;
+		TInt bytesStored = -1;
+		TInt it_cnt1 = 0;
+		for(;err<KErrNone;++it_cnt1)
+			{
+			__UHEAP_MARK;
+			(void)TheTestHarness->Fs().SetErrorCondition(fsError, it_cnt1);
+			TRAP(err, bytesStored = DoBackupL());
+			(void)TheTestHarness->Fs().SetErrorCondition(KErrNone);
+			__UHEAP_MARKEND;
+			}
+		TEST2(err, KErrNone);
+	
+		err = KErrGeneral;
+		TInt bytesRestored = -1;
+		TInt it_cnt2 = 0;
+	    for(;err<KErrNone;++it_cnt2)
+			{
+			__UHEAP_MARK;
+			(void)TheTestHarness->Fs().SetErrorCondition(fsError, it_cnt2);
+			TRAP(err, bytesRestored = DoRestoreL());
+			(void)TheTestHarness->Fs().SetErrorCondition(KErrNone);
+			__UHEAP_MARKEND;
+			}
+		TEST2(err, KErrNone);
+		
+		TEST2(bytesStored, bytesRestored);
+		CompareDbContentWithBuf(TheTestHarness->Fs());
+		
+		TheTest.Printf(_L("Backup&Restore file I/O error simulation test succeeded at backup iteration %d and restore itreration %d\r\n"), it_cnt1 - 1, it_cnt2 - 1);
+		}
+	}
+
+
 void DoMain()
 	{
 	TestEnvCreate();
@@ -837,6 +930,10 @@
 	FunctionalTest2();
 
 	LegacyFileFormatTest();
+	
+	EmptyBackupFileListTest();
+	
+	BackupRestoreFileIoErrTest();
 
 	TestEnvDestroy();
 	}