persistentstorage/centralrepository/test/t_cenrep_pma_multirofs.cpp
author hgs
Tue, 19 Oct 2010 16:26:13 +0100
changeset 55 44f437012c90
permissions -rw-r--r--
201041_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
55
44f437012c90 201041_01
hgs
parents:
diff changeset
     1
// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
44f437012c90 201041_01
hgs
parents:
diff changeset
     2
// All rights reserved.
44f437012c90 201041_01
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
44f437012c90 201041_01
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
44f437012c90 201041_01
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
44f437012c90 201041_01
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
44f437012c90 201041_01
hgs
parents:
diff changeset
     7
//
44f437012c90 201041_01
hgs
parents:
diff changeset
     8
// Initial Contributors:
44f437012c90 201041_01
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
44f437012c90 201041_01
hgs
parents:
diff changeset
    10
//
44f437012c90 201041_01
hgs
parents:
diff changeset
    11
// Contributors:
44f437012c90 201041_01
hgs
parents:
diff changeset
    12
//
44f437012c90 201041_01
hgs
parents:
diff changeset
    13
// Description:
44f437012c90 201041_01
hgs
parents:
diff changeset
    14
// t_oomcenrep.cpp
44f437012c90 201041_01
hgs
parents:
diff changeset
    15
// 
44f437012c90 201041_01
hgs
parents:
diff changeset
    16
//
44f437012c90 201041_01
hgs
parents:
diff changeset
    17
44f437012c90 201041_01
hgs
parents:
diff changeset
    18
#include "t_cenrep_helper.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    19
#include <e32test.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    20
#include <f32file.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    21
#include <utf.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    22
#include "srvsess.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    23
#include "sessmgr.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    24
#include "srvres.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    25
#include "srvreqs.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    26
#include "cachemgr.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    27
#include "clientrequest.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    28
#include "install.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    29
#include <bautils.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    30
44f437012c90 201041_01
hgs
parents:
diff changeset
    31
LOCAL_D RTest                TheTest (_L ("t_cenrep_pma_multirofs.exe"));
44f437012c90 201041_01
hgs
parents:
diff changeset
    32
44f437012c90 201041_01
hgs
parents:
diff changeset
    33
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    34
//Test macros and functions
44f437012c90 201041_01
hgs
parents:
diff changeset
    35
LOCAL_C void Check(TInt aValue, TInt aExpected, TInt aLine, TBool aIsHexFormat=EFalse)
44f437012c90 201041_01
hgs
parents:
diff changeset
    36
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    37
    if(aValue != aExpected)
44f437012c90 201041_01
hgs
parents:
diff changeset
    38
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
    39
        if(aIsHexFormat)
44f437012c90 201041_01
hgs
parents:
diff changeset
    40
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    41
            RDebug::Print(_L("*** Expected error: 0x%x, got: 0x%x\r\n"), aExpected, aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
    42
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    43
        else
44f437012c90 201041_01
hgs
parents:
diff changeset
    44
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    45
            RDebug::Print(_L("*** Expected error: %d, got: %d\r\n"), aExpected, aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
    46
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    47
        TRAPD(err, CleanupCDriveL());
44f437012c90 201041_01
hgs
parents:
diff changeset
    48
        if (err != KErrNone)
44f437012c90 201041_01
hgs
parents:
diff changeset
    49
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    50
            RDebug::Print( _L( "*** CleanupCDriveL also failed with error %d expecting KErrNone\r\n"), err );
44f437012c90 201041_01
hgs
parents:
diff changeset
    51
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    52
        TheTest(EFalse, aLine);
44f437012c90 201041_01
hgs
parents:
diff changeset
    53
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
    54
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
    55
44f437012c90 201041_01
hgs
parents:
diff changeset
    56
#define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
44f437012c90 201041_01
hgs
parents:
diff changeset
    57
#define TESTHEX2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__, ETrue)
44f437012c90 201041_01
hgs
parents:
diff changeset
    58
44f437012c90 201041_01
hgs
parents:
diff changeset
    59
/////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    60
static void CloseTServerResources(TAny*)
44f437012c90 201041_01
hgs
parents:
diff changeset
    61
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    62
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
    63
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
    64
44f437012c90 201041_01
hgs
parents:
diff changeset
    65
/////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    66
class CenrepSrvPmaMultiRofsTest :public CBase
44f437012c90 201041_01
hgs
parents:
diff changeset
    67
{
44f437012c90 201041_01
hgs
parents:
diff changeset
    68
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
    69
    CenrepSrvPmaMultiRofsTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
    70
    ~CenrepSrvPmaMultiRofsTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
    71
    static CenrepSrvPmaMultiRofsTest* NewL(TUid aReposUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
    72
    void DoHeapRepositoryContentCheckL();
44f437012c90 201041_01
hgs
parents:
diff changeset
    73
44f437012c90 201041_01
hgs
parents:
diff changeset
    74
private:
44f437012c90 201041_01
hgs
parents:
diff changeset
    75
    void ConstructL(TUid aReposUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
    76
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
    77
    CServerRepository* iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
    78
    CSessionNotifier* iSessionNotif;
44f437012c90 201041_01
hgs
parents:
diff changeset
    79
};
44f437012c90 201041_01
hgs
parents:
diff changeset
    80
44f437012c90 201041_01
hgs
parents:
diff changeset
    81
//////////////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    82
44f437012c90 201041_01
hgs
parents:
diff changeset
    83
CenrepSrvPmaMultiRofsTest::CenrepSrvPmaMultiRofsTest(){}
44f437012c90 201041_01
hgs
parents:
diff changeset
    84
44f437012c90 201041_01
hgs
parents:
diff changeset
    85
CenrepSrvPmaMultiRofsTest::~CenrepSrvPmaMultiRofsTest()
44f437012c90 201041_01
hgs
parents:
diff changeset
    86
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    87
    if (iServerRepo)
44f437012c90 201041_01
hgs
parents:
diff changeset
    88
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
    89
        if (iSessionNotif)
44f437012c90 201041_01
hgs
parents:
diff changeset
    90
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    91
            iServerRepo->Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
    92
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    93
        delete iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
    94
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
    95
    if (iSessionNotif)
44f437012c90 201041_01
hgs
parents:
diff changeset
    96
        delete iSessionNotif;
44f437012c90 201041_01
hgs
parents:
diff changeset
    97
44f437012c90 201041_01
hgs
parents:
diff changeset
    98
    // Cache must be disabled here. Otherwise, if any idle repositories exists, they will
44f437012c90 201041_01
hgs
parents:
diff changeset
    99
    // still be open (have their pointers in the iOpenRepositories list) and the list will leak.
44f437012c90 201041_01
hgs
parents:
diff changeset
   100
    TServerResources::iCacheManager->DisableCache();
44f437012c90 201041_01
hgs
parents:
diff changeset
   101
    TServerResources::iObserver->CloseiOpenRepositories();
44f437012c90 201041_01
hgs
parents:
diff changeset
   102
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   103
44f437012c90 201041_01
hgs
parents:
diff changeset
   104
CenrepSrvPmaMultiRofsTest* CenrepSrvPmaMultiRofsTest::NewL(TUid aReposUid)
44f437012c90 201041_01
hgs
parents:
diff changeset
   105
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   106
    CenrepSrvPmaMultiRofsTest* self=new (ELeave)CenrepSrvPmaMultiRofsTest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   107
    CleanupStack::PushL(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   108
    self->ConstructL(aReposUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
   109
    CleanupStack::Pop(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   110
    return self;
44f437012c90 201041_01
hgs
parents:
diff changeset
   111
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   112
44f437012c90 201041_01
hgs
parents:
diff changeset
   113
void CenrepSrvPmaMultiRofsTest::ConstructL(TUid aReposUid)
44f437012c90 201041_01
hgs
parents:
diff changeset
   114
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   115
    iServerRepo=new (ELeave)CServerRepository();
44f437012c90 201041_01
hgs
parents:
diff changeset
   116
    iSessionNotif=new (ELeave) CSessionNotifier();
44f437012c90 201041_01
hgs
parents:
diff changeset
   117
44f437012c90 201041_01
hgs
parents:
diff changeset
   118
    iServerRepo->OpenL(aReposUid,*iSessionNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   119
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   120
44f437012c90 201041_01
hgs
parents:
diff changeset
   121
//Deletes the CServerRepository object properly
44f437012c90 201041_01
hgs
parents:
diff changeset
   122
LOCAL_C void ReleaseRepository(TAny* aServerRepository)
44f437012c90 201041_01
hgs
parents:
diff changeset
   123
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   124
    CServerRepository* serverRepository = static_cast<CServerRepository*>(aServerRepository);
44f437012c90 201041_01
hgs
parents:
diff changeset
   125
44f437012c90 201041_01
hgs
parents:
diff changeset
   126
    TServerResources::iCacheManager->DisableCache();
44f437012c90 201041_01
hgs
parents:
diff changeset
   127
    TServerResources::iObserver->CloseiOpenRepositories();
44f437012c90 201041_01
hgs
parents:
diff changeset
   128
    delete serverRepository;
44f437012c90 201041_01
hgs
parents:
diff changeset
   129
    TServerResources::iCacheManager->EnableCache();
44f437012c90 201041_01
hgs
parents:
diff changeset
   130
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   131
44f437012c90 201041_01
hgs
parents:
diff changeset
   132
//Opening a repository and closing the repository
44f437012c90 201041_01
hgs
parents:
diff changeset
   133
LOCAL_C void OpenCloseL(TUid aReposUid)
44f437012c90 201041_01
hgs
parents:
diff changeset
   134
{
44f437012c90 201041_01
hgs
parents:
diff changeset
   135
    CServerRepository* serverRepo=new (ELeave)CServerRepository();
44f437012c90 201041_01
hgs
parents:
diff changeset
   136
    TCleanupItem cleanupItem(&ReleaseRepository, serverRepo);
44f437012c90 201041_01
hgs
parents:
diff changeset
   137
    CleanupStack::PushL(cleanupItem);
44f437012c90 201041_01
hgs
parents:
diff changeset
   138
44f437012c90 201041_01
hgs
parents:
diff changeset
   139
    CSessionNotifier* sessNotif=new (ELeave)CSessionNotifier();
44f437012c90 201041_01
hgs
parents:
diff changeset
   140
    CleanupStack::PushL(sessNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   141
44f437012c90 201041_01
hgs
parents:
diff changeset
   142
    // test access to a valid repository
44f437012c90 201041_01
hgs
parents:
diff changeset
   143
    serverRepo->OpenL(aReposUid,*sessNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   144
    serverRepo->Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   145
44f437012c90 201041_01
hgs
parents:
diff changeset
   146
    CleanupStack::PopAndDestroy(sessNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   147
    CleanupStack::PopAndDestroy(1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   148
}
44f437012c90 201041_01
hgs
parents:
diff changeset
   149
44f437012c90 201041_01
hgs
parents:
diff changeset
   150
// Type definition for pointer to function
44f437012c90 201041_01
hgs
parents:
diff changeset
   151
// Used for functions that can't use CenrepSrvPmaMultiRofsTest::ConstructL
44f437012c90 201041_01
hgs
parents:
diff changeset
   152
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
   153
Wrapper function to call all test functions
44f437012c90 201041_01
hgs
parents:
diff changeset
   154
@param  testFuncL pointer to test function
44f437012c90 201041_01
hgs
parents:
diff changeset
   155
@param  aTestDesc test function name
44f437012c90 201041_01
hgs
parents:
diff changeset
   156
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
   157
LOCAL_C void DoMultiRofsReposTestL( TUid aReposUid, const TDesC& aTestDesc, TInt aExpectedResult)
44f437012c90 201041_01
hgs
parents:
diff changeset
   158
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   159
    TheTest.Next(aTestDesc);
44f437012c90 201041_01
hgs
parents:
diff changeset
   160
44f437012c90 201041_01
hgs
parents:
diff changeset
   161
    TInt err;
44f437012c90 201041_01
hgs
parents:
diff changeset
   162
    __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
   163
44f437012c90 201041_01
hgs
parents:
diff changeset
   164
    //Initializing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   165
    TServerResources::InitialiseL ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   166
44f437012c90 201041_01
hgs
parents:
diff changeset
   167
    TRAP(err, OpenCloseL(aReposUid));
44f437012c90 201041_01
hgs
parents:
diff changeset
   168
    TEST2(err, aExpectedResult);
44f437012c90 201041_01
hgs
parents:
diff changeset
   169
44f437012c90 201041_01
hgs
parents:
diff changeset
   170
    //Freeing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   171
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   172
44f437012c90 201041_01
hgs
parents:
diff changeset
   173
    __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
   174
44f437012c90 201041_01
hgs
parents:
diff changeset
   175
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   176
44f437012c90 201041_01
hgs
parents:
diff changeset
   177
void CenrepSrvPmaMultiRofsTest::DoHeapRepositoryContentCheckL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   178
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   179
    CServerRepository* srv=iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   180
    //check setting and its meta
44f437012c90 201041_01
hgs
parents:
diff changeset
   181
    TServerSetting* setting=NULL;
44f437012c90 201041_01
hgs
parents:
diff changeset
   182
44f437012c90 201041_01
hgs
parents:
diff changeset
   183
    setting=srv->GetSetting(1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   184
    TESTHEX2(setting->iKey,1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   185
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   186
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
   187
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
   188
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   189
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   190
44f437012c90 201041_01
hgs
parents:
diff changeset
   191
    setting=srv->GetSetting(2);
44f437012c90 201041_01
hgs
parents:
diff changeset
   192
    TESTHEX2(setting->iKey,2);
44f437012c90 201041_01
hgs
parents:
diff changeset
   193
    TESTHEX2(setting->iMeta,0xA0000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   194
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
   195
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
   196
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   197
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   198
44f437012c90 201041_01
hgs
parents:
diff changeset
   199
    setting=srv->GetSetting(3);
44f437012c90 201041_01
hgs
parents:
diff changeset
   200
    TESTHEX2(setting->iKey,3);
44f437012c90 201041_01
hgs
parents:
diff changeset
   201
    TESTHEX2(setting->iMeta,0x800000FF);
44f437012c90 201041_01
hgs
parents:
diff changeset
   202
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
   203
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
   204
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   205
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   206
44f437012c90 201041_01
hgs
parents:
diff changeset
   207
    setting=srv->GetSetting(4);
44f437012c90 201041_01
hgs
parents:
diff changeset
   208
    TESTHEX2(setting->iKey,4);
44f437012c90 201041_01
hgs
parents:
diff changeset
   209
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   210
    TESTHEX2(setting->iAccessPolicy->LowKey(),4);
44f437012c90 201041_01
hgs
parents:
diff changeset
   211
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   212
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   213
44f437012c90 201041_01
hgs
parents:
diff changeset
   214
    setting=srv->GetSetting(5);
44f437012c90 201041_01
hgs
parents:
diff changeset
   215
    TESTHEX2(setting->iKey,5);
44f437012c90 201041_01
hgs
parents:
diff changeset
   216
    TESTHEX2(setting->iMeta,0xC0000063);
44f437012c90 201041_01
hgs
parents:
diff changeset
   217
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
   218
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
   219
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   220
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   221
44f437012c90 201041_01
hgs
parents:
diff changeset
   222
    setting=srv->GetSetting(6);
44f437012c90 201041_01
hgs
parents:
diff changeset
   223
    TESTHEX2(setting->iKey,6);
44f437012c90 201041_01
hgs
parents:
diff changeset
   224
    TESTHEX2(setting->iMeta,0x90000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   225
    TESTHEX2(setting->iAccessPolicy->LowKey(),6);
44f437012c90 201041_01
hgs
parents:
diff changeset
   226
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   227
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   228
44f437012c90 201041_01
hgs
parents:
diff changeset
   229
    setting=srv->GetSetting(7);
44f437012c90 201041_01
hgs
parents:
diff changeset
   230
    TESTHEX2(setting->iKey,7);
44f437012c90 201041_01
hgs
parents:
diff changeset
   231
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   232
    TESTHEX2(setting->iAccessPolicy->LowKey(),7);
44f437012c90 201041_01
hgs
parents:
diff changeset
   233
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   234
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   235
44f437012c90 201041_01
hgs
parents:
diff changeset
   236
    setting=srv->GetSetting(9);
44f437012c90 201041_01
hgs
parents:
diff changeset
   237
    TESTHEX2(setting->iKey,9);
44f437012c90 201041_01
hgs
parents:
diff changeset
   238
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   239
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
   240
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   241
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   242
44f437012c90 201041_01
hgs
parents:
diff changeset
   243
    setting=srv->GetSetting(10);
44f437012c90 201041_01
hgs
parents:
diff changeset
   244
    TESTHEX2(setting->iKey,10);
44f437012c90 201041_01
hgs
parents:
diff changeset
   245
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   246
    TESTHEX2(setting->iAccessPolicy->LowKey(),10);
44f437012c90 201041_01
hgs
parents:
diff changeset
   247
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   248
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   249
44f437012c90 201041_01
hgs
parents:
diff changeset
   250
    setting=srv->GetSetting(300);
44f437012c90 201041_01
hgs
parents:
diff changeset
   251
    TESTHEX2(setting->iKey,300);
44f437012c90 201041_01
hgs
parents:
diff changeset
   252
    TESTHEX2(setting->iMeta,0x900003E7);
44f437012c90 201041_01
hgs
parents:
diff changeset
   253
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
   254
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   255
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   256
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   257
44f437012c90 201041_01
hgs
parents:
diff changeset
   258
LOCAL_C void DoAdditionalCheckingL(TUid aReposUid)
44f437012c90 201041_01
hgs
parents:
diff changeset
   259
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   260
    TServerResources::InitialiseL ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   261
    CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   262
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   263
    CenrepSrvPmaMultiRofsTest* test=CenrepSrvPmaMultiRofsTest::NewL(aReposUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
   264
    CleanupStack::PushL(test);
44f437012c90 201041_01
hgs
parents:
diff changeset
   265
    test->DoHeapRepositoryContentCheckL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   266
44f437012c90 201041_01
hgs
parents:
diff changeset
   267
    CleanupStack::PopAndDestroy(); //test
44f437012c90 201041_01
hgs
parents:
diff changeset
   268
    CleanupStack::Pop(); //CloseTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
   269
44f437012c90 201041_01
hgs
parents:
diff changeset
   270
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   271
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   272
44f437012c90 201041_01
hgs
parents:
diff changeset
   273
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
   274
@SYMTestCaseID PDS-CENTRALREPOSITORY-UT-4124
44f437012c90 201041_01
hgs
parents:
diff changeset
   275
@SYMTestCaseDesc Server side loading of a multiple ROFS PMA repository files
44f437012c90 201041_01
hgs
parents:
diff changeset
   276
@SYMTestPriority High
44f437012c90 201041_01
hgs
parents:
diff changeset
   277
@SYMTestActions  - Create the server class CServerRepository and used it to load the multi ROFS PMA keyspace.
44f437012c90 201041_01
hgs
parents:
diff changeset
   278
                 - Test are repeated for the following keyspace combination such as TXT/TXT, CRE/TXT or TXT/CRE and CRE/CRE.
44f437012c90 201041_01
hgs
parents:
diff changeset
   279
                 - Test will also verify the resulting merged settings which includes checking
44f437012c90 201041_01
hgs
parents:
diff changeset
   280
                   individual metadata bits and security policy bits
44f437012c90 201041_01
hgs
parents:
diff changeset
   281
                 - Test will also be repeated for opening PMA keyspace with non-PMA keyspace in different ROFS layers. 
44f437012c90 201041_01
hgs
parents:
diff changeset
   282
                 
44f437012c90 201041_01
hgs
parents:
diff changeset
   283
@SYMTestExpectedResults - Server loading of the multi rofs keyspace should not fail if the type of the keyspace is the same
44f437012c90 201041_01
hgs
parents:
diff changeset
   284
                        - Server loading of the multi rofs keyspace should fail if the type of the keyspace is not the same
44f437012c90 201041_01
hgs
parents:
diff changeset
   285
@SYMREQ REQ42876
44f437012c90 201041_01
hgs
parents:
diff changeset
   286
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
   287
LOCAL_C void DoPMAMultiRofsTestL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   288
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   289
    TheTest.Next (_L (" @SYMTestCaseID:PDS-CENTRALREPOSITORY-UT-4124 Centrep Server PMA MultiROFS Test"));
44f437012c90 201041_01
hgs
parents:
diff changeset
   290
44f437012c90 201041_01
hgs
parents:
diff changeset
   291
    const TUid KMultiRofsRepositoryUid0={0xF1000900};//TXT1(core) - CRE1(rofs1) - TXT1(rofs2) - CRE1(rofs3)
44f437012c90 201041_01
hgs
parents:
diff changeset
   292
    const TUid KMultiRofsRepositoryUid1={0xF1000901};//TXT1(core) - TXT1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   293
    const TUid KMultiRofsRepositoryUid2={0xF1000902};//CRE1(core) - CRE1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   294
    const TUid KMultiRofsRepositoryUid3={0xF1000903};//TXT1(core) - CRE1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   295
    const TUid KMultiRofsRepositoryUid4={0xF1000904};//CRE1(core) - TXT1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   296
    const TUid KMultiRofsRepositoryUid5={0xF1000905};//TXT1(core) - TXT0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   297
    const TUid KMultiRofsRepositoryUid6={0xF1000906};//TXT0(core) - TXT1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   298
    const TUid KMultiRofsRepositoryUid7={0xF1000907};//CRE1(core) - CRE0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   299
    const TUid KMultiRofsRepositoryUid8={0xF1000908};//CRE0(core) - CRE1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   300
    const TUid KMultiRofsRepositoryUid9={0xF1000909};//CRE1(core) - TXT0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   301
    const TUid KMultiRofsRepositoryUid10={0xF100090A};//CRE0(core) - TXT1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   302
    const TUid KMultiRofsRepositoryUid11={0xF100090B};//TXT1(core) - CRE0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   303
    const TUid KMultiRofsRepositoryUid12={0xF100090C};//TXT0(core) - CRE1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
   304
    const TUid KMultiRofsRepositoryUid13={0xF100090D};//TXT1(core) - CRE1(rofs1) - TXT1(rofs2) - CRE0(rofs3)
44f437012c90 201041_01
hgs
parents:
diff changeset
   305
    // Note: TXT1 means the file is PMA repository with .txt format
44f437012c90 201041_01
hgs
parents:
diff changeset
   306
    //       TXT0 means the file is non-PMA repository with .txt format
44f437012c90 201041_01
hgs
parents:
diff changeset
   307
    //       CRE1 means the file is PMA repository with .cre format
44f437012c90 201041_01
hgs
parents:
diff changeset
   308
    //       CRE0 means the file is non-PMA repository with .cre format
44f437012c90 201041_01
hgs
parents:
diff changeset
   309
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   310
    //First Testuid=KMultiRofsRepositoryUid
44f437012c90 201041_01
hgs
parents:
diff changeset
   311
    //Testing the OOM of multi rofs processing
44f437012c90 201041_01
hgs
parents:
diff changeset
   312
    // 0xF1000900 to 0xF1000904 expect KErrNone as they are all PMA keyspaces of the same UID across 
44f437012c90 201041_01
hgs
parents:
diff changeset
   313
    //   multiple ROFS layers.
44f437012c90 201041_01
hgs
parents:
diff changeset
   314
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid0, _L("Open Close OOM Multi ROFS Test 0"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
   315
    DoAdditionalCheckingL(KMultiRofsRepositoryUid0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   316
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid1, _L("Open Close OOM Multi ROFS Test 1"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
   317
    DoAdditionalCheckingL(KMultiRofsRepositoryUid1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   318
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid2, _L("Open Close OOM Multi ROFS Test 2"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
   319
    DoAdditionalCheckingL(KMultiRofsRepositoryUid2);
44f437012c90 201041_01
hgs
parents:
diff changeset
   320
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid3, _L("Open Close OOM Multi ROFS Test 3"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
   321
    DoAdditionalCheckingL(KMultiRofsRepositoryUid3);
44f437012c90 201041_01
hgs
parents:
diff changeset
   322
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid4, _L("Open Close OOM Multi ROFS Test 4"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
   323
    DoAdditionalCheckingL(KMultiRofsRepositoryUid4);
44f437012c90 201041_01
hgs
parents:
diff changeset
   324
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   325
    // 0xF1000905 to 0xF100090D expect KErrCorrupt as they have at least mixed one PMA keyspace and one 
44f437012c90 201041_01
hgs
parents:
diff changeset
   326
    //  Non-PMA keyspace of the same UID across multiple ROFS layers.
44f437012c90 201041_01
hgs
parents:
diff changeset
   327
    // No need for additional checking of merged value because it should be corrupt.
44f437012c90 201041_01
hgs
parents:
diff changeset
   328
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid5, _L("Open Close OOM Multi ROFS Test 5"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   329
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid6, _L("Open Close OOM Multi ROFS Test 6"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   330
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid7, _L("Open Close OOM Multi ROFS Test 7"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   331
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid8, _L("Open Close OOM Multi ROFS Test 8"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   332
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid9, _L("Open Close OOM Multi ROFS Test 9"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   333
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid10, _L("Open Close OOM Multi ROFS Test 10"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   334
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid11, _L("Open Close OOM Multi ROFS Test 11"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   335
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid12, _L("Open Close OOM Multi ROFS Test 12"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   336
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid13, _L("Open Close OOM Multi ROFS Test 13"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   337
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   338
44f437012c90 201041_01
hgs
parents:
diff changeset
   339
LOCAL_C void MainL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   340
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   341
    CActiveScheduler* scheduler = new(ELeave)CActiveScheduler;
44f437012c90 201041_01
hgs
parents:
diff changeset
   342
    CActiveScheduler::Install(scheduler);
44f437012c90 201041_01
hgs
parents:
diff changeset
   343
44f437012c90 201041_01
hgs
parents:
diff changeset
   344
    DoPMAMultiRofsTestL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   345
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   346
44f437012c90 201041_01
hgs
parents:
diff changeset
   347
    delete scheduler;
44f437012c90 201041_01
hgs
parents:
diff changeset
   348
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   349
44f437012c90 201041_01
hgs
parents:
diff changeset
   350
TInt E32Main ()
44f437012c90 201041_01
hgs
parents:
diff changeset
   351
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   352
    TheTest.Title ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   353
    TheTest.Start(_L("PMA Multi ROFS CenrepServ Test"));
44f437012c90 201041_01
hgs
parents:
diff changeset
   354
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   355
    CTrapCleanup* cleanup = CTrapCleanup::New();
44f437012c90 201041_01
hgs
parents:
diff changeset
   356
    TheTest(cleanup != NULL);
44f437012c90 201041_01
hgs
parents:
diff changeset
   357
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   358
    __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
   359
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   360
    TRAPD(err, MainL());
44f437012c90 201041_01
hgs
parents:
diff changeset
   361
    TEST2(err, KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
   362
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   363
    __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
   364
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   365
    TheTest.End ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   366
    TheTest.Close ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   367
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   368
    delete cleanup;
44f437012c90 201041_01
hgs
parents:
diff changeset
   369
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   370
    User::Heap().Check();
44f437012c90 201041_01
hgs
parents:
diff changeset
   371
    return KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   372
    }