persistentstorage/centralrepository/test/t_cenrep_pma_array.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 <e32test.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    17
#include <f32file.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    18
#include <badesca.h>
44f437012c90 201041_01
hgs
parents:
diff changeset
    19
44f437012c90 201041_01
hgs
parents:
diff changeset
    20
#include "srvrepos_noc.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    21
#include "srvres.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    22
#include "t_cenrep_helper.h"
44f437012c90 201041_01
hgs
parents:
diff changeset
    23
44f437012c90 201041_01
hgs
parents:
diff changeset
    24
RTest TheTest(_L("t_cenrep_pma_array.exe"));
44f437012c90 201041_01
hgs
parents:
diff changeset
    25
44f437012c90 201041_01
hgs
parents:
diff changeset
    26
_LIT(KPMAKeyspace1Src, "z:\\private\\10202be9\\f1000001.pma");
44f437012c90 201041_01
hgs
parents:
diff changeset
    27
_LIT(KPMAKeyspace2Src, "z:\\private\\10202be9\\f1000002.pma");
44f437012c90 201041_01
hgs
parents:
diff changeset
    28
_LIT(KPMAKeyspace3Src, "z:\\private\\10202be9\\f1000003.pma");
44f437012c90 201041_01
hgs
parents:
diff changeset
    29
_LIT(KPMAKeyspace4Src, "z:\\private\\10202be9\\f1000004.pma"); //Non-PMA keyspace in PMA drive
44f437012c90 201041_01
hgs
parents:
diff changeset
    30
_LIT(KPMAKeyspace5Src, "z:\\private\\10202be9\\f1000006.txp");
44f437012c90 201041_01
hgs
parents:
diff changeset
    31
44f437012c90 201041_01
hgs
parents:
diff changeset
    32
_LIT(KPMAKeyspace1Dst, "c:\\private\\10202be9\\persists\\protected\\f1000001.cre");
44f437012c90 201041_01
hgs
parents:
diff changeset
    33
_LIT(KPMAKeyspace2Dst, "c:\\private\\10202be9\\persists\\protected\\f1000002.cre");
44f437012c90 201041_01
hgs
parents:
diff changeset
    34
_LIT(KPMAKeyspace3Dst, "c:\\private\\10202be9\\persists\\protected\\f1000003.cre");
44f437012c90 201041_01
hgs
parents:
diff changeset
    35
_LIT(KPMAKeyspace4Dst, "c:\\private\\10202be9\\persists\\protected\\f1000004.cre");
44f437012c90 201041_01
hgs
parents:
diff changeset
    36
_LIT(KPMAKeyspace5Dst, "c:\\private\\10202be9\\persists\\protected\\f1000006.txt");
44f437012c90 201041_01
hgs
parents:
diff changeset
    37
44f437012c90 201041_01
hgs
parents:
diff changeset
    38
44f437012c90 201041_01
hgs
parents:
diff changeset
    39
const TUid KPMATestUid = {0xf1000005};
44f437012c90 201041_01
hgs
parents:
diff changeset
    40
const TUid KNonPMATestUid = {0xf1000004};
44f437012c90 201041_01
hgs
parents:
diff changeset
    41
44f437012c90 201041_01
hgs
parents:
diff changeset
    42
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    43
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    44
//Test macros and functions
44f437012c90 201041_01
hgs
parents:
diff changeset
    45
44f437012c90 201041_01
hgs
parents:
diff changeset
    46
LOCAL_C void Check( TInt aValue, TInt aExpected, TInt aLine )
44f437012c90 201041_01
hgs
parents:
diff changeset
    47
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    48
    if ( aValue != aExpected )
44f437012c90 201041_01
hgs
parents:
diff changeset
    49
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
    50
        RDebug::Print( _L( "*** Expected error: %d, got: %d\r\n"), aExpected, aValue );
44f437012c90 201041_01
hgs
parents:
diff changeset
    51
        TRAPD(err, CleanupCDriveL());
44f437012c90 201041_01
hgs
parents:
diff changeset
    52
        if (err != KErrNone)
44f437012c90 201041_01
hgs
parents:
diff changeset
    53
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    54
            RDebug::Print( _L( "*** CleanupCDriveL also failed with error %d expecting KErrNone\r\n"), err );
44f437012c90 201041_01
hgs
parents:
diff changeset
    55
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    56
        TheTest( EFalse, aLine );
44f437012c90 201041_01
hgs
parents:
diff changeset
    57
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
    58
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
    59
44f437012c90 201041_01
hgs
parents:
diff changeset
    60
#define TEST2(aValue, aExpected) ::Check(aValue, aExpected, __LINE__)
44f437012c90 201041_01
hgs
parents:
diff changeset
    61
44f437012c90 201041_01
hgs
parents:
diff changeset
    62
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    63
///////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    64
static void CloseTServerResources(TAny*)
44f437012c90 201041_01
hgs
parents:
diff changeset
    65
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    66
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
    67
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
    68
44f437012c90 201041_01
hgs
parents:
diff changeset
    69
//////////////////////////////////////////////////////////////////////////////////////////////////
44f437012c90 201041_01
hgs
parents:
diff changeset
    70
class CenrepPMAArrayTest :public CBase
44f437012c90 201041_01
hgs
parents:
diff changeset
    71
{
44f437012c90 201041_01
hgs
parents:
diff changeset
    72
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
    73
    void SetL(TUint32 aKey, TInt aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
    74
    void GetL(TUint32 aKey, TInt& aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
    75
    CenrepPMAArrayTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
    76
    ~CenrepPMAArrayTest();
44f437012c90 201041_01
hgs
parents:
diff changeset
    77
    static CenrepPMAArrayTest* NewL(TUid aReposUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
    78
private:
44f437012c90 201041_01
hgs
parents:
diff changeset
    79
    void ConstructL(TUid aReposUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
    80
public:
44f437012c90 201041_01
hgs
parents:
diff changeset
    81
    CServerRepository* iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
    82
    CSessionNotifier* iSessionNotif;
44f437012c90 201041_01
hgs
parents:
diff changeset
    83
};
44f437012c90 201041_01
hgs
parents:
diff changeset
    84
44f437012c90 201041_01
hgs
parents:
diff changeset
    85
44f437012c90 201041_01
hgs
parents:
diff changeset
    86
CenrepPMAArrayTest::CenrepPMAArrayTest(){}
44f437012c90 201041_01
hgs
parents:
diff changeset
    87
44f437012c90 201041_01
hgs
parents:
diff changeset
    88
CenrepPMAArrayTest::~CenrepPMAArrayTest()
44f437012c90 201041_01
hgs
parents:
diff changeset
    89
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
    90
    if (iServerRepo)
44f437012c90 201041_01
hgs
parents:
diff changeset
    91
        {
44f437012c90 201041_01
hgs
parents:
diff changeset
    92
        if (iSessionNotif)
44f437012c90 201041_01
hgs
parents:
diff changeset
    93
            {
44f437012c90 201041_01
hgs
parents:
diff changeset
    94
            iServerRepo->Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
    95
            }
44f437012c90 201041_01
hgs
parents:
diff changeset
    96
        delete iServerRepo;
44f437012c90 201041_01
hgs
parents:
diff changeset
    97
        }
44f437012c90 201041_01
hgs
parents:
diff changeset
    98
    if (iSessionNotif)
44f437012c90 201041_01
hgs
parents:
diff changeset
    99
        delete iSessionNotif;
44f437012c90 201041_01
hgs
parents:
diff changeset
   100
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   101
44f437012c90 201041_01
hgs
parents:
diff changeset
   102
CenrepPMAArrayTest* CenrepPMAArrayTest::NewL(TUid aReposUid)
44f437012c90 201041_01
hgs
parents:
diff changeset
   103
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   104
    CenrepPMAArrayTest* self=new (ELeave)CenrepPMAArrayTest;
44f437012c90 201041_01
hgs
parents:
diff changeset
   105
    CleanupStack::PushL(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   106
    self->ConstructL(aReposUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
   107
    CleanupStack::Pop(self);
44f437012c90 201041_01
hgs
parents:
diff changeset
   108
    return self;
44f437012c90 201041_01
hgs
parents:
diff changeset
   109
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   110
44f437012c90 201041_01
hgs
parents:
diff changeset
   111
void CenrepPMAArrayTest::ConstructL(TUid aReposUid)
44f437012c90 201041_01
hgs
parents:
diff changeset
   112
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   113
    iServerRepo=new (ELeave)CServerRepository();
44f437012c90 201041_01
hgs
parents:
diff changeset
   114
    iSessionNotif=new (ELeave) CSessionNotifier();
44f437012c90 201041_01
hgs
parents:
diff changeset
   115
44f437012c90 201041_01
hgs
parents:
diff changeset
   116
    iServerRepo->OpenL(aReposUid,*iSessionNotif);
44f437012c90 201041_01
hgs
parents:
diff changeset
   117
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   118
44f437012c90 201041_01
hgs
parents:
diff changeset
   119
void CenrepPMAArrayTest::SetL(TUint32 aKey, TInt aValue)
44f437012c90 201041_01
hgs
parents:
diff changeset
   120
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   121
    iServerRepo->StartTransaction(EConcurrentReadWriteTransaction);
44f437012c90 201041_01
hgs
parents:
diff changeset
   122
    iServerRepo->CleanupCancelTransactionPushL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   123
    iServerRepo->TransactionSetL(aKey, aValue);
44f437012c90 201041_01
hgs
parents:
diff changeset
   124
    CleanupStack::Pop();
44f437012c90 201041_01
hgs
parents:
diff changeset
   125
    TUint32 keyInfo;
44f437012c90 201041_01
hgs
parents:
diff changeset
   126
    User::LeaveIfError(iServerRepo->CommitTransaction(keyInfo));
44f437012c90 201041_01
hgs
parents:
diff changeset
   127
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   128
44f437012c90 201041_01
hgs
parents:
diff changeset
   129
void CenrepPMAArrayTest::GetL(TUint32 aKey, TInt& aValue)
44f437012c90 201041_01
hgs
parents:
diff changeset
   130
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   131
    User::LeaveIfError(iServerRepo->Get(aKey, aValue));
44f437012c90 201041_01
hgs
parents:
diff changeset
   132
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   133
44f437012c90 201041_01
hgs
parents:
diff changeset
   134
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
   135
@SYMTestCaseID          PDS-CENTRALREPOSITORY-CT-4120
44f437012c90 201041_01
hgs
parents:
diff changeset
   136
@SYMTestCaseDesc        PMA repositories array test on pre-loaded PMA drive 
44f437012c90 201041_01
hgs
parents:
diff changeset
   137
@SYMTestPriority        High
44f437012c90 201041_01
hgs
parents:
diff changeset
   138
@SYMTestActions         - Cleanup PMA drive and copy 5 test repositories to the 
44f437012c90 201041_01
hgs
parents:
diff changeset
   139
                          PMA drive. 1 of them is .txt and should be ignored on 
44f437012c90 201041_01
hgs
parents:
diff changeset
   140
                          initialisation and another 1 is a non-PMA keyspace 
44f437012c90 201041_01
hgs
parents:
diff changeset
   141
                          which is counted as a not supported keyspace if found in the 
44f437012c90 201041_01
hgs
parents:
diff changeset
   142
                          PMA drive.
44f437012c90 201041_01
hgs
parents:
diff changeset
   143
                        - Initialise server resource
44f437012c90 201041_01
hgs
parents:
diff changeset
   144
                        - Check the preloaded repositories count in the array
44f437012c90 201041_01
hgs
parents:
diff changeset
   145
                        - Modify a PMA repository that only exist in ROM (not persisted yet), 
44f437012c90 201041_01
hgs
parents:
diff changeset
   146
                          check the count should increase by 1 after successful modification
44f437012c90 201041_01
hgs
parents:
diff changeset
   147
                        - Modify the same PMA repository array again, the count 
44f437012c90 201041_01
hgs
parents:
diff changeset
   148
                          should not be increased again
44f437012c90 201041_01
hgs
parents:
diff changeset
   149
@SYMTestExpectedResults - On initialise count should be 4 (including the Non-PMA keyspace in PMA drive)
44f437012c90 201041_01
hgs
parents:
diff changeset
   150
                        - On modification of  a PMA repository that only exist in ROM (not persisted yet),
44f437012c90 201041_01
hgs
parents:
diff changeset
   151
                          the array should be 5 after successful modification
44f437012c90 201041_01
hgs
parents:
diff changeset
   152
                        - On the 2nd modification of the same repository, the 
44f437012c90 201041_01
hgs
parents:
diff changeset
   153
                          array should still be 5
44f437012c90 201041_01
hgs
parents:
diff changeset
   154
@SYMREQ                 REQ42876
44f437012c90 201041_01
hgs
parents:
diff changeset
   155
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
   156
LOCAL_C void ArrayPreLoadedAndSetTestL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   157
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   158
    TheTest.Next( _L( " @SYMTestCaseID:PDS-CENTRALREPOSITORY-CT-4120 PMA Repositories Array test on pre-loaded PMA drive" ) );
44f437012c90 201041_01
hgs
parents:
diff changeset
   159
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   160
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   161
    RFs rfs;
44f437012c90 201041_01
hgs
parents:
diff changeset
   162
    User::LeaveIfError(rfs.Connect());
44f437012c90 201041_01
hgs
parents:
diff changeset
   163
    CleanupClosePushL(rfs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   164
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   165
    CFileMan* fm = CFileMan::NewL( rfs );
44f437012c90 201041_01
hgs
parents:
diff changeset
   166
    CleanupStack::PushL( fm );
44f437012c90 201041_01
hgs
parents:
diff changeset
   167
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   168
    //copying test files to PMA drive for the server startup simulation
44f437012c90 201041_01
hgs
parents:
diff changeset
   169
    CopyTestFilesL(*fm, KPMAKeyspace1Src, KPMAKeyspace1Dst);
44f437012c90 201041_01
hgs
parents:
diff changeset
   170
    CopyTestFilesL(*fm, KPMAKeyspace2Src, KPMAKeyspace2Dst);
44f437012c90 201041_01
hgs
parents:
diff changeset
   171
    CopyTestFilesL(*fm, KPMAKeyspace3Src, KPMAKeyspace3Dst);
44f437012c90 201041_01
hgs
parents:
diff changeset
   172
    CopyTestFilesL(*fm, KPMAKeyspace4Src, KPMAKeyspace4Dst); //Non-PMA keyspace
44f437012c90 201041_01
hgs
parents:
diff changeset
   173
    CopyTestFilesL(*fm, KPMAKeyspace5Src, KPMAKeyspace5Dst); //Txt keyspace
44f437012c90 201041_01
hgs
parents:
diff changeset
   174
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   175
    CleanupStack::PopAndDestroy(2, &rfs);
44f437012c90 201041_01
hgs
parents:
diff changeset
   176
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   177
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   178
    TUint32 pmaIntKey = {0x01};
44f437012c90 201041_01
hgs
parents:
diff changeset
   179
    TInt currentVal = 0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   180
    TInt pmaCount = 0;
44f437012c90 201041_01
hgs
parents:
diff changeset
   181
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   182
    TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   183
    CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   184
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   185
    pmaCount = TServerResources::iPMADriveRepositories.Count();
44f437012c90 201041_01
hgs
parents:
diff changeset
   186
    TEST2(pmaCount, 4); //Initial load, there should be 4 repositories in PMA array    
44f437012c90 201041_01
hgs
parents:
diff changeset
   187
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   188
    CenrepPMAArrayTest* theTest=CenrepPMAArrayTest::NewL(KPMATestUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
   189
    CleanupStack::PushL(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
   190
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   191
    // Part 1. Persist a repository
44f437012c90 201041_01
hgs
parents:
diff changeset
   192
    theTest->SetL(pmaIntKey, 25); //Setting a value will trigger persist on the ROM repository to PMA Drive
44f437012c90 201041_01
hgs
parents:
diff changeset
   193
    theTest->GetL(pmaIntKey, currentVal); //Double check that the value has indeed changed
44f437012c90 201041_01
hgs
parents:
diff changeset
   194
    TEST2(currentVal, 25);
44f437012c90 201041_01
hgs
parents:
diff changeset
   195
    pmaCount = TServerResources::iPMADriveRepositories.Count();
44f437012c90 201041_01
hgs
parents:
diff changeset
   196
    TEST2(pmaCount, 5); //The array count should be 5 now 
44f437012c90 201041_01
hgs
parents:
diff changeset
   197
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   198
    // Part 2. Persist the same repository
44f437012c90 201041_01
hgs
parents:
diff changeset
   199
    theTest->SetL(pmaIntKey, 30); //Calling set on the same repository 
44f437012c90 201041_01
hgs
parents:
diff changeset
   200
    theTest->GetL(pmaIntKey, currentVal); //Double check that the value has indeed changed
44f437012c90 201041_01
hgs
parents:
diff changeset
   201
    TEST2(currentVal, 30);
44f437012c90 201041_01
hgs
parents:
diff changeset
   202
    pmaCount = TServerResources::iPMADriveRepositories.Count();
44f437012c90 201041_01
hgs
parents:
diff changeset
   203
    TEST2(pmaCount, 5); //The array count should stay the same
44f437012c90 201041_01
hgs
parents:
diff changeset
   204
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   205
    CleanupStack::PopAndDestroy(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
   206
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   207
    TRAPD(err, theTest = CenrepPMAArrayTest::NewL(KNonPMATestUid)); 
44f437012c90 201041_01
hgs
parents:
diff changeset
   208
    TEST2(err, KErrNotSupported);
44f437012c90 201041_01
hgs
parents:
diff changeset
   209
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   210
    pmaCount = TServerResources::iPMADriveRepositories.Count();
44f437012c90 201041_01
hgs
parents:
diff changeset
   211
    //The array count should be less by 1 to 4 because the non-PMA 
44f437012c90 201041_01
hgs
parents:
diff changeset
   212
    // keyspace should be deleted and removed from the array.
44f437012c90 201041_01
hgs
parents:
diff changeset
   213
    TEST2(pmaCount, 4);
44f437012c90 201041_01
hgs
parents:
diff changeset
   214
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   215
    CleanupStack::Pop(); // CloseTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
   216
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   217
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   218
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   219
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   220
44f437012c90 201041_01
hgs
parents:
diff changeset
   221
/**
44f437012c90 201041_01
hgs
parents:
diff changeset
   222
@SYMTestCaseID          PDS-CENTRALREPOSITORY-CT-4121
44f437012c90 201041_01
hgs
parents:
diff changeset
   223
@SYMTestCaseDesc        PMA repositories array test on empty PMA drive 
44f437012c90 201041_01
hgs
parents:
diff changeset
   224
@SYMTestPriority        High
44f437012c90 201041_01
hgs
parents:
diff changeset
   225
@SYMTestActions         - Cleanup PMA drive
44f437012c90 201041_01
hgs
parents:
diff changeset
   226
                        - Initialise server resource
44f437012c90 201041_01
hgs
parents:
diff changeset
   227
                        - Check the preloaded repositories count in the array
44f437012c90 201041_01
hgs
parents:
diff changeset
   228
                        - Modify a ROM-only PMA repository, check the count should increase by 1
44f437012c90 201041_01
hgs
parents:
diff changeset
   229
                        - Modify the same PMA repository array again, the count should not be increased again.
44f437012c90 201041_01
hgs
parents:
diff changeset
   230
@SYMTestExpectedResults - On initialise count should be 0
44f437012c90 201041_01
hgs
parents:
diff changeset
   231
                        - On modification of a ROM-only PMA repository, the array should be 1
44f437012c90 201041_01
hgs
parents:
diff changeset
   232
@SYMREQ                 REQ42876
44f437012c90 201041_01
hgs
parents:
diff changeset
   233
*/
44f437012c90 201041_01
hgs
parents:
diff changeset
   234
LOCAL_C void ArraySetTestL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   235
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   236
    TheTest.Next( _L( " @SYMTestCaseID:PDS-CENTRALREPOSITORY-CT-4121 PMA Repositories Array test on empty PMA drive" ) );
44f437012c90 201041_01
hgs
parents:
diff changeset
   237
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   238
    TServerResources::InitialiseL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   239
    CleanupStack::PushL(TCleanupItem(CloseTServerResources, 0));
44f437012c90 201041_01
hgs
parents:
diff changeset
   240
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   241
    TInt pmaCount = TServerResources::iPMADriveRepositories.Count();
44f437012c90 201041_01
hgs
parents:
diff changeset
   242
    TEST2(pmaCount, 0);
44f437012c90 201041_01
hgs
parents:
diff changeset
   243
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   244
    CenrepPMAArrayTest* theTest=CenrepPMAArrayTest::NewL(KPMATestUid);
44f437012c90 201041_01
hgs
parents:
diff changeset
   245
    CleanupStack::PushL(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
   246
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   247
    TUint32 pmaIntKey = {0x01};
44f437012c90 201041_01
hgs
parents:
diff changeset
   248
    theTest->SetL(pmaIntKey, 40);
44f437012c90 201041_01
hgs
parents:
diff changeset
   249
44f437012c90 201041_01
hgs
parents:
diff changeset
   250
    pmaCount = TServerResources::iPMADriveRepositories.Count();
44f437012c90 201041_01
hgs
parents:
diff changeset
   251
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   252
    TEST2(pmaCount, 1);
44f437012c90 201041_01
hgs
parents:
diff changeset
   253
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   254
    CleanupStack::PopAndDestroy(theTest);
44f437012c90 201041_01
hgs
parents:
diff changeset
   255
    CleanupStack::Pop(); // CloseTServerResources
44f437012c90 201041_01
hgs
parents:
diff changeset
   256
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   257
    TServerResources::Close();
44f437012c90 201041_01
hgs
parents:
diff changeset
   258
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   259
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   260
44f437012c90 201041_01
hgs
parents:
diff changeset
   261
LOCAL_C void MainL()
44f437012c90 201041_01
hgs
parents:
diff changeset
   262
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   263
    CActiveScheduler* scheduler = new(ELeave)CActiveScheduler;
44f437012c90 201041_01
hgs
parents:
diff changeset
   264
    CActiveScheduler::Install(scheduler);
44f437012c90 201041_01
hgs
parents:
diff changeset
   265
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   266
    CleanupStack::PushL(scheduler);
44f437012c90 201041_01
hgs
parents:
diff changeset
   267
44f437012c90 201041_01
hgs
parents:
diff changeset
   268
    //Array was preloaded during startup
44f437012c90 201041_01
hgs
parents:
diff changeset
   269
    ArrayPreLoadedAndSetTestL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   270
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   271
    //Array was not preloaded during startup
44f437012c90 201041_01
hgs
parents:
diff changeset
   272
    ArraySetTestL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   273
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   274
    CleanupCDriveL();
44f437012c90 201041_01
hgs
parents:
diff changeset
   275
44f437012c90 201041_01
hgs
parents:
diff changeset
   276
    CleanupStack::PopAndDestroy(scheduler);
44f437012c90 201041_01
hgs
parents:
diff changeset
   277
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   278
44f437012c90 201041_01
hgs
parents:
diff changeset
   279
44f437012c90 201041_01
hgs
parents:
diff changeset
   280
TInt E32Main()
44f437012c90 201041_01
hgs
parents:
diff changeset
   281
    {
44f437012c90 201041_01
hgs
parents:
diff changeset
   282
    TheTest.Title ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   283
    TheTest.Start( _L( "PMA Array Tests" ) );
44f437012c90 201041_01
hgs
parents:
diff changeset
   284
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   285
    CTrapCleanup* cleanup = CTrapCleanup::New();
44f437012c90 201041_01
hgs
parents:
diff changeset
   286
    TheTest(cleanup != NULL);
44f437012c90 201041_01
hgs
parents:
diff changeset
   287
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   288
    __UHEAP_MARK;
44f437012c90 201041_01
hgs
parents:
diff changeset
   289
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   290
    TRAPD(err, MainL());
44f437012c90 201041_01
hgs
parents:
diff changeset
   291
    TEST2(err, KErrNone);
44f437012c90 201041_01
hgs
parents:
diff changeset
   292
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   293
    __UHEAP_MARKEND;
44f437012c90 201041_01
hgs
parents:
diff changeset
   294
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   295
    TheTest.End ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   296
    TheTest.Close ();
44f437012c90 201041_01
hgs
parents:
diff changeset
   297
    
44f437012c90 201041_01
hgs
parents:
diff changeset
   298
    delete cleanup;
44f437012c90 201041_01
hgs
parents:
diff changeset
   299
        
44f437012c90 201041_01
hgs
parents:
diff changeset
   300
    User::Heap().Check();
44f437012c90 201041_01
hgs
parents:
diff changeset
   301
    return KErrNone;
44f437012c90 201041_01
hgs
parents:
diff changeset
   302
    }
44f437012c90 201041_01
hgs
parents:
diff changeset
   303