--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/centralrepository/test/t_cenrep_pma_bur.cpp Tue Oct 19 16:26:13 2010 +0100
@@ -0,0 +1,262 @@
+// Copyright (c) 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"
+// 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:
+//
+
+#include <e32test.h>
+#include <f32file.h>
+#include <badesca.h>
+#include "srvrepos_noc.h"
+#include "srvres.h"
+#include "cachemgr.h"
+#include "backup.h"
+#include "t_cenrep_helper.h"
+
+RTest TheTest(_L("t_cenrep_pma_bur.exe"));
+
+enum FileSet
+ {
+ EOriginals,
+ EChanged,
+ ERemoved,
+ EDEF058823L
+ };
+
+CRepositoryBackupClient* backupClient;
+
+CActiveScheduler* globalAS;
+
+const TUid KUidPmaBackupTestRepository1 = { 0xf1000201 };
+const TUid KUidPmaBackupTestRepository2 = { 0xf1000202 };
+const TUid KUidPmaBackupTestRepository3 = { 0xf1000203 };
+const TUid KUidPmaBackupTestRepository4 = { 0xf1000204 };
+const TUid KUidPmaBackupTestRepository5 = { 0xf1000205 };
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+//Test macros and functions
+
+LOCAL_C void DeleteFilesL()
+ {
+ _LIT( KOldInstallFiles, "c:\\private\\102081E4\\*.*" );
+ _LIT( KOldPersistFiles, "c:\\private\\102081E4\\persists\\*.*" );
+ _LIT( KOldPMAFiles, "c:\\private\\102081E4\\persists\\protected\\*.*" );
+
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+ CleanupClosePushL(fs);
+ CFileMan* fm = CFileMan::NewL( fs );
+ CleanupStack::PushL( fm );
+
+ TInt r = KErrNone;
+
+ r = fm->Attribs( KOldInstallFiles, KEntryAttArchive, KEntryAttReadOnly, TTime( 0 ), CFileMan::ERecurse );
+ if ( r != KErrNone && r != KErrNotFound && r != KErrPathNotFound )
+ User::Leave(r);
+ r = fm->Delete( KOldInstallFiles );
+ if ( r != KErrNone && r != KErrNotFound && r != KErrPathNotFound )
+ User::Leave(r);
+
+ r = fm->Attribs( KOldPersistFiles, KEntryAttArchive, KEntryAttReadOnly, TTime( 0 ), CFileMan::ERecurse );
+ if ( r != KErrNone && r != KErrNotFound && r != KErrPathNotFound )
+ User::Leave(r);
+ r = fm->Delete( KOldPersistFiles );
+ if ( r != KErrNone && r != KErrNotFound && r != KErrPathNotFound )
+ User::Leave(r);
+
+ r = fm->Attribs( KOldPMAFiles, KEntryAttArchive, KEntryAttReadOnly, TTime( 0 ), CFileMan::ERecurse );
+ if ( r != KErrNone && r != KErrNotFound && r != KErrPathNotFound )
+ User::Leave(r);
+ r = fm->Delete( KOldPMAFiles );
+ if ( r != KErrNone && r != KErrNotFound && r != KErrPathNotFound )
+ User::Leave(r);
+
+ CleanupStack::PopAndDestroy( 2 ); //fs and fm
+ }
+
+LOCAL_C void Check( TInt aValue, TInt aLine )
+ {
+ if ( !aValue )
+ {
+ TRAPD(err, DeleteFilesL());
+ if (err != KErrNone)
+ {
+ RDebug::Print( _L( "*** DeleteFilesL also failed with error %d expecting KErrNone\r\n"), err );
+ }
+ TheTest( EFalse, aLine );
+ }
+ }
+
+LOCAL_C void Check( TInt aValue, TInt aExpected, TInt aLine )
+ {
+ if ( aValue != aExpected )
+ {
+ RDebug::Print( _L( "*** Expected error: %d, got: %d\r\n"), aExpected, aValue );
+ TRAPD(err, DeleteFilesL());
+ if (err != KErrNone)
+ {
+ RDebug::Print( _L( "*** DeleteFilesL also failed with error %d expecting KErrNone\r\n"), err );
+ }
+ TheTest( EFalse, aLine );
+ }
+ }
+
+#define TEST(arg) ::Check((arg), __LINE__)
+#define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
+
+///////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////
+
+static void CloseTServerResources(TAny*)
+ {
+ TServerResources::Close();
+ }
+
+LOCAL_C void InstallFileSetL()
+ {
+ //There shouldn't be PMA keyspace in PMA drive that doesn't have its ROM equivalent
+ _LIT(KPmaCreReposInPMADriveSrc, "z:\\private\\10202BE9\\f1000202.pma");
+ _LIT(KPmaCreReposInPMADriveTgt, "c:\\private\\102081E4\\persists\\protected\\f1000202.cre");
+ _LIT(KPmaCreReposInPersistDirSrc, "z:\\private\\10202BE9\\f1000203.crp");
+ _LIT(KPmaCreReposInPersistDirTgt, "c:\\private\\102081E4\\persists\\f1000203.cre");
+ _LIT(KPmaTxtReposInInstallDirSrc, "z:\\private\\10202BE9\\f1000204.txi");
+ _LIT(KPmaTxtReposInInstallDirTgt, "c:\\private\\102081E4\\f1000204.txt");
+ _LIT(KPmaCreReposInInstallDirSrc, "z:\\private\\10202BE9\\f1000205.cri");
+ _LIT(KPmaCreReposInInstallDirTgt, "c:\\private\\102081E4\\f1000205.cre");
+
+ DeleteFilesL();
+ // When the contents of the repository directories change, the cached iOwnerIdLookUpTable becomes invalid
+ TServerResources::iOwnerIdLookUpTable.Reset();
+
+ RFs rfs;
+ User::LeaveIfError(rfs.Connect());
+ CleanupClosePushL(rfs);
+
+ CFileMan* fm = CFileMan::NewL( rfs );
+ CleanupStack::PushL( fm );
+
+ CopyTestFilesL(*fm, KPmaCreReposInPMADriveSrc, KPmaCreReposInPMADriveTgt);
+ CopyTestFilesL(*fm, KPmaCreReposInPersistDirSrc, KPmaCreReposInPersistDirTgt);
+ CopyTestFilesL(*fm, KPmaTxtReposInInstallDirSrc, KPmaTxtReposInInstallDirTgt);
+ CopyTestFilesL(*fm, KPmaCreReposInInstallDirSrc, KPmaCreReposInInstallDirTgt);
+
+
+ CleanupStack::PopAndDestroy(2, &rfs);
+ }
+
+LOCAL_C void CleanupActiveScheduler(TAny* aShc)
+ {
+ CActiveScheduler::Replace( globalAS );
+ delete aShc;
+ }
+
+LOCAL_C void BackupRepositoryL( )
+ {
+ backupClient->CompleteOwnerIdLookupTableL();
+ TEST2(TServerResources::FindOwnerIdLookupMapping(KUidPmaBackupTestRepository1.iUid), KErrNotFound);
+ TEST2(TServerResources::FindOwnerIdLookupMapping(KUidPmaBackupTestRepository2.iUid), KErrNotFound);
+ TEST2(TServerResources::FindOwnerIdLookupMapping(KUidPmaBackupTestRepository3.iUid), KErrNotFound);
+ TEST2(TServerResources::FindOwnerIdLookupMapping(KUidPmaBackupTestRepository4.iUid), KErrNotFound);
+ TEST2(TServerResources::FindOwnerIdLookupMapping(KUidPmaBackupTestRepository5.iUid), KErrNotFound);
+ }
+
+/**
+@SYMTestCaseID SYSLIB-CENTRALREPOSITORY-UT-4174
+@SYMTestCaseDesc Verify iOwnerIdLookupTable does not contain PMA keyspaces before backup.
+@SYMTestPriority High
+@SYMTestActions Copy PMA keyspaces to PMA drive, persists and install directory.
+ Call CompleteOwnerIdLookupTableL().
+ Call FindOwnerIdLookupMapping to verify iOwnerIdLookTable does not contain PMA keyspaces.
+@SYMTestExpectedResults iOwnerIdLookTable list does not contain PMA keyspaces.
+@SYMREQ 42876
+*/
+LOCAL_C void OwnerIdLookupTableTestsL()
+ {
+ TheTest.Next( _L( " @SYMTestCaseID:PDS-CENTRALREPOSITORY-UT-4174 OwnerIdLookupTable test on PMA repository " ) );
+
+ // create and install the active scheduler we need
+ CActiveScheduler* s = new(ELeave) CActiveScheduler;
+
+ TCleanupItem tc(CleanupActiveScheduler, s);
+ CleanupStack::PushL(tc);
+
+ CActiveScheduler::Replace( s );
+
+ backupClient = CRepositoryBackupClient::NewLC( TServerResources::iFs );
+ TEST( backupClient != 0 );
+
+ // These tests don't test Backup&Restore functionality over Secure Backup Server so cache management
+ // is not possible. For that reason, cache is disabled manually.
+ TServerResources::iCacheManager->DisableCache();
+
+ // Install known files
+ InstallFileSetL();
+ BackupRepositoryL( );
+
+ DeleteFilesL();
+ CleanupStack::PopAndDestroy( backupClient );
+ // Cleanup the scheduler
+ CleanupStack::PopAndDestroy( s );
+ }
+
+LOCAL_C void DoTestsL()
+ {
+ TServerResources::InitialiseL();
+
+ CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
+ TheTest.Next( _L( "OwnerIdLookupTable tests" ) );
+ OwnerIdLookupTableTestsL();
+
+ CleanupStack::Pop(1); //TServerResources
+ TServerResources::Close();
+ }
+
+
+LOCAL_C void MainL()
+ {
+ // create and install the active scheduler we need for the cache manager in TServerResources::InitialiseL
+ globalAS=new(ELeave) CActiveScheduler;
+ CleanupStack::PushL(globalAS);
+ CActiveScheduler::Install(globalAS);
+
+ DoTestsL();
+ DeleteFilesL();
+
+ CleanupStack::PopAndDestroy(globalAS);
+
+ }
+
+TInt E32Main()
+ {
+ TheTest.Title ();
+ TheTest.Start( _L( "PMA Backup and restore tests" ) );
+
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+ TheTest(cleanup != NULL);
+
+ __UHEAP_MARK;
+
+ TRAPD(err, MainL());
+ TEST2(err, KErrNone);
+
+ __UHEAP_MARKEND;
+
+ TheTest.End ();
+ TheTest.Close ();
+
+ delete cleanup;
+
+ User::Heap().Check();
+ return KErrNone;
+ }
+