persistentstorage/centralrepository/test/t_cenrep_pma_oom.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
//
44f437012c90 201041_01
hgs
parents:
diff changeset
    15
44f437012c90 201041_01
hgs
parents:
diff changeset
    16
#include "t_cenrep_helper.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    17
#include <e32test.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    18
#include <f32file.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    19
#include <utf.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    20
#include "srvsess.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    21
#include "sessmgr.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    22
#include "srvres.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    23
#include "srvreqs.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    24
#include "cachemgr.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    25
#include "clientrequest.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    26
#include "install.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    27
#include <bautils.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    28
44f437012c90 201041_01
hgs
parents:
diff changeset
    29
LOCAL_D RTest                   TheTest(_L("t_cenrep_pma_oom.exe"));
44f437012c90 201041_01
hgs
parents:
diff changeset
    30
44f437012c90 201041_01
hgs
parents:
diff changeset
    31
_LIT( KCentralRepositoryServerName, "Centralrepositorysrv");
44f437012c90 201041_01
hgs
parents:
diff changeset
    32
44f437012c90 201041_01
hgs
parents:
diff changeset
    33
_LIT(KInstallDirFile,           "c:\\private\\10202BE9\\persists\\installdir.bin");
44f437012c90 201041_01
hgs
parents:
diff changeset
    34
44f437012c90 201041_01
hgs
parents:
diff changeset
    35
_LIT(KInstallPMATxtFileSrc,     "z:\\private\\10202BE9\\f1000701.txi");
44f437012c90 201041_01
hgs
parents:
diff changeset
    36
_LIT(KInstallPMATxtFileTgt,     "c:\\private\\10202BE9\\f1000701.txt");
44f437012c90 201041_01
hgs
parents:
diff changeset
    37
44f437012c90 201041_01
hgs
parents:
diff changeset
    38
_LIT(KInstallPMACreFileSrc,     "z:\\private\\10202BE9\\f1000700.cri");
44f437012c90 201041_01
hgs
parents:
diff changeset
    39
_LIT(KInstallPMACreFileTgt,     "c:\\private\\10202BE9\\f1000700.cre");
44f437012c90 201041_01
hgs
parents:
diff changeset
    40
44f437012c90 201041_01
hgs
parents:
diff changeset
    41
//Test repositories Uid
44f437012c90 201041_01
hgs
parents:
diff changeset
    42
const TUid KTestRepositoryUid={0xf1000701};
44f437012c90 201041_01
hgs
parents:
diff changeset
    43
44f437012c90 201041_01
hgs
parents:
diff changeset
    44
static TUid KCurrentTestUid;
44f437012c90 201041_01
hgs
parents:
diff changeset
    45
44f437012c90 201041_01
hgs
parents:
diff changeset
    46
//Burst rate for __UHEAP_SETBURSTFAIL
44f437012c90 201041_01
hgs
parents:
diff changeset
    47
#ifdef _DEBUG
44f437012c90 201041_01
hgs
parents:
diff changeset
    48
const TInt KBurstRate = 20;
44f437012c90 201041_01
hgs
parents:
diff changeset
    49
#endif
44f437012c90 201041_01
hgs
parents:
diff changeset
    50
44f437012c90 201041_01
hgs
parents:
diff changeset
    51
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    52
//Test macros and functions
44f437012c90 201041_01
hgs
parents:
diff changeset
    53
LOCAL_C void Check(TInt aValue, TInt aLine)
44f437012c90 201041_01
hgs
parents:
diff changeset
    54
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    55
    if(!aValue)
44f437012c90 201041_01
hgs
parents:
diff changeset
    56
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
    57
        TRAPD(err, CleanupCDriveL());
44f437012c90 201041_01
hgs
parents:
diff changeset
    58
        if (err != KErrNone)
44f437012c90 201041_01
hgs
parents:
diff changeset
    59
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    60
            RDebug::Print( _L( "*** CleanupCDriveL also failed with error %d expecting KErrNone\r\n"), err );
44f437012c90 201041_01
hgs
parents:
diff changeset
    61
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    62
        TheTest(EFalse, aLine);
44f437012c90 201041_01
hgs
parents:
diff changeset
    63
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
    64
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
    65
LOCAL_C void Check(TInt aValue, TInt aExpected, TInt aLine, TBool aIsHexFormat=EFalse)
44f437012c90 201041_01
hgs
parents:
diff changeset
    66
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    67
    if(aValue != aExpected)
44f437012c90 201041_01
hgs
parents:
diff changeset
    68
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
    69
        if(aIsHexFormat)
44f437012c90 201041_01
hgs
parents:
diff changeset
    70
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    71
            RDebug::Print(_L("*** Expected error: 0x%x, got: 0x%x\r\n"), aExpected, aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
    72
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    73
        else
44f437012c90 201041_01
hgs
parents:
diff changeset
    74
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    75
            RDebug::Print(_L("*** Expected error: %d, got: %d\r\n"), aExpected, aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
    76
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    77
        TRAPD(err, CleanupCDriveL());
44f437012c90 201041_01
hgs
parents:
diff changeset
    78
        if (err != KErrNone)
44f437012c90 201041_01
hgs
parents:
diff changeset
    79
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    80
            RDebug::Print( _L( "*** CleanupCDriveL also failed with error %d expecting KErrNone\r\n"), err );
44f437012c90 201041_01
hgs
parents:
diff changeset
    81
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    82
        TheTest(EFalse, aLine);
44f437012c90 201041_01
hgs
parents:
diff changeset
    83
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
    84
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
    85
#define TEST(arg) ::Check((arg), __LINE__)
44f437012c90 201041_01
hgs
parents:
diff changeset
    86
#define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
44f437012c90 201041_01
hgs
parents:
diff changeset
    87
#define TESTHEX2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__, ETrue)
44f437012c90 201041_01
hgs
parents:
diff changeset
    88
#define TESTKErrNone(aValue) ::Check(aValue,0,__LINE__);
44f437012c90 201041_01
hgs
parents:
diff changeset
    89
44f437012c90 201041_01
hgs
parents:
diff changeset
    90
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    91
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    92
static void CloseTServerResources(TAny*)
44f437012c90 201041_01
hgs
parents:
diff changeset
    93
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    94
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
    95
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
    96
44f437012c90 201041_01
hgs
parents:
diff changeset
    97
/////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    98
class CenrepSrvOOMTest :public CBase
44f437012c90 201041_01
hgs
parents:
diff changeset
    99
{
44f437012c90 201041_01
hgs
parents:
diff changeset
   100
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
   101
    void GetL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   102
    void FindL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   103
    void ResetL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   104
    void NotifyL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   105
    void SetL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   106
    void CreateL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   107
    void DeleteL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   108
    void MoveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   109
44f437012c90 201041_01
hgs
parents:
diff changeset
   110
    CenrepSrvOOMTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
   111
    ~CenrepSrvOOMTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
   112
    static CenrepSrvOOMTest* NewL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   113
#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS
44f437012c90 201041_01
hgs
parents:
diff changeset
   114
    void DoHeapRepositoryContentCheckL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   115
#endif
44f437012c90 201041_01
hgs
parents:
diff changeset
   116
private:
44f437012c90 201041_01
hgs
parents:
diff changeset
   117
    void ConstructL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   118
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
   119
    CServerRepository* iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   120
    CSessionNotifier* iSessionNotif;
44f437012c90 201041_01
hgs
parents:
diff changeset
   121
};
44f437012c90 201041_01
hgs
parents:
diff changeset
   122
44f437012c90 201041_01
hgs
parents:
diff changeset
   123
//////////////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
   124
class CenrepSwiOOMTest :public CBase
44f437012c90 201041_01
hgs
parents:
diff changeset
   125
{
44f437012c90 201041_01
hgs
parents:
diff changeset
   126
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
   127
    void InstallTxtPmaL(TBool aIsSetup);
44f437012c90 201041_01
hgs
parents:
diff changeset
   128
    void InstallCrePmaL(TBool aIsSetup);
44f437012c90 201041_01
hgs
parents:
diff changeset
   129
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   130
    CenrepSwiOOMTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
   131
    ~CenrepSwiOOMTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
   132
    static CenrepSwiOOMTest* NewL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   133
private:
44f437012c90 201041_01
hgs
parents:
diff changeset
   134
    void ConstructL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   135
    CCentRepSWIWatcher* iSwiWatcher;
44f437012c90 201041_01
hgs
parents:
diff changeset
   136
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
   137
};
44f437012c90 201041_01
hgs
parents:
diff changeset
   138
//////////////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
   139
44f437012c90 201041_01
hgs
parents:
diff changeset
   140
CenrepSrvOOMTest::CenrepSrvOOMTest(){}
44f437012c90 201041_01
hgs
parents:
diff changeset
   141
44f437012c90 201041_01
hgs
parents:
diff changeset
   142
CenrepSrvOOMTest::~CenrepSrvOOMTest()
44f437012c90 201041_01
hgs
parents:
diff changeset
   143
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   144
    if(iServerRepo)
44f437012c90 201041_01
hgs
parents:
diff changeset
   145
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   146
        if(iSessionNotif)
44f437012c90 201041_01
hgs
parents:
diff changeset
   147
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   148
            iServerRepo->Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   149
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   150
        delete iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   151
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   152
    if(iSessionNotif)
44f437012c90 201041_01
hgs
parents:
diff changeset
   153
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   154
        delete iSessionNotif;
44f437012c90 201041_01
hgs
parents:
diff changeset
   155
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   156
44f437012c90 201041_01
hgs
parents:
diff changeset
   157
    // Cache must be disabled here. Otherwise, if any idle repositories exists, they will
44f437012c90 201041_01
hgs
parents:
diff changeset
   158
    // still be open (have their pointers in the iOpenRepositories list) and the list will leak.
44f437012c90 201041_01
hgs
parents:
diff changeset
   159
    TServerResources::iCacheManager->DisableCache();
44f437012c90 201041_01
hgs
parents:
diff changeset
   160
    TServerResources::iObserver->CloseiOpenRepositories();
44f437012c90 201041_01
hgs
parents:
diff changeset
   161
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   162
44f437012c90 201041_01
hgs
parents:
diff changeset
   163
CenrepSrvOOMTest* CenrepSrvOOMTest::NewL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   164
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   165
    CenrepSrvOOMTest* self=new (ELeave)CenrepSrvOOMTest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   166
    CleanupStack::PushL(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   167
    self->ConstructL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   168
    CleanupStack::Pop(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   169
    return self;
44f437012c90 201041_01
hgs
parents:
diff changeset
   170
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   171
44f437012c90 201041_01
hgs
parents:
diff changeset
   172
void CenrepSrvOOMTest::ConstructL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   173
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   174
    iServerRepo=new (ELeave)CServerRepository();
44f437012c90 201041_01
hgs
parents:
diff changeset
   175
    iSessionNotif=new (ELeave) CSessionNotifier();
44f437012c90 201041_01
hgs
parents:
diff changeset
   176
44f437012c90 201041_01
hgs
parents:
diff changeset
   177
    iServerRepo->OpenL(KCurrentTestUid,*iSessionNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   178
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   179
44f437012c90 201041_01
hgs
parents:
diff changeset
   180
//////////////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
   181
44f437012c90 201041_01
hgs
parents:
diff changeset
   182
CenrepSwiOOMTest::CenrepSwiOOMTest(){}
44f437012c90 201041_01
hgs
parents:
diff changeset
   183
44f437012c90 201041_01
hgs
parents:
diff changeset
   184
CenrepSwiOOMTest::~CenrepSwiOOMTest()
44f437012c90 201041_01
hgs
parents:
diff changeset
   185
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   186
    delete iSwiWatcher;
44f437012c90 201041_01
hgs
parents:
diff changeset
   187
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   188
44f437012c90 201041_01
hgs
parents:
diff changeset
   189
CenrepSwiOOMTest* CenrepSwiOOMTest::NewL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   190
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   191
    CenrepSwiOOMTest* self=new (ELeave)CenrepSwiOOMTest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   192
    CleanupStack::PushL(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   193
    self->ConstructL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   194
    CleanupStack::Pop(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   195
    return self;
44f437012c90 201041_01
hgs
parents:
diff changeset
   196
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   197
44f437012c90 201041_01
hgs
parents:
diff changeset
   198
void CenrepSwiOOMTest::ConstructL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   199
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   200
    iSwiWatcher = CCentRepSWIWatcher::NewL(TServerResources::iFs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   201
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   202
44f437012c90 201041_01
hgs
parents:
diff changeset
   203
//Getting various information and security policy from the repository
44f437012c90 201041_01
hgs
parents:
diff changeset
   204
//TInt                 CServerRepository::Get(TUint32 aId,T& aVal)
44f437012c90 201041_01
hgs
parents:
diff changeset
   205
//TServerSetting*     CServerRepository::GetSetting(TUint32 aId)
44f437012c90 201041_01
hgs
parents:
diff changeset
   206
void CenrepSrvOOMTest::GetL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   207
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   208
    TInt err=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   209
    TInt keyInt=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   210
    TServerSetting* srvsetting;
44f437012c90 201041_01
hgs
parents:
diff changeset
   211
    //----------Getting the TInt(1-15)-----------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   212
    for(TInt i=1;i<=15;i++)
44f437012c90 201041_01
hgs
parents:
diff changeset
   213
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   214
        err=iServerRepo->Get(i,keyInt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   215
        //Remember the policy check is done at the session level
44f437012c90 201041_01
hgs
parents:
diff changeset
   216
        TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   217
        TEST2(i,keyInt);
44f437012c90 201041_01
hgs
parents:
diff changeset
   218
        srvsetting=iServerRepo->GetSetting(i);
44f437012c90 201041_01
hgs
parents:
diff changeset
   219
        TEST(srvsetting->Key()==static_cast<TUint32>(i));
44f437012c90 201041_01
hgs
parents:
diff changeset
   220
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   221
    //---------Getting the TReal(16-19)---------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   222
    TReal keyValue;
44f437012c90 201041_01
hgs
parents:
diff changeset
   223
    err=iServerRepo->Get(16,keyValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   224
    TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   225
    TEST(keyValue==10.1010);
44f437012c90 201041_01
hgs
parents:
diff changeset
   226
    srvsetting=iServerRepo->GetSetting(16);
44f437012c90 201041_01
hgs
parents:
diff changeset
   227
    TESTHEX2(srvsetting->Key(),16);
44f437012c90 201041_01
hgs
parents:
diff changeset
   228
44f437012c90 201041_01
hgs
parents:
diff changeset
   229
    err=iServerRepo->Get(19,keyValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   230
    TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   231
    TEST(keyValue==13.1313);
44f437012c90 201041_01
hgs
parents:
diff changeset
   232
44f437012c90 201041_01
hgs
parents:
diff changeset
   233
    //----------Getting the String(20-23)-----------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   234
    TBuf8<50> keyString;
44f437012c90 201041_01
hgs
parents:
diff changeset
   235
    _LIT(KFourteen,"fourteen");
44f437012c90 201041_01
hgs
parents:
diff changeset
   236
    err=iServerRepo->Get(20,keyString);
44f437012c90 201041_01
hgs
parents:
diff changeset
   237
    TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   238
    //Even ascii(8 bytes) are stored as 16 bytes!!!
44f437012c90 201041_01
hgs
parents:
diff changeset
   239
    TPtr16 str16((TUint16*) keyString.Ptr(),keyString.Length()/2,keyString.Length()/2);
44f437012c90 201041_01
hgs
parents:
diff changeset
   240
    TEST(str16.Compare(KFourteen)==0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   241
    srvsetting=iServerRepo->GetSetting(20);
44f437012c90 201041_01
hgs
parents:
diff changeset
   242
    TESTHEX2(srvsetting->Key(),20);
44f437012c90 201041_01
hgs
parents:
diff changeset
   243
44f437012c90 201041_01
hgs
parents:
diff changeset
   244
    //---------Getting the String8(0x79)------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   245
    TBuf8<50> keyString8;
44f437012c90 201041_01
hgs
parents:
diff changeset
   246
    _LIT8(KString8,"string8");
44f437012c90 201041_01
hgs
parents:
diff changeset
   247
    err=iServerRepo->Get(0x79,keyString8);
44f437012c90 201041_01
hgs
parents:
diff changeset
   248
    TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   249
    TEST(keyString8.Compare(KString8)==0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   250
    srvsetting=iServerRepo->GetSetting(0x79);
44f437012c90 201041_01
hgs
parents:
diff changeset
   251
    TESTHEX2(srvsetting->Key(),0x79);
44f437012c90 201041_01
hgs
parents:
diff changeset
   252
44f437012c90 201041_01
hgs
parents:
diff changeset
   253
    //---------Getting the binary(0x82)-------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   254
    TBuf8<50> keyBinary;
44f437012c90 201041_01
hgs
parents:
diff changeset
   255
    _LIT8(KBinary8,"\x12\x34\xAB\xCD");
44f437012c90 201041_01
hgs
parents:
diff changeset
   256
    err=iServerRepo->Get(0x82,keyBinary);
44f437012c90 201041_01
hgs
parents:
diff changeset
   257
    TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   258
    //temporarily added to solve coverage problem in WINSCW
44f437012c90 201041_01
hgs
parents:
diff changeset
   259
    TEST(keyBinary.Compare(KBinary8)==0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   260
    srvsetting=iServerRepo->GetSetting(0x82);
44f437012c90 201041_01
hgs
parents:
diff changeset
   261
    TESTHEX2(srvsetting->Key(),0x82);
44f437012c90 201041_01
hgs
parents:
diff changeset
   262
44f437012c90 201041_01
hgs
parents:
diff changeset
   263
    //----------Getting individual policy-----------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   264
    //Current Exe has caps AllFiles+WriteDeviceData+ReadDeviceData
44f437012c90 201041_01
hgs
parents:
diff changeset
   265
    RThread currentThread;
44f437012c90 201041_01
hgs
parents:
diff changeset
   266
    TSecurityPolicy secPolicy;
44f437012c90 201041_01
hgs
parents:
diff changeset
   267
    //default policy
44f437012c90 201041_01
hgs
parents:
diff changeset
   268
    secPolicy=iServerRepo->GetDefaultReadAccessPolicy();
44f437012c90 201041_01
hgs
parents:
diff changeset
   269
    TEST(secPolicy.CheckPolicy(currentThread)==1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   270
    secPolicy=iServerRepo->GetDefaultWriteAccessPolicy();
44f437012c90 201041_01
hgs
parents:
diff changeset
   271
    TEST(secPolicy.CheckPolicy(currentThread)==1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   272
44f437012c90 201041_01
hgs
parents:
diff changeset
   273
    //check settings policies
44f437012c90 201041_01
hgs
parents:
diff changeset
   274
    //0x2 int 2 1 cap_rd=CommDD cap_wr=WriteDeviceData
44f437012c90 201041_01
hgs
parents:
diff changeset
   275
    //0x19 int 25 0 //defined in range policies with cap_rd=NetworkServices
44f437012c90 201041_01
hgs
parents:
diff changeset
   276
    secPolicy=iServerRepo->GetReadAccessPolicy(2);
44f437012c90 201041_01
hgs
parents:
diff changeset
   277
    TEST(secPolicy.CheckPolicy(currentThread)==0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   278
    secPolicy=iServerRepo->GetWriteAccessPolicy(2);
44f437012c90 201041_01
hgs
parents:
diff changeset
   279
    TEST(secPolicy.CheckPolicy(currentThread)==1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   280
    secPolicy=iServerRepo->GetReadAccessPolicy(25);
44f437012c90 201041_01
hgs
parents:
diff changeset
   281
    TEST(secPolicy.CheckPolicy(currentThread)==0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   282
44f437012c90 201041_01
hgs
parents:
diff changeset
   283
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   284
44f437012c90 201041_01
hgs
parents:
diff changeset
   285
// now that write operations must be done in transactions, setting up this helper
44f437012c90 201041_01
hgs
parents:
diff changeset
   286
// function to perform single Sets for the purpose of this test.
44f437012c90 201041_01
hgs
parents:
diff changeset
   287
template<class T>
44f437012c90 201041_01
hgs
parents:
diff changeset
   288
static TInt RepositorySingleSetL(CServerRepository& aRep, TUint32 aKey, const T& aValue)
44f437012c90 201041_01
hgs
parents:
diff changeset
   289
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   290
    aRep.StartTransaction(EConcurrentReadWriteTransaction);
44f437012c90 201041_01
hgs
parents:
diff changeset
   291
    aRep.CleanupCancelTransactionPushL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   292
    aRep.TransactionSetL(aKey, aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   293
    CleanupStack::Pop();
44f437012c90 201041_01
hgs
parents:
diff changeset
   294
    TUint32 keyInfo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   295
    return User::LeaveIfError(aRep.CommitTransaction(keyInfo));
44f437012c90 201041_01
hgs
parents:
diff changeset
   296
    };
44f437012c90 201041_01
hgs
parents:
diff changeset
   297
44f437012c90 201041_01
hgs
parents:
diff changeset
   298
//Setting OOM testing
44f437012c90 201041_01
hgs
parents:
diff changeset
   299
void CenrepSrvOOMTest::SetL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   300
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   301
    TInt ret=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   302
    TInt intValue=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   303
    TReal realValue=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   304
44f437012c90 201041_01
hgs
parents:
diff changeset
   305
    //---------------SetL-----------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   306
    //Setting an integer key
44f437012c90 201041_01
hgs
parents:
diff changeset
   307
    ret = RepositorySingleSetL(*iServerRepo, 0x60, 600);
44f437012c90 201041_01
hgs
parents:
diff changeset
   308
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   309
    ret=iServerRepo->Get(0x60,intValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   310
    TESTHEX2(intValue, 600);
44f437012c90 201041_01
hgs
parents:
diff changeset
   311
44f437012c90 201041_01
hgs
parents:
diff changeset
   312
    //Setting a real key
44f437012c90 201041_01
hgs
parents:
diff changeset
   313
    ret = RepositorySingleSetL(*iServerRepo, 0x66, 99.99);
44f437012c90 201041_01
hgs
parents:
diff changeset
   314
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   315
    ret=iServerRepo->Get(0x66,realValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   316
    TEST(realValue==99.99);
44f437012c90 201041_01
hgs
parents:
diff changeset
   317
44f437012c90 201041_01
hgs
parents:
diff changeset
   318
    //Setting a string key
44f437012c90 201041_01
hgs
parents:
diff changeset
   319
    //Even ascii(8 bytes) are stored as 16 bytes!!!
44f437012c90 201041_01
hgs
parents:
diff changeset
   320
    _LIT8(KString,"sixhundred");
44f437012c90 201041_01
hgs
parents:
diff changeset
   321
    TBuf8<50> stringChangeValue=KString();
44f437012c90 201041_01
hgs
parents:
diff changeset
   322
    ret = RepositorySingleSetL(*iServerRepo, 0x69, stringChangeValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   323
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   324
44f437012c90 201041_01
hgs
parents:
diff changeset
   325
    TBuf8<50> keyString;
44f437012c90 201041_01
hgs
parents:
diff changeset
   326
    ret=iServerRepo->Get(0x69,keyString);
44f437012c90 201041_01
hgs
parents:
diff changeset
   327
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   328
    TEST(keyString.Compare(KString)==0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   329
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   330
44f437012c90 201041_01
hgs
parents:
diff changeset
   331
// now that write operations must be done in transactions, setting up this helper
44f437012c90 201041_01
hgs
parents:
diff changeset
   332
// function to perform single Creates for the purpose of this test.
44f437012c90 201041_01
hgs
parents:
diff changeset
   333
template<class T>
44f437012c90 201041_01
hgs
parents:
diff changeset
   334
static TInt RepositorySingleCreateL(CServerRepository& aRep, TUint32 aKey, const T& aValue, TUint32* aMeta)
44f437012c90 201041_01
hgs
parents:
diff changeset
   335
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   336
    aRep.StartTransaction(EConcurrentReadWriteTransaction);
44f437012c90 201041_01
hgs
parents:
diff changeset
   337
    aRep.CleanupCancelTransactionPushL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   338
    aRep.TransactionCreateL(aKey, aValue, aMeta);
44f437012c90 201041_01
hgs
parents:
diff changeset
   339
    CleanupStack::Pop();
44f437012c90 201041_01
hgs
parents:
diff changeset
   340
    TUint32 keyInfo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   341
    return User::LeaveIfError(aRep.CommitTransaction(keyInfo));
44f437012c90 201041_01
hgs
parents:
diff changeset
   342
    };
44f437012c90 201041_01
hgs
parents:
diff changeset
   343
44f437012c90 201041_01
hgs
parents:
diff changeset
   344
void CenrepSrvOOMTest::CreateL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   345
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   346
    TInt ret=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   347
    TInt intValue=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   348
    TReal realValue=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   349
44f437012c90 201041_01
hgs
parents:
diff changeset
   350
    //--------------CreateL-----------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   351
    //Creating an integer key
44f437012c90 201041_01
hgs
parents:
diff changeset
   352
    TInt intRetValue;
44f437012c90 201041_01
hgs
parents:
diff changeset
   353
    intValue=9000;
44f437012c90 201041_01
hgs
parents:
diff changeset
   354
    RepositorySingleCreateL(*iServerRepo, 0x90, intValue, NULL);
44f437012c90 201041_01
hgs
parents:
diff changeset
   355
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   356
    ret=iServerRepo->Get(0x90,intRetValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   357
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   358
    TESTHEX2(intRetValue, intValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   359
44f437012c90 201041_01
hgs
parents:
diff changeset
   360
    //Creating a real key
44f437012c90 201041_01
hgs
parents:
diff changeset
   361
    TReal realRetValue;
44f437012c90 201041_01
hgs
parents:
diff changeset
   362
    realValue=33.3333;
44f437012c90 201041_01
hgs
parents:
diff changeset
   363
    RepositorySingleCreateL(*iServerRepo, 0x92, realValue, NULL);
44f437012c90 201041_01
hgs
parents:
diff changeset
   364
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   365
    ret=iServerRepo->Get(0x92,realRetValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   366
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   367
    TEST(realValue==realRetValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   368
44f437012c90 201041_01
hgs
parents:
diff changeset
   369
    //Creating a string key
44f437012c90 201041_01
hgs
parents:
diff changeset
   370
    _LIT8(KStringValue,"creatingkey");
44f437012c90 201041_01
hgs
parents:
diff changeset
   371
    TBuf8<50> stringCreateValue=KStringValue();
44f437012c90 201041_01
hgs
parents:
diff changeset
   372
    RepositorySingleCreateL(*iServerRepo, 0x93, stringCreateValue, NULL);
44f437012c90 201041_01
hgs
parents:
diff changeset
   373
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   374
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   375
44f437012c90 201041_01
hgs
parents:
diff changeset
   376
// now that write operations must be done in transactions, setting up this helper
44f437012c90 201041_01
hgs
parents:
diff changeset
   377
// function to perform single Creates for the purpose of this test.
44f437012c90 201041_01
hgs
parents:
diff changeset
   378
static TInt RepositorySingleDeleteL(CServerRepository& aRep, TUint32 aKey)
44f437012c90 201041_01
hgs
parents:
diff changeset
   379
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   380
    aRep.StartTransaction(EConcurrentReadWriteTransaction);
44f437012c90 201041_01
hgs
parents:
diff changeset
   381
    aRep.CleanupCancelTransactionPushL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   382
    aRep.TransactionDeleteL(aKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
   383
    CleanupStack::Pop();
44f437012c90 201041_01
hgs
parents:
diff changeset
   384
    TUint32 keyInfo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   385
    return User::LeaveIfError(aRep.CommitTransaction(keyInfo));
44f437012c90 201041_01
hgs
parents:
diff changeset
   386
    };
44f437012c90 201041_01
hgs
parents:
diff changeset
   387
44f437012c90 201041_01
hgs
parents:
diff changeset
   388
void CenrepSrvOOMTest::DeleteL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   389
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   390
    TInt ret=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   391
    //--------------Delete-----------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   392
    //Find the settings 0x10A-0x10C to ensure it is still there
44f437012c90 201041_01
hgs
parents:
diff changeset
   393
    RSettingPointerArray matchingArray;
44f437012c90 201041_01
hgs
parents:
diff changeset
   394
    TUint32 partialId=0x100;
44f437012c90 201041_01
hgs
parents:
diff changeset
   395
    TUint32 idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   396
    ret=iServerRepo->FindSettings(partialId,idMask,matchingArray);
44f437012c90 201041_01
hgs
parents:
diff changeset
   397
    if(ret==KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   398
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   399
        matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   400
        User::LeaveNoMemory();
44f437012c90 201041_01
hgs
parents:
diff changeset
   401
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   402
44f437012c90 201041_01
hgs
parents:
diff changeset
   403
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   404
    TEST2(matchingArray.Count(),3);
44f437012c90 201041_01
hgs
parents:
diff changeset
   405
    matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   406
44f437012c90 201041_01
hgs
parents:
diff changeset
   407
    //Deleting settings 0x10A to 0x10C
44f437012c90 201041_01
hgs
parents:
diff changeset
   408
    for(TInt i=0x10A;i<=0x10C;i++)
44f437012c90 201041_01
hgs
parents:
diff changeset
   409
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   410
        RepositorySingleDeleteL(*iServerRepo, i);
44f437012c90 201041_01
hgs
parents:
diff changeset
   411
        TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   412
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   413
    //After deleting try to find the persistent settings again
44f437012c90 201041_01
hgs
parents:
diff changeset
   414
    ret=iServerRepo->FindSettings(partialId,idMask,matchingArray);
44f437012c90 201041_01
hgs
parents:
diff changeset
   415
    if(ret==KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   416
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   417
        matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   418
        User::LeaveNoMemory();
44f437012c90 201041_01
hgs
parents:
diff changeset
   419
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   420
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   421
    TEST2(matchingArray.Count(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   422
    matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   423
44f437012c90 201041_01
hgs
parents:
diff changeset
   424
    //-------------DeleteRange---------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   425
    //Deleting settings 0x1 to 0xF
44f437012c90 201041_01
hgs
parents:
diff changeset
   426
    TClientRequest dummyrequest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   427
    TUint32 errId=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   428
    partialId=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   429
    idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   430
    ret=iServerRepo->FindSettings(partialId,idMask,matchingArray);
44f437012c90 201041_01
hgs
parents:
diff changeset
   431
    if(ret==KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   432
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   433
        matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   434
        User::LeaveNoMemory();
44f437012c90 201041_01
hgs
parents:
diff changeset
   435
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   436
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   437
    TEST2(matchingArray.Count(),15);
44f437012c90 201041_01
hgs
parents:
diff changeset
   438
    matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   439
44f437012c90 201041_01
hgs
parents:
diff changeset
   440
    //Deleting settings using the DeleteRange
44f437012c90 201041_01
hgs
parents:
diff changeset
   441
    dummyrequest.SetParam(0,partialId);
44f437012c90 201041_01
hgs
parents:
diff changeset
   442
    dummyrequest.SetParam(1,idMask);
44f437012c90 201041_01
hgs
parents:
diff changeset
   443
    dummyrequest.SetPolicyCheck(ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   444
44f437012c90 201041_01
hgs
parents:
diff changeset
   445
    // write operation must take place in a transaction
44f437012c90 201041_01
hgs
parents:
diff changeset
   446
    iServerRepo->StartTransaction(EConcurrentReadWriteTransaction);
44f437012c90 201041_01
hgs
parents:
diff changeset
   447
    iServerRepo->CleanupCancelTransactionPushL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   448
    iServerRepo->TransactionDeleteRangeL(dummyrequest,errId);
44f437012c90 201041_01
hgs
parents:
diff changeset
   449
    CleanupStack::Pop();
44f437012c90 201041_01
hgs
parents:
diff changeset
   450
    TUint32 keyInfo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   451
    User::LeaveIfError(iServerRepo->CommitTransaction(keyInfo));
44f437012c90 201041_01
hgs
parents:
diff changeset
   452
44f437012c90 201041_01
hgs
parents:
diff changeset
   453
    //Now try to find the key being deleted
44f437012c90 201041_01
hgs
parents:
diff changeset
   454
    ret=iServerRepo->FindSettings(partialId,idMask,matchingArray);
44f437012c90 201041_01
hgs
parents:
diff changeset
   455
    if(ret==KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   456
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   457
        matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   458
        User::LeaveNoMemory();
44f437012c90 201041_01
hgs
parents:
diff changeset
   459
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   460
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   461
    TEST2(matchingArray.Count(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   462
    matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   463
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   464
44f437012c90 201041_01
hgs
parents:
diff changeset
   465
//Setting existing key value then follow by commit
44f437012c90 201041_01
hgs
parents:
diff changeset
   466
void CenrepSrvOOMTest::MoveL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   467
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   468
    RSettingPointerArray matchingArray;
44f437012c90 201041_01
hgs
parents:
diff changeset
   469
    TUint32 idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   470
44f437012c90 201041_01
hgs
parents:
diff changeset
   471
    TClientRequest dummyrequest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   472
    TUint32 errId=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   473
    TUint32 sourcePartialId=0x110;
44f437012c90 201041_01
hgs
parents:
diff changeset
   474
    TUint32 targetPartialId=0x120;
44f437012c90 201041_01
hgs
parents:
diff changeset
   475
    idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   476
44f437012c90 201041_01
hgs
parents:
diff changeset
   477
    TKeyFilter srcKeyIdentifier = {sourcePartialId, idMask};
44f437012c90 201041_01
hgs
parents:
diff changeset
   478
    TPckg<TKeyFilter> pSrcIdentifier(srcKeyIdentifier);
44f437012c90 201041_01
hgs
parents:
diff changeset
   479
    TKeyFilter tgtKeyIdentifier = {targetPartialId, idMask};
44f437012c90 201041_01
hgs
parents:
diff changeset
   480
    TPckg<TKeyFilter> pTgtIdentifier(tgtKeyIdentifier);
44f437012c90 201041_01
hgs
parents:
diff changeset
   481
44f437012c90 201041_01
hgs
parents:
diff changeset
   482
    //First check to ensure the target key before move does not exist
44f437012c90 201041_01
hgs
parents:
diff changeset
   483
    User::LeaveIfError(iServerRepo->FindSettings(targetPartialId,idMask,matchingArray));
44f437012c90 201041_01
hgs
parents:
diff changeset
   484
    TEST2(matchingArray.Count(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   485
    matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   486
44f437012c90 201041_01
hgs
parents:
diff changeset
   487
    //moving from 0x110(0x11B,0x11C,0x11E) to 0x120
44f437012c90 201041_01
hgs
parents:
diff changeset
   488
    dummyrequest.SetParam(0, &pSrcIdentifier);
44f437012c90 201041_01
hgs
parents:
diff changeset
   489
    dummyrequest.SetParam(1, &pTgtIdentifier);
44f437012c90 201041_01
hgs
parents:
diff changeset
   490
    dummyrequest.SetPolicyCheck(ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   491
44f437012c90 201041_01
hgs
parents:
diff changeset
   492
    // write operation must take place in a transaction
44f437012c90 201041_01
hgs
parents:
diff changeset
   493
    User::LeaveIfError(iServerRepo->StartTransaction(EConcurrentReadWriteTransaction));
44f437012c90 201041_01
hgs
parents:
diff changeset
   494
    iServerRepo->CleanupCancelTransactionPushL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   495
    User::LeaveIfError(iServerRepo->TransactionMoveL(dummyrequest,errId));
44f437012c90 201041_01
hgs
parents:
diff changeset
   496
    CleanupStack::Pop();
44f437012c90 201041_01
hgs
parents:
diff changeset
   497
    TUint32 keyInfo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   498
    User::LeaveIfError(iServerRepo->CommitTransaction(keyInfo));
44f437012c90 201041_01
hgs
parents:
diff changeset
   499
44f437012c90 201041_01
hgs
parents:
diff changeset
   500
    //Now try to find the key being moved
44f437012c90 201041_01
hgs
parents:
diff changeset
   501
    User::LeaveIfError(iServerRepo->FindSettings(targetPartialId,idMask,matchingArray));
44f437012c90 201041_01
hgs
parents:
diff changeset
   502
    TEST2(matchingArray.Count(),3);
44f437012c90 201041_01
hgs
parents:
diff changeset
   503
    matchingArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   504
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   505
44f437012c90 201041_01
hgs
parents:
diff changeset
   506
//Finding keys from the settings
44f437012c90 201041_01
hgs
parents:
diff changeset
   507
//TInt FindSettings(TUint32 aPartialId,TUint32 aIdMask,RSettingPointerArray& aMatches)
44f437012c90 201041_01
hgs
parents:
diff changeset
   508
//Guarantees the heap free in aMatches if this function fail
44f437012c90 201041_01
hgs
parents:
diff changeset
   509
void CenrepSrvOOMTest::FindL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   510
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   511
    TInt ret=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   512
    RSettingPointerArray foundIdArray;
44f437012c90 201041_01
hgs
parents:
diff changeset
   513
    TUint32 partialId=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   514
    TUint32 idMask=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   515
    //-----------Finding settings array using partial id & mask------
44f437012c90 201041_01
hgs
parents:
diff changeset
   516
44f437012c90 201041_01
hgs
parents:
diff changeset
   517
    //------------------Real type---------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   518
    //0x42,0x44,0x45,0x48
44f437012c90 201041_01
hgs
parents:
diff changeset
   519
    partialId=0x40;
44f437012c90 201041_01
hgs
parents:
diff changeset
   520
    idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   521
    User::LeaveIfError(iServerRepo->FindSettings(partialId,idMask,foundIdArray));
44f437012c90 201041_01
hgs
parents:
diff changeset
   522
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   523
    TEST2(foundIdArray.Count(),4);
44f437012c90 201041_01
hgs
parents:
diff changeset
   524
    foundIdArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   525
44f437012c90 201041_01
hgs
parents:
diff changeset
   526
    //-----------------String type-------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   527
    //0x51,0x54,0x5B
44f437012c90 201041_01
hgs
parents:
diff changeset
   528
    partialId=0x50;
44f437012c90 201041_01
hgs
parents:
diff changeset
   529
    idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   530
    User::LeaveIfError(iServerRepo->FindSettings(partialId,idMask,foundIdArray));
44f437012c90 201041_01
hgs
parents:
diff changeset
   531
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   532
    TEST2(foundIdArray.Count(),3);
44f437012c90 201041_01
hgs
parents:
diff changeset
   533
    foundIdArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   534
44f437012c90 201041_01
hgs
parents:
diff changeset
   535
    //--------------------Int type----------------------------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   536
    partialId=0x30;
44f437012c90 201041_01
hgs
parents:
diff changeset
   537
    idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   538
    //This should return only 0x30,0x34,0x35,0x39,0x3B( 5 items)
44f437012c90 201041_01
hgs
parents:
diff changeset
   539
    User::LeaveIfError(iServerRepo->FindSettings(partialId,idMask,foundIdArray));
44f437012c90 201041_01
hgs
parents:
diff changeset
   540
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   541
    TEST2(foundIdArray.Count(),5);
44f437012c90 201041_01
hgs
parents:
diff changeset
   542
44f437012c90 201041_01
hgs
parents:
diff changeset
   543
    //----------------Find comparison using EEqual & ENotEqual------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   544
    TInt searchValue=100;
44f437012c90 201041_01
hgs
parents:
diff changeset
   545
    TClientRequest dummyrequest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   546
    RArray<TUint32> idArray;
44f437012c90 201041_01
hgs
parents:
diff changeset
   547
    //Set the policycheck to always pass
44f437012c90 201041_01
hgs
parents:
diff changeset
   548
    dummyrequest.SetPolicyCheck(ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   549
    //Comparison using Equal
44f437012c90 201041_01
hgs
parents:
diff changeset
   550
    TRAP(ret,iServerRepo->FindCompareL(foundIdArray,searchValue,EEqual,idArray));
44f437012c90 201041_01
hgs
parents:
diff changeset
   551
    if(ret==KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   552
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   553
        //do not need to reset idArray as it is done inside the function itself when it returns not KErrNone
44f437012c90 201041_01
hgs
parents:
diff changeset
   554
        foundIdArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   555
        User::LeaveNoMemory();
44f437012c90 201041_01
hgs
parents:
diff changeset
   556
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   557
    TEST2(idArray.Count(),2);
44f437012c90 201041_01
hgs
parents:
diff changeset
   558
    TEST((idArray[0]==0x30 && idArray[1]==0x34) || (idArray[0]==0x34 && idArray[1]==0x30));
44f437012c90 201041_01
hgs
parents:
diff changeset
   559
    idArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   560
    //Comparison using ENotEqual
44f437012c90 201041_01
hgs
parents:
diff changeset
   561
    TRAP(ret,iServerRepo->FindCompareL(foundIdArray,searchValue,ENotEqual,idArray));
44f437012c90 201041_01
hgs
parents:
diff changeset
   562
    if(ret==KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   563
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   564
        //do not need to reset idArray as it is done inside the function itself when it returns not KErrNone
44f437012c90 201041_01
hgs
parents:
diff changeset
   565
        foundIdArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   566
        User::LeaveNoMemory();
44f437012c90 201041_01
hgs
parents:
diff changeset
   567
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   568
    TEST2(idArray.Count(),3);
44f437012c90 201041_01
hgs
parents:
diff changeset
   569
    idArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   570
    foundIdArray.Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   571
44f437012c90 201041_01
hgs
parents:
diff changeset
   572
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   573
44f437012c90 201041_01
hgs
parents:
diff changeset
   574
//Resetting settings
44f437012c90 201041_01
hgs
parents:
diff changeset
   575
void CenrepSrvOOMTest::ResetL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   576
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   577
    TInt ret=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   578
    TInt retValue=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   579
    TReal realValue=0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   580
44f437012c90 201041_01
hgs
parents:
diff changeset
   581
    //-------------Single key reset----------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   582
44f437012c90 201041_01
hgs
parents:
diff changeset
   583
    ret = RepositorySingleSetL(*iServerRepo, 1, 500);
44f437012c90 201041_01
hgs
parents:
diff changeset
   584
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   585
    ret=iServerRepo->Get(1,retValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   586
    TESTHEX2(retValue, 500);
44f437012c90 201041_01
hgs
parents:
diff changeset
   587
44f437012c90 201041_01
hgs
parents:
diff changeset
   588
    //Resetting individual settings
44f437012c90 201041_01
hgs
parents:
diff changeset
   589
    ret=iServerRepo->ResetL(1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   590
    TEST2(ret, KErrNotSupported);
44f437012c90 201041_01
hgs
parents:
diff changeset
   591
44f437012c90 201041_01
hgs
parents:
diff changeset
   592
    //Check for value once being reset
44f437012c90 201041_01
hgs
parents:
diff changeset
   593
    ret=iServerRepo->Get(1,retValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   594
    TEST(retValue==500);
44f437012c90 201041_01
hgs
parents:
diff changeset
   595
44f437012c90 201041_01
hgs
parents:
diff changeset
   596
    //------------All keys reset------------------------------
44f437012c90 201041_01
hgs
parents:
diff changeset
   597
    ret = RepositorySingleSetL(*iServerRepo, 17, 3.1343424);
44f437012c90 201041_01
hgs
parents:
diff changeset
   598
    TESTKErrNone(ret);
44f437012c90 201041_01
hgs
parents:
diff changeset
   599
44f437012c90 201041_01
hgs
parents:
diff changeset
   600
    //Reset all settings from Rom
44f437012c90 201041_01
hgs
parents:
diff changeset
   601
    ret = iServerRepo->ResetAllL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   602
    TEST2(ret, KErrNotSupported);
44f437012c90 201041_01
hgs
parents:
diff changeset
   603
44f437012c90 201041_01
hgs
parents:
diff changeset
   604
    //Check for value once all being reset
44f437012c90 201041_01
hgs
parents:
diff changeset
   605
44f437012c90 201041_01
hgs
parents:
diff changeset
   606
    ret=iServerRepo->Get(17,realValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   607
    TEST(realValue==3.1343424);
44f437012c90 201041_01
hgs
parents:
diff changeset
   608
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   609
44f437012c90 201041_01
hgs
parents:
diff changeset
   610
void CenrepSrvOOMTest::NotifyL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   611
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   612
    TInt err=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   613
44f437012c90 201041_01
hgs
parents:
diff changeset
   614
    //addding individual requests
44f437012c90 201041_01
hgs
parents:
diff changeset
   615
    for(TInt i=0;i<10;i++)
44f437012c90 201041_01
hgs
parents:
diff changeset
   616
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   617
        TClientRequest dummyRequest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   618
        User::LeaveIfError(iSessionNotif->AddRequest(i,dummyRequest));
44f437012c90 201041_01
hgs
parents:
diff changeset
   619
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   620
44f437012c90 201041_01
hgs
parents:
diff changeset
   621
    //adding group requests
44f437012c90 201041_01
hgs
parents:
diff changeset
   622
    for(TInt i=0;i<10;i++)
44f437012c90 201041_01
hgs
parents:
diff changeset
   623
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   624
        TClientRequest dummyRequest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   625
        TUint32 partialId=100*i;
44f437012c90 201041_01
hgs
parents:
diff changeset
   626
        TUint32 idMask=0xFFFFFFF0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   627
        User::LeaveIfError(iSessionNotif->AddRequest(partialId,idMask,dummyRequest));
44f437012c90 201041_01
hgs
parents:
diff changeset
   628
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   629
44f437012c90 201041_01
hgs
parents:
diff changeset
   630
    //cancelling individual requests
44f437012c90 201041_01
hgs
parents:
diff changeset
   631
    User::LeaveIfError(iSessionNotif->CancelRequest(5));
44f437012c90 201041_01
hgs
parents:
diff changeset
   632
    //Check to ensure that it has been deleted so calling cancel again will return KErrNotFound
44f437012c90 201041_01
hgs
parents:
diff changeset
   633
    err=iSessionNotif->CancelRequest(5);
44f437012c90 201041_01
hgs
parents:
diff changeset
   634
    TEST2(err,KErrNotFound);
44f437012c90 201041_01
hgs
parents:
diff changeset
   635
44f437012c90 201041_01
hgs
parents:
diff changeset
   636
    //cancelling group requests
44f437012c90 201041_01
hgs
parents:
diff changeset
   637
    User::LeaveIfError(iSessionNotif->CancelRequest(500,0xFFFFFFF0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   638
    err=iSessionNotif->CancelRequest(500,0xFFFFFF0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   639
    TEST2(err,KErrNotFound);
44f437012c90 201041_01
hgs
parents:
diff changeset
   640
44f437012c90 201041_01
hgs
parents:
diff changeset
   641
    //Finally cancel ALL requests
44f437012c90 201041_01
hgs
parents:
diff changeset
   642
    iSessionNotif->CancelAllRequests();
44f437012c90 201041_01
hgs
parents:
diff changeset
   643
44f437012c90 201041_01
hgs
parents:
diff changeset
   644
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   645
44f437012c90 201041_01
hgs
parents:
diff changeset
   646
//Deletes the CServerRepository object properly
44f437012c90 201041_01
hgs
parents:
diff changeset
   647
LOCAL_C void ReleaseRepository(TAny* aServerRepository)
44f437012c90 201041_01
hgs
parents:
diff changeset
   648
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   649
    CServerRepository* serverRepository = static_cast<CServerRepository*>(aServerRepository);
44f437012c90 201041_01
hgs
parents:
diff changeset
   650
44f437012c90 201041_01
hgs
parents:
diff changeset
   651
    TServerResources::iCacheManager->DisableCache();
44f437012c90 201041_01
hgs
parents:
diff changeset
   652
    TServerResources::iObserver->CloseiOpenRepositories();
44f437012c90 201041_01
hgs
parents:
diff changeset
   653
    delete serverRepository;
44f437012c90 201041_01
hgs
parents:
diff changeset
   654
    TServerResources::iCacheManager->EnableCache();
44f437012c90 201041_01
hgs
parents:
diff changeset
   655
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   656
44f437012c90 201041_01
hgs
parents:
diff changeset
   657
//Opening a repository and closing the repository
44f437012c90 201041_01
hgs
parents:
diff changeset
   658
LOCAL_C void OpenCloseL(TBool /*aOOMMode*/)
44f437012c90 201041_01
hgs
parents:
diff changeset
   659
{
44f437012c90 201041_01
hgs
parents:
diff changeset
   660
    CServerRepository* serverRepo=new (ELeave)CServerRepository();
44f437012c90 201041_01
hgs
parents:
diff changeset
   661
    TCleanupItem cleanupItem(&ReleaseRepository, serverRepo);
44f437012c90 201041_01
hgs
parents:
diff changeset
   662
    CleanupStack::PushL(cleanupItem);
44f437012c90 201041_01
hgs
parents:
diff changeset
   663
44f437012c90 201041_01
hgs
parents:
diff changeset
   664
    CSessionNotifier* sessNotif=new (ELeave)CSessionNotifier();
44f437012c90 201041_01
hgs
parents:
diff changeset
   665
    CleanupStack::PushL(sessNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   666
44f437012c90 201041_01
hgs
parents:
diff changeset
   667
    //  test access to a valid repository
44f437012c90 201041_01
hgs
parents:
diff changeset
   668
    serverRepo->OpenL(KCurrentTestUid,*sessNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   669
    serverRepo->Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   670
44f437012c90 201041_01
hgs
parents:
diff changeset
   671
    CleanupStack::PopAndDestroy(sessNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   672
    CleanupStack::PopAndDestroy(1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   673
}
44f437012c90 201041_01
hgs
parents:
diff changeset
   674
44f437012c90 201041_01
hgs
parents:
diff changeset
   675
LOCAL_C void DoMultiRofsReposTestL( TUid aReposUid, const TDesC& aTestDesc, TInt aExpectedResult)
44f437012c90 201041_01
hgs
parents:
diff changeset
   676
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   677
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   678
    TheTest.Next(aTestDesc);
44f437012c90 201041_01
hgs
parents:
diff changeset
   679
44f437012c90 201041_01
hgs
parents:
diff changeset
   680
    TInt err;
44f437012c90 201041_01
hgs
parents:
diff changeset
   681
    TInt tryCount = 0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   682
    KCurrentTestUid = aReposUid;
44f437012c90 201041_01
hgs
parents:
diff changeset
   683
    do
44f437012c90 201041_01
hgs
parents:
diff changeset
   684
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   685
        __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
   686
44f437012c90 201041_01
hgs
parents:
diff changeset
   687
        //Initializing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   688
        TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   689
        CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   690
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   691
        // find out the number of open handles
44f437012c90 201041_01
hgs
parents:
diff changeset
   692
        TInt startProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   693
        TInt startThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   694
        RThread().HandleCount(startProcessHandleCount, startThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   695
44f437012c90 201041_01
hgs
parents:
diff changeset
   696
        __UHEAP_SETBURSTFAIL(RAllocator::EBurstFailNext, ++tryCount, KBurstRate);
44f437012c90 201041_01
hgs
parents:
diff changeset
   697
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   698
        TRAP(err, OpenCloseL(ETrue));
44f437012c90 201041_01
hgs
parents:
diff changeset
   699
        if(err!=KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   700
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   701
            TEST2(err, aExpectedResult);
44f437012c90 201041_01
hgs
parents:
diff changeset
   702
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   703
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   704
        __UHEAP_RESET;
44f437012c90 201041_01
hgs
parents:
diff changeset
   705
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   706
        // check that no handles have leaked
44f437012c90 201041_01
hgs
parents:
diff changeset
   707
        TInt endProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   708
        TInt endThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   709
        RThread().HandleCount(endProcessHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   710
        TEST2(startProcessHandleCount, endProcessHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   711
        TEST2(startThreadHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   712
44f437012c90 201041_01
hgs
parents:
diff changeset
   713
        //Freeing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   714
        CleanupStack::Pop(); //CloseTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
   715
        TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   716
44f437012c90 201041_01
hgs
parents:
diff changeset
   717
        __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
   718
        } while(err == KErrNoMemory);
44f437012c90 201041_01
hgs
parents:
diff changeset
   719
44f437012c90 201041_01
hgs
parents:
diff changeset
   720
    TEST2(err, aExpectedResult);
44f437012c90 201041_01
hgs
parents:
diff changeset
   721
    TheTest.Printf(_L("- server succeeded at heap failure rate of %i\n"), tryCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   722
44f437012c90 201041_01
hgs
parents:
diff changeset
   723
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   724
44f437012c90 201041_01
hgs
parents:
diff changeset
   725
void CenrepSwiOOMTest::InstallTxtPmaL(TBool aIsSetup)
44f437012c90 201041_01
hgs
parents:
diff changeset
   726
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   727
    if(aIsSetup)
44f437012c90 201041_01
hgs
parents:
diff changeset
   728
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   729
        RFs fs;
44f437012c90 201041_01
hgs
parents:
diff changeset
   730
        User::LeaveIfError(fs.Connect());
44f437012c90 201041_01
hgs
parents:
diff changeset
   731
        CleanupClosePushL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   732
        CFileMan* fm = CFileMan::NewL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   733
        CleanupStack::PushL(fm);
44f437012c90 201041_01
hgs
parents:
diff changeset
   734
44f437012c90 201041_01
hgs
parents:
diff changeset
   735
        // Copy a txt PMA keyspace into install dir & Reset read-only bit
44f437012c90 201041_01
hgs
parents:
diff changeset
   736
        //  This keyspace also exists in ROM as PMA keyspace
44f437012c90 201041_01
hgs
parents:
diff changeset
   737
        User::LeaveIfError(fm->Copy(KInstallPMATxtFileSrc, KInstallPMATxtFileTgt));
44f437012c90 201041_01
hgs
parents:
diff changeset
   738
        User::LeaveIfError(fm->Attribs(KInstallPMATxtFileTgt,0,KEntryAttReadOnly,TTime(0)));
44f437012c90 201041_01
hgs
parents:
diff changeset
   739
                
44f437012c90 201041_01
hgs
parents:
diff changeset
   740
        CleanupStack::PopAndDestroy(2); // fs and fm
44f437012c90 201041_01
hgs
parents:
diff changeset
   741
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   742
    else
44f437012c90 201041_01
hgs
parents:
diff changeset
   743
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   744
        iSwiWatcher->HandleSWIEventL(ESASwisInstall | ESASwisStatusSuccess);
44f437012c90 201041_01
hgs
parents:
diff changeset
   745
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   746
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   747
44f437012c90 201041_01
hgs
parents:
diff changeset
   748
void CenrepSwiOOMTest::InstallCrePmaL(TBool aIsSetup)
44f437012c90 201041_01
hgs
parents:
diff changeset
   749
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   750
    if(aIsSetup)
44f437012c90 201041_01
hgs
parents:
diff changeset
   751
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   752
        RFs fs;
44f437012c90 201041_01
hgs
parents:
diff changeset
   753
        User::LeaveIfError(fs.Connect());
44f437012c90 201041_01
hgs
parents:
diff changeset
   754
        CleanupClosePushL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   755
        CFileMan* fm = CFileMan::NewL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   756
        CleanupStack::PushL(fm);
44f437012c90 201041_01
hgs
parents:
diff changeset
   757
44f437012c90 201041_01
hgs
parents:
diff changeset
   758
        // Copy a cre PMA keyspace into install dir & Reset read-only bit
44f437012c90 201041_01
hgs
parents:
diff changeset
   759
        User::LeaveIfError(fm->Copy(KInstallPMACreFileSrc, KInstallPMACreFileTgt));
44f437012c90 201041_01
hgs
parents:
diff changeset
   760
        User::LeaveIfError(fm->Attribs(KInstallPMACreFileTgt,0,KEntryAttReadOnly,TTime(0)));
44f437012c90 201041_01
hgs
parents:
diff changeset
   761
44f437012c90 201041_01
hgs
parents:
diff changeset
   762
        CleanupStack::PopAndDestroy(2); // fs and fm
44f437012c90 201041_01
hgs
parents:
diff changeset
   763
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   764
    else
44f437012c90 201041_01
hgs
parents:
diff changeset
   765
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   766
        iSwiWatcher->HandleSWIEventL(ESASwisInstall | ESASwisStatusSuccess);
44f437012c90 201041_01
hgs
parents:
diff changeset
   767
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   768
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   769
44f437012c90 201041_01
hgs
parents:
diff changeset
   770
LOCAL_C void StartupInstallL(TBool aIsSetup)
44f437012c90 201041_01
hgs
parents:
diff changeset
   771
{
44f437012c90 201041_01
hgs
parents:
diff changeset
   772
    if(aIsSetup)
44f437012c90 201041_01
hgs
parents:
diff changeset
   773
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   774
        // Set up files for test
44f437012c90 201041_01
hgs
parents:
diff changeset
   775
        RFs fs;
44f437012c90 201041_01
hgs
parents:
diff changeset
   776
        User::LeaveIfError(fs.Connect());
44f437012c90 201041_01
hgs
parents:
diff changeset
   777
        CleanupClosePushL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   778
        CFileMan* fm = CFileMan::NewL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   779
        CleanupStack::PushL(fm);
44f437012c90 201041_01
hgs
parents:
diff changeset
   780
44f437012c90 201041_01
hgs
parents:
diff changeset
   781
        // Clean out files
44f437012c90 201041_01
hgs
parents:
diff changeset
   782
        TInt err=fs.Delete(KInstallDirFile);
44f437012c90 201041_01
hgs
parents:
diff changeset
   783
        if((err!=KErrNone)&&(err!=KErrNotFound))
44f437012c90 201041_01
hgs
parents:
diff changeset
   784
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   785
            User::Leave(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   786
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   787
44f437012c90 201041_01
hgs
parents:
diff changeset
   788
        // Cause directory listing with no files to be written
44f437012c90 201041_01
hgs
parents:
diff changeset
   789
        CCentRepSWIWatcher* swiWatcher = CCentRepSWIWatcher::NewL(TServerResources::iFs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   790
        delete swiWatcher;
44f437012c90 201041_01
hgs
parents:
diff changeset
   791
44f437012c90 201041_01
hgs
parents:
diff changeset
   792
        // Copy a txt PMA keyspace into install dir & Reset read-only bit
44f437012c90 201041_01
hgs
parents:
diff changeset
   793
        User::LeaveIfError(fm->Copy(KInstallPMATxtFileSrc, KInstallPMATxtFileTgt));
44f437012c90 201041_01
hgs
parents:
diff changeset
   794
        User::LeaveIfError(fm->Attribs(KInstallPMATxtFileTgt,0,KEntryAttReadOnly,TTime(0)));
44f437012c90 201041_01
hgs
parents:
diff changeset
   795
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   796
        // Copy a cre PMA keyspace into install dir & Reset read-only bit
44f437012c90 201041_01
hgs
parents:
diff changeset
   797
        User::LeaveIfError(fm->Copy(KInstallPMACreFileSrc, KInstallPMACreFileTgt));
44f437012c90 201041_01
hgs
parents:
diff changeset
   798
        User::LeaveIfError(fm->Attribs(KInstallPMACreFileTgt,0,KEntryAttReadOnly,TTime(0)));
44f437012c90 201041_01
hgs
parents:
diff changeset
   799
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   800
44f437012c90 201041_01
hgs
parents:
diff changeset
   801
        CleanupStack::PopAndDestroy(2); // fs and fm
44f437012c90 201041_01
hgs
parents:
diff changeset
   802
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   803
    else
44f437012c90 201041_01
hgs
parents:
diff changeset
   804
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   805
        CCentRepSWIWatcher* swiWatcher = CCentRepSWIWatcher::NewL(TServerResources::iFs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   806
        delete swiWatcher;
44f437012c90 201041_01
hgs
parents:
diff changeset
   807
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   808
}
44f437012c90 201041_01
hgs
parents:
diff changeset
   809
44f437012c90 201041_01
hgs
parents:
diff changeset
   810
// Type definition for pointer to function
44f437012c90 201041_01
hgs
parents:
diff changeset
   811
// Used for functions that can't use CenrepSrvOOMTest::ConstructL
44f437012c90 201041_01
hgs
parents:
diff changeset
   812
typedef void (*FuncPtrL) (TBool);
44f437012c90 201041_01
hgs
parents:
diff changeset
   813
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
   814
Wrapper function to call all OOM test functions
44f437012c90 201041_01
hgs
parents:
diff changeset
   815
@param        testFuncL pointer to OOM test function
44f437012c90 201041_01
hgs
parents:
diff changeset
   816
@param        aTestDesc test function name
44f437012c90 201041_01
hgs
parents:
diff changeset
   817
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
   818
LOCAL_C void DoOOMNoServReposL( FuncPtrL atestFuncL, const TDesC& aTestDesc, TBool aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   819
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   820
    TheTest.Next(aTestDesc);
44f437012c90 201041_01
hgs
parents:
diff changeset
   821
44f437012c90 201041_01
hgs
parents:
diff changeset
   822
    TInt err;
44f437012c90 201041_01
hgs
parents:
diff changeset
   823
    TInt tryCount = 0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   824
    do
44f437012c90 201041_01
hgs
parents:
diff changeset
   825
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   826
        __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
   827
44f437012c90 201041_01
hgs
parents:
diff changeset
   828
        //Initializing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   829
        TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   830
        CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   831
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   832
        // find out the number of open handles
44f437012c90 201041_01
hgs
parents:
diff changeset
   833
        TInt startProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   834
        TInt startThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   835
        RThread().HandleCount(startProcessHandleCount, startThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   836
44f437012c90 201041_01
hgs
parents:
diff changeset
   837
        (*atestFuncL)(ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   838
44f437012c90 201041_01
hgs
parents:
diff changeset
   839
        if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   840
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   841
            __UHEAP_SETBURSTFAIL(RAllocator::EBurstFailNext, ++tryCount, KBurstRate);
44f437012c90 201041_01
hgs
parents:
diff changeset
   842
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   843
44f437012c90 201041_01
hgs
parents:
diff changeset
   844
        TRAP(err, (*atestFuncL)(EFalse));
44f437012c90 201041_01
hgs
parents:
diff changeset
   845
        if(err!=KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   846
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   847
            TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   848
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   849
44f437012c90 201041_01
hgs
parents:
diff changeset
   850
        if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   851
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   852
            __UHEAP_RESET;
44f437012c90 201041_01
hgs
parents:
diff changeset
   853
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   854
44f437012c90 201041_01
hgs
parents:
diff changeset
   855
        // check that no handles have leaked
44f437012c90 201041_01
hgs
parents:
diff changeset
   856
        TInt endProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   857
        TInt endThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   858
        RThread().HandleCount(endProcessHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   859
        TEST2(startProcessHandleCount, endProcessHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   860
        TEST2(startThreadHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   861
44f437012c90 201041_01
hgs
parents:
diff changeset
   862
        //Freeing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   863
        CleanupStack::Pop(); //CloseTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
   864
        TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   865
44f437012c90 201041_01
hgs
parents:
diff changeset
   866
        __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
   867
        } while(err == KErrNoMemory);
44f437012c90 201041_01
hgs
parents:
diff changeset
   868
44f437012c90 201041_01
hgs
parents:
diff changeset
   869
     TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   870
     if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   871
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   872
        TheTest.Printf(_L("- server succeeded at heap failure rate of %i\n"), tryCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   873
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
   874
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   875
44f437012c90 201041_01
hgs
parents:
diff changeset
   876
// Type definition for pointer to member function.
44f437012c90 201041_01
hgs
parents:
diff changeset
   877
// Used in calling the CRegistryDataTest member function for testing.
44f437012c90 201041_01
hgs
parents:
diff changeset
   878
typedef void (CenrepSrvOOMTest::*ClassFuncPtrL) (void);
44f437012c90 201041_01
hgs
parents:
diff changeset
   879
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
   880
Wrapper function to call all OOM test functions
44f437012c90 201041_01
hgs
parents:
diff changeset
   881
@param        testFuncL pointer to OOM test function
44f437012c90 201041_01
hgs
parents:
diff changeset
   882
@param        aTestDesc test function name
44f437012c90 201041_01
hgs
parents:
diff changeset
   883
@param        aOOMMode to enable/disable the OOM environment
44f437012c90 201041_01
hgs
parents:
diff changeset
   884
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
   885
LOCAL_C void DoOOMTestL(ClassFuncPtrL testFuncL, const TDesC& aTestDesc,TBool aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   886
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   887
    TheTest.Next(aTestDesc);
44f437012c90 201041_01
hgs
parents:
diff changeset
   888
44f437012c90 201041_01
hgs
parents:
diff changeset
   889
    TInt err=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   890
    TInt tryCount = 0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   891
    do
44f437012c90 201041_01
hgs
parents:
diff changeset
   892
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   893
        __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
   894
        //Clear any files in the persist directory
44f437012c90 201041_01
hgs
parents:
diff changeset
   895
        CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   896
                
44f437012c90 201041_01
hgs
parents:
diff changeset
   897
        //Initializing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   898
        TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   899
        CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   900
44f437012c90 201041_01
hgs
parents:
diff changeset
   901
        CenrepSrvOOMTest* theTest=CenrepSrvOOMTest::NewL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   902
        CleanupStack::PushL(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
   903
44f437012c90 201041_01
hgs
parents:
diff changeset
   904
        TInt startProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   905
        TInt startThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   906
        RThread().HandleCount(startProcessHandleCount, startThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   907
44f437012c90 201041_01
hgs
parents:
diff changeset
   908
        if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   909
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   910
            __UHEAP_SETBURSTFAIL(RAllocator::EBurstFailNext, ++tryCount, KBurstRate);
44f437012c90 201041_01
hgs
parents:
diff changeset
   911
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   912
        TRAP(err, (theTest->*testFuncL)());
44f437012c90 201041_01
hgs
parents:
diff changeset
   913
44f437012c90 201041_01
hgs
parents:
diff changeset
   914
        if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   915
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   916
            __UHEAP_RESET;
44f437012c90 201041_01
hgs
parents:
diff changeset
   917
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   918
44f437012c90 201041_01
hgs
parents:
diff changeset
   919
        if(err!=KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   920
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   921
            TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   922
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   923
44f437012c90 201041_01
hgs
parents:
diff changeset
   924
        CleanupStack::PopAndDestroy(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
   925
44f437012c90 201041_01
hgs
parents:
diff changeset
   926
        // check that no handles have leaked
44f437012c90 201041_01
hgs
parents:
diff changeset
   927
        TInt endProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   928
        TInt endThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   929
        RThread().HandleCount(endProcessHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   930
44f437012c90 201041_01
hgs
parents:
diff changeset
   931
        TEST2(startProcessHandleCount, endProcessHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   932
        TEST2(startThreadHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   933
44f437012c90 201041_01
hgs
parents:
diff changeset
   934
        //Freeing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   935
        CleanupStack::Pop(); //CleanupTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
   936
        TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   937
        __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
   938
        } while(err == KErrNoMemory);
44f437012c90 201041_01
hgs
parents:
diff changeset
   939
44f437012c90 201041_01
hgs
parents:
diff changeset
   940
     TESTKErrNone(err);
44f437012c90 201041_01
hgs
parents:
diff changeset
   941
     if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   942
         {
44f437012c90 201041_01
hgs
parents:
diff changeset
   943
         TheTest.Printf(_L("- server succeeded at heap failure rate of %i\n"), tryCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   944
         }
44f437012c90 201041_01
hgs
parents:
diff changeset
   945
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   946
44f437012c90 201041_01
hgs
parents:
diff changeset
   947
// Type definition for pointer to member function.
44f437012c90 201041_01
hgs
parents:
diff changeset
   948
// Used in calling the CRegistryDataTest member function for testing.
44f437012c90 201041_01
hgs
parents:
diff changeset
   949
typedef void (CenrepSwiOOMTest::*ClassSwiFuncPtrL) (TBool);
44f437012c90 201041_01
hgs
parents:
diff changeset
   950
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
   951
Wrapper function to call all OOM test functions
44f437012c90 201041_01
hgs
parents:
diff changeset
   952
@param        testFuncL pointer to OOM test function
44f437012c90 201041_01
hgs
parents:
diff changeset
   953
@param        aTestDesc test function name
44f437012c90 201041_01
hgs
parents:
diff changeset
   954
@param        aOOMMode to enable/disable the OOM environment
44f437012c90 201041_01
hgs
parents:
diff changeset
   955
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
   956
LOCAL_C void DoOOMSwiTestL(ClassSwiFuncPtrL aTestFuncL, const TDesC& aTestDesc,TBool aOOMMode, TInt aExpectedError)
44f437012c90 201041_01
hgs
parents:
diff changeset
   957
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   958
    TheTest.Next(aTestDesc);
44f437012c90 201041_01
hgs
parents:
diff changeset
   959
44f437012c90 201041_01
hgs
parents:
diff changeset
   960
    TInt err=KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   961
    TInt tryCount = 0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   962
    do
44f437012c90 201041_01
hgs
parents:
diff changeset
   963
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
   964
        __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
   965
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   966
        CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   967
        //Initializing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
   968
        TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   969
        CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   970
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   971
        TInt startProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   972
        TInt startThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
   973
        RThread().HandleCount(startProcessHandleCount, startThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   974
44f437012c90 201041_01
hgs
parents:
diff changeset
   975
        CenrepSwiOOMTest* theTest=CenrepSwiOOMTest::NewL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   976
        CleanupStack::PushL(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
   977
44f437012c90 201041_01
hgs
parents:
diff changeset
   978
        // Set up test
44f437012c90 201041_01
hgs
parents:
diff changeset
   979
        (theTest->*aTestFuncL)(ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   980
44f437012c90 201041_01
hgs
parents:
diff changeset
   981
        if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   982
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   983
            __UHEAP_SETBURSTFAIL(RAllocator::EBurstFailNext, ++tryCount, KBurstRate);
44f437012c90 201041_01
hgs
parents:
diff changeset
   984
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   985
        RDebug::Print(_L("tryCount = %d"),tryCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
   986
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   987
        TRAP(err, (theTest->*aTestFuncL)(EFalse));
44f437012c90 201041_01
hgs
parents:
diff changeset
   988
44f437012c90 201041_01
hgs
parents:
diff changeset
   989
        if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
   990
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   991
            __UHEAP_RESET;
44f437012c90 201041_01
hgs
parents:
diff changeset
   992
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   993
44f437012c90 201041_01
hgs
parents:
diff changeset
   994
        if(err!=KErrNoMemory)
44f437012c90 201041_01
hgs
parents:
diff changeset
   995
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
   996
            TEST2(err, aExpectedError);
44f437012c90 201041_01
hgs
parents:
diff changeset
   997
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
   998
44f437012c90 201041_01
hgs
parents:
diff changeset
   999
        CleanupStack::PopAndDestroy(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1000
44f437012c90 201041_01
hgs
parents:
diff changeset
  1001
        // check that no handles have leaked
44f437012c90 201041_01
hgs
parents:
diff changeset
  1002
        TInt endProcessHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1003
        TInt endThreadHandleCount;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1004
        RThread().HandleCount(endProcessHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1005
44f437012c90 201041_01
hgs
parents:
diff changeset
  1006
        TEST2(startProcessHandleCount, endProcessHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1007
        TEST2(startThreadHandleCount, endThreadHandleCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1008
44f437012c90 201041_01
hgs
parents:
diff changeset
  1009
        //Freeing the server resources
44f437012c90 201041_01
hgs
parents:
diff changeset
  1010
        CleanupStack::Pop(); //CleanupTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
  1011
        TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1012
        __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1013
        } while(err == KErrNoMemory);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1014
44f437012c90 201041_01
hgs
parents:
diff changeset
  1015
    TEST2(err, aExpectedError);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1016
     if(aOOMMode)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1017
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1018
        TheTest.Printf(_L("- server succeeded at heap failure rate of %i\n"), tryCount);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1019
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1020
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1021
44f437012c90 201041_01
hgs
parents:
diff changeset
  1022
#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS
44f437012c90 201041_01
hgs
parents:
diff changeset
  1023
void CenrepSrvOOMTest::DoHeapRepositoryContentCheckL()
44f437012c90 201041_01
hgs
parents:
diff changeset
  1024
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1025
    CServerRepository* srv=iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1026
    //check setting and its meta
44f437012c90 201041_01
hgs
parents:
diff changeset
  1027
    TServerSetting* setting=NULL;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1028
44f437012c90 201041_01
hgs
parents:
diff changeset
  1029
    setting=srv->GetSetting(1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1030
    TESTHEX2(setting->iKey,1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1031
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1032
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
  1033
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1034
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1035
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1036
44f437012c90 201041_01
hgs
parents:
diff changeset
  1037
    setting=srv->GetSetting(2);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1038
    TESTHEX2(setting->iKey,2);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1039
    TESTHEX2(setting->iMeta,0xA0000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1040
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
  1041
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1042
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1043
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1044
44f437012c90 201041_01
hgs
parents:
diff changeset
  1045
    setting=srv->GetSetting(3);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1046
    TESTHEX2(setting->iKey,3);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1047
    TESTHEX2(setting->iMeta,0x800000FF);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1048
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
  1049
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1050
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1051
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1052
44f437012c90 201041_01
hgs
parents:
diff changeset
  1053
    setting=srv->GetSetting(4);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1054
    TESTHEX2(setting->iKey,4);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1055
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1056
    TESTHEX2(setting->iAccessPolicy->LowKey(),4);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1057
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1058
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1059
44f437012c90 201041_01
hgs
parents:
diff changeset
  1060
    setting=srv->GetSetting(5);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1061
    TESTHEX2(setting->iKey,5);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1062
    TESTHEX2(setting->iMeta,0xC0000063);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1063
    //points to global default policy here
44f437012c90 201041_01
hgs
parents:
diff changeset
  1064
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1065
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1066
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1067
44f437012c90 201041_01
hgs
parents:
diff changeset
  1068
    setting=srv->GetSetting(6);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1069
    TESTHEX2(setting->iKey,6);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1070
    TESTHEX2(setting->iMeta,0x90000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1071
    TESTHEX2(setting->iAccessPolicy->LowKey(),6);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1072
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1073
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1074
44f437012c90 201041_01
hgs
parents:
diff changeset
  1075
    setting=srv->GetSetting(7);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1076
    TESTHEX2(setting->iKey,7);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1077
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1078
    TESTHEX2(setting->iAccessPolicy->LowKey(),7);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1079
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1080
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1081
44f437012c90 201041_01
hgs
parents:
diff changeset
  1082
    setting=srv->GetSetting(9);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1083
    TESTHEX2(setting->iKey,9);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1084
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1085
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1086
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1087
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1088
44f437012c90 201041_01
hgs
parents:
diff changeset
  1089
    setting=srv->GetSetting(10);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1090
    TESTHEX2(setting->iKey,10);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1091
    TESTHEX2(setting->iMeta,0x80000010);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1092
    TESTHEX2(setting->iAccessPolicy->LowKey(),10);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1093
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1094
    TESTHEX2(setting->iAccessPolicy->KeyMask(),0);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1095
44f437012c90 201041_01
hgs
parents:
diff changeset
  1096
    setting=srv->GetSetting(300);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1097
    TESTHEX2(setting->iKey,300);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1098
    TESTHEX2(setting->iMeta,0x900003E7);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1099
    TESTHEX2(setting->iAccessPolicy->LowKey(),KUnspecifiedKey);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1100
    TESTHEX2(setting->iAccessPolicy->HighKey(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1101
    TESTHEX2(setting->iAccessPolicy->KeyMask(),1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1102
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1103
44f437012c90 201041_01
hgs
parents:
diff changeset
  1104
LOCAL_C void DoAdditionalCheckingL(TUid aReposUid)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1105
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1106
    TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1107
    CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
  1108
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1109
    KCurrentTestUid = aReposUid;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1110
    CenrepSrvOOMTest* test=CenrepSrvOOMTest::NewL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1111
    CleanupStack::PushL(test);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1112
    test->DoHeapRepositoryContentCheckL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1113
44f437012c90 201041_01
hgs
parents:
diff changeset
  1114
    CleanupStack::PopAndDestroy();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1115
    CleanupStack::Pop(); //CloseTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
  1116
44f437012c90 201041_01
hgs
parents:
diff changeset
  1117
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1118
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1119
44f437012c90 201041_01
hgs
parents:
diff changeset
  1120
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
  1121
@SYMTestCaseID PDS-CENTRALREPOSITORY-UT-4126
44f437012c90 201041_01
hgs
parents:
diff changeset
  1122
@SYMTestCaseDesc Verifying that CRE generated will have the latest CRE version which is currently 3
44f437012c90 201041_01
hgs
parents:
diff changeset
  1123
@SYMTestPriority High
44f437012c90 201041_01
hgs
parents:
diff changeset
  1124
@SYMTestActions  Validating that CRE files generated with post REQ42876 code will always contain at least version 3.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1125
                 The unit test will load a txt repository and then modify some settings so that it gets persisted
44f437012c90 201041_01
hgs
parents:
diff changeset
  1126
                 in the persists directory. The test then read the cre files to verify that the version persisted
44f437012c90 201041_01
hgs
parents:
diff changeset
  1127
                 is the latest which is 3.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1128
@SYMTestExpectedResults The correct file version is returned.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1129
@SYMREQ REQ42876
44f437012c90 201041_01
hgs
parents:
diff changeset
  1130
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
  1131
LOCAL_C void DoPersistedVersionCheckingL()
44f437012c90 201041_01
hgs
parents:
diff changeset
  1132
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1133
    TheTest.Next(_L(" @SYMTestCaseID:PDS-CENTRALREPOSITORY-UT-4126 Verifying CRE generated will always be version 3 "));
44f437012c90 201041_01
hgs
parents:
diff changeset
  1134
    TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1135
    CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
  1136
44f437012c90 201041_01
hgs
parents:
diff changeset
  1137
    const TUid KTestUid={0xF1000702};
44f437012c90 201041_01
hgs
parents:
diff changeset
  1138
    KCurrentTestUid=KTestUid;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1139
44f437012c90 201041_01
hgs
parents:
diff changeset
  1140
    CenrepSrvOOMTest* test=CenrepSrvOOMTest::NewL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1141
    CleanupStack::PushL(test);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1142
44f437012c90 201041_01
hgs
parents:
diff changeset
  1143
    //persist immediately
44f437012c90 201041_01
hgs
parents:
diff changeset
  1144
    test->iServerRepo->CommitChangesL(EPma);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1145
44f437012c90 201041_01
hgs
parents:
diff changeset
  1146
    //now check the version of the CRE file
44f437012c90 201041_01
hgs
parents:
diff changeset
  1147
    CHeapRepository* heap=CHeapRepository::NewL(KTestUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1148
    CleanupStack::PushL(heap);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1149
    TUint8 creVersion;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1150
    heap->CreateRepositoryFromCreFileL(TServerResources::iFs,_L("c:\\private\\10202be9\\persists\\protected\\f1000702.cre"),creVersion);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1151
#ifdef SYMBIAN_INCLUDE_APP_CENTRIC
44f437012c90 201041_01
hgs
parents:
diff changeset
  1152
    TEST2(creVersion,KPersistFormatSupportsPma);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1153
#else    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1154
    TEST2(creVersion,KPersistFormatSupportsIndMetaIndicator);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1155
#endif
44f437012c90 201041_01
hgs
parents:
diff changeset
  1156
    CleanupStack::PopAndDestroy(2,test);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1157
    CleanupStack::Pop(); //CloseTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
  1158
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1159
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1160
44f437012c90 201041_01
hgs
parents:
diff changeset
  1161
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
  1162
@SYMTestCaseID PDS-CENTRALREPOSITORY-UT-4127
44f437012c90 201041_01
hgs
parents:
diff changeset
  1163
@SYMTestCaseDesc Server side OOM loading of a multiple ROFS PMA repository files
44f437012c90 201041_01
hgs
parents:
diff changeset
  1164
@SYMTestPriority High
44f437012c90 201041_01
hgs
parents:
diff changeset
  1165
@SYMTestActions  - Create the server class CServerRepository and use it to load the multi ROFS PMA keyspace.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1166
                 - 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
  1167
                 - Test will also verify the resulting merged settings which includes checking
44f437012c90 201041_01
hgs
parents:
diff changeset
  1168
                   individual metadata bits and security policy bits
44f437012c90 201041_01
hgs
parents:
diff changeset
  1169
                 - Test will also be repeated for opening PMA keyspace with non-PMA keyspace in different ROFS layers.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1170
@SYMTestExpectedResults - Server loading of the multi rofs keyspace should not fail and leak memory under OOM condition.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1171
@SYMREQ REQ42876
44f437012c90 201041_01
hgs
parents:
diff changeset
  1172
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
  1173
LOCAL_C void DoOOMMultiRofsTestL()
44f437012c90 201041_01
hgs
parents:
diff changeset
  1174
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1175
    TheTest.Next(_L(" @SYMTestCaseID:PDS-CENTRALREPOSITORY-UT-4127 Centrep Server PMA MultiROFS OOM Test "));
44f437012c90 201041_01
hgs
parents:
diff changeset
  1176
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1177
    const TUid KMultiRofsRepositoryUid0={0xF1000900};
44f437012c90 201041_01
hgs
parents:
diff changeset
  1178
    const TUid KMultiRofsRepositoryUid1={0xF1000901};
44f437012c90 201041_01
hgs
parents:
diff changeset
  1179
    const TUid KMultiRofsRepositoryUid2={0xF1000902};
44f437012c90 201041_01
hgs
parents:
diff changeset
  1180
    const TUid KMultiRofsRepositoryUid3={0xF1000903};
44f437012c90 201041_01
hgs
parents:
diff changeset
  1181
    const TUid KMultiRofsRepositoryUid4={0xF1000904};
44f437012c90 201041_01
hgs
parents:
diff changeset
  1182
    const TUid KMultiRofsRepositoryUid5={0xF1000905};//TXT1(core) - TXT0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1183
    const TUid KMultiRofsRepositoryUid6={0xF1000906};//TXT0(core) - TXT1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1184
    const TUid KMultiRofsRepositoryUid7={0xF1000907};//CRE1(core) - CRE0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1185
    const TUid KMultiRofsRepositoryUid8={0xF1000908};//CRE0(core) - CRE1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1186
    const TUid KMultiRofsRepositoryUid9={0xF1000909};//CRE1(core) - TXT0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1187
    const TUid KMultiRofsRepositoryUid10={0xF100090A};//CRE0(core) - TXT1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1188
    const TUid KMultiRofsRepositoryUid11={0xF100090B};//TXT1(core) - CRE0(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1189
    const TUid KMultiRofsRepositoryUid12={0xF100090C};//TXT0(core) - CRE1(rofs1)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1190
    const TUid KMultiRofsRepositoryUid13={0xF100090D};//TXT1(core) - CRE1(rofs1) - TXT1(rofs2) - CRE0(rofs3)
44f437012c90 201041_01
hgs
parents:
diff changeset
  1191
    // Note: TXT1 means the file is PMA repository with .txt format
44f437012c90 201041_01
hgs
parents:
diff changeset
  1192
    //       TXT0 means the file is non-PMA repository with .txt format
44f437012c90 201041_01
hgs
parents:
diff changeset
  1193
    //       CRE1 means the file is PMA repository with .cre format
44f437012c90 201041_01
hgs
parents:
diff changeset
  1194
    //       CRE0 means the file is non-PMA repository with .cre format
44f437012c90 201041_01
hgs
parents:
diff changeset
  1195
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1196
    //Testing the OOM of multi rofs processing
44f437012c90 201041_01
hgs
parents:
diff changeset
  1197
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid0, _L("Open Close OOM Multi ROFS Test 0"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1198
    DoAdditionalCheckingL(KMultiRofsRepositoryUid0);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1199
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid1, _L("Open Close OOM Multi ROFS Test 1"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1200
    DoAdditionalCheckingL(KMultiRofsRepositoryUid1);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1201
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid2, _L("Open Close OOM Multi ROFS Test 2"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1202
    DoAdditionalCheckingL(KMultiRofsRepositoryUid2);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1203
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid3, _L("Open Close OOM Multi ROFS Test 3"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1204
    DoAdditionalCheckingL(KMultiRofsRepositoryUid3);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1205
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid4, _L("Open Close OOM Multi ROFS Test 4"),KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1206
    DoAdditionalCheckingL(KMultiRofsRepositoryUid4);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1207
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid5, _L("Open Close OOM Multi ROFS Test 5"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1208
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid6, _L("Open Close OOM Multi ROFS Test 6"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1209
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid7, _L("Open Close OOM Multi ROFS Test 7"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1210
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid8, _L("Open Close OOM Multi ROFS Test 8"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1211
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid9, _L("Open Close OOM Multi ROFS Test 9"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1212
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid10, _L("Open Close OOM Multi ROFS Test 10"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1213
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid11, _L("Open Close OOM Multi ROFS Test 11"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1214
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid12, _L("Open Close OOM Multi ROFS Test 12"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1215
    DoMultiRofsReposTestL(KMultiRofsRepositoryUid13, _L("Open Close OOM Multi ROFS Test 13"),KErrCorrupt);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1216
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1217
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1218
#endif
44f437012c90 201041_01
hgs
parents:
diff changeset
  1219
44f437012c90 201041_01
hgs
parents:
diff changeset
  1220
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
  1221
@SYMTestCaseID PDS-CENTRALREPOSITORY-UT-4125
44f437012c90 201041_01
hgs
parents:
diff changeset
  1222
@SYMTestCaseDesc Server side OOM test on Centrep functionalities
44f437012c90 201041_01
hgs
parents:
diff changeset
  1223
@SYMTestPriority High
44f437012c90 201041_01
hgs
parents:
diff changeset
  1224
@SYMTestActions  - Call Get, Set, Create, Delete, Move, Find, Notify, Reset on a repository.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1225
                 - Simulate SWI install and upgrade install on a repository.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1226
                 - Do the above steps on again under OOM condition.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1227
                 - Open and Close repository under OOM condition.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1228
                 - Verify the resulting merged settings which includes checking
44f437012c90 201041_01
hgs
parents:
diff changeset
  1229
                   individual metadata bits and security policy bits
44f437012c90 201041_01
hgs
parents:
diff changeset
  1230
@SYMTestExpectedResults - Server loading of the multi rofs keyspace should not fail and leak memory under OOM condition.
44f437012c90 201041_01
hgs
parents:
diff changeset
  1231
@SYMREQ REQ42876
44f437012c90 201041_01
hgs
parents:
diff changeset
  1232
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
  1233
LOCAL_C void DoOOMTestsL()
44f437012c90 201041_01
hgs
parents:
diff changeset
  1234
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1235
    TheTest.Next(_L(" @SYMTestCaseID:PDS-CENTRALREPOSITORY-UT-4125 Starting CENREPSRV OOM Test "));
44f437012c90 201041_01
hgs
parents:
diff changeset
  1236
    RFs fs;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1237
    User::LeaveIfError(fs.Connect());
44f437012c90 201041_01
hgs
parents:
diff changeset
  1238
    CleanupClosePushL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1239
    CFileMan* fm = CFileMan::NewL(fs);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1240
    CleanupStack::PushL(fm);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1241
44f437012c90 201041_01
hgs
parents:
diff changeset
  1242
    //Clear any files in the persist directory
44f437012c90 201041_01
hgs
parents:
diff changeset
  1243
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1244
44f437012c90 201041_01
hgs
parents:
diff changeset
  1245
    //First Testuid=KTestRepositoryUid
44f437012c90 201041_01
hgs
parents:
diff changeset
  1246
    KCurrentTestUid=KTestRepositoryUid;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1247
44f437012c90 201041_01
hgs
parents:
diff changeset
  1248
    DoOOMTestL(&CenrepSrvOOMTest::GetL,_L("Get Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1249
    DoOOMTestL(&CenrepSrvOOMTest::FindL,_L("FindL Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1250
    DoOOMTestL(&CenrepSrvOOMTest::NotifyL,_L("NotifyL Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1251
    DoOOMTestL(&CenrepSrvOOMTest::ResetL,_L("ResetL Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1252
    DoOOMTestL(&CenrepSrvOOMTest::SetL,_L("SetL Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1253
    DoOOMTestL(&CenrepSrvOOMTest::CreateL,_L("CreateL Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1254
    DoOOMTestL(&CenrepSrvOOMTest::DeleteL,_L("DeleteL Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1255
    DoOOMTestL(&CenrepSrvOOMTest::MoveL,_L("MoveL Basic Test"),EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1256
44f437012c90 201041_01
hgs
parents:
diff changeset
  1257
    // Simulate response to SWI rom-upgrade and downgrade events
44f437012c90 201041_01
hgs
parents:
diff changeset
  1258
    DoOOMSwiTestL(&CenrepSwiOOMTest::InstallTxtPmaL,_L("SwiUpgradeROMRev1L Basic Test"),EFalse, KErrNotSupported);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1259
44f437012c90 201041_01
hgs
parents:
diff changeset
  1260
    // Simulate response to SWI new rep install/uninstall event events
44f437012c90 201041_01
hgs
parents:
diff changeset
  1261
    DoOOMSwiTestL(&CenrepSwiOOMTest::InstallCrePmaL,_L("SwiInstallL Basic Test"),EFalse, KErrNotSupported);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1262
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1263
    // Simulate SWI events before server startup
44f437012c90 201041_01
hgs
parents:
diff changeset
  1264
    DoOOMNoServReposL(&StartupInstallL, _L("Startup Upgrade Basic Test"), EFalse);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1265
44f437012c90 201041_01
hgs
parents:
diff changeset
  1266
    //OOM Test aOOMMode=ETrue
44f437012c90 201041_01
hgs
parents:
diff changeset
  1267
    DoOOMNoServReposL(&OpenCloseL, _L("Open Close OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1268
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1269
    //Clear any files in the persist directory
44f437012c90 201041_01
hgs
parents:
diff changeset
  1270
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1271
    TInt r = KillProcess(KCentralRepositoryServerName);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1272
    TEST2(r,KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1273
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1274
    DoOOMTestL(&CenrepSrvOOMTest::GetL,_L("Get OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1275
    DoOOMTestL(&CenrepSrvOOMTest::FindL,_L("FindL OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1276
    DoOOMTestL(&CenrepSrvOOMTest::NotifyL,_L("NotifyL OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1277
    DoOOMTestL(&CenrepSrvOOMTest::ResetL,_L("ResetL OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1278
    DoOOMTestL(&CenrepSrvOOMTest::SetL,_L("SetL OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1279
    DoOOMTestL(&CenrepSrvOOMTest::CreateL,_L("CreateL OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1280
    DoOOMTestL(&CenrepSrvOOMTest::DeleteL,_L("DeleteL OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1281
    DoOOMTestL(&CenrepSrvOOMTest::MoveL,_L("MoveL OOM Test"),ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1282
44f437012c90 201041_01
hgs
parents:
diff changeset
  1283
    //Clear any files in the persist directory
44f437012c90 201041_01
hgs
parents:
diff changeset
  1284
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1285
44f437012c90 201041_01
hgs
parents:
diff changeset
  1286
    DoOOMSwiTestL(&CenrepSwiOOMTest::InstallTxtPmaL,_L("SwiUpgradeROMRev1L OOM Test"),ETrue, KErrNotSupported);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1287
44f437012c90 201041_01
hgs
parents:
diff changeset
  1288
    DoOOMSwiTestL(&CenrepSwiOOMTest::InstallCrePmaL,_L("SwiInstallL OOM Test"),ETrue, KErrNotSupported);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1289
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1290
    DoOOMNoServReposL(&StartupInstallL, _L("Startup Upgrade OOM Test"), ETrue);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1291
44f437012c90 201041_01
hgs
parents:
diff changeset
  1292
    DoPersistedVersionCheckingL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1293
#ifdef SYMBIAN_CENTREP_SUPPORT_MULTIROFS
44f437012c90 201041_01
hgs
parents:
diff changeset
  1294
    DoOOMMultiRofsTestL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1295
#endif
44f437012c90 201041_01
hgs
parents:
diff changeset
  1296
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1297
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1298
44f437012c90 201041_01
hgs
parents:
diff changeset
  1299
    CleanupStack::PopAndDestroy(2);    // fs and fm
44f437012c90 201041_01
hgs
parents:
diff changeset
  1300
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1301
44f437012c90 201041_01
hgs
parents:
diff changeset
  1302
LOCAL_C void MainL()
44f437012c90 201041_01
hgs
parents:
diff changeset
  1303
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1304
    CActiveScheduler* scheduler = new(ELeave)CActiveScheduler;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1305
    CActiveScheduler::Install(scheduler);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1306
44f437012c90 201041_01
hgs
parents:
diff changeset
  1307
    DoOOMTestsL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1308
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1309
44f437012c90 201041_01
hgs
parents:
diff changeset
  1310
    delete scheduler;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1311
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
  1312
44f437012c90 201041_01
hgs
parents:
diff changeset
  1313
TInt E32Main()
44f437012c90 201041_01
hgs
parents:
diff changeset
  1314
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
  1315
    TheTest.Title ();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1316
    TheTest.Start(_L("PMA OOM Cenrepserv Test"));
44f437012c90 201041_01
hgs
parents:
diff changeset
  1317
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1318
    CTrapCleanup* cleanup = CTrapCleanup::New();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1319
    TheTest(cleanup != NULL);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1320
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1321
    __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1322
        
44f437012c90 201041_01
hgs
parents:
diff changeset
  1323
    TRAPD(err, MainL());
44f437012c90 201041_01
hgs
parents:
diff changeset
  1324
    TEST2(err, KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
  1325
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1326
    __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1327
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1328
    TheTest.End ();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1329
    TheTest.Close ();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1330
    
44f437012c90 201041_01
hgs
parents:
diff changeset
  1331
    delete cleanup;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1332
        
44f437012c90 201041_01
hgs
parents:
diff changeset
  1333
    User::Heap().Check();
44f437012c90 201041_01
hgs
parents:
diff changeset
  1334
    return KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
  1335
    }