tracesrv/tracecore/btrace_handler/test/t_tracecore/src/t_tracecore.cpp
author hgs
Fri, 08 Oct 2010 14:56:39 +0300
changeset 56 aa2539c91954
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56
hgs
parents:
diff changeset
     1
// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     2
// All rights reserved.
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     7
//
hgs
parents:
diff changeset
     8
// Initial Contributors:
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    10
//
hgs
parents:
diff changeset
    11
// Contributors:
hgs
parents:
diff changeset
    12
//
hgs
parents:
diff changeset
    13
// Description:
hgs
parents:
diff changeset
    14
// e32test\ost\t_tracecore.cpp
hgs
parents:
diff changeset
    15
// Overview:
hgs
parents:
diff changeset
    16
// Tests activation/deactivation of traces using the TraceCore 
hgs
parents:
diff changeset
    17
// kernel - side APIs
hgs
parents:
diff changeset
    18
//
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#define __E32TEST_EXTENSION__
hgs
parents:
diff changeset
    21
#include <e32svr.h>
hgs
parents:
diff changeset
    22
#include <e32def.h>
hgs
parents:
diff changeset
    23
#include <e32def_private.h>
hgs
parents:
diff changeset
    24
#include <e32btrace.h>
hgs
parents:
diff changeset
    25
#include <test/tracedataparser.h>
hgs
parents:
diff changeset
    26
#include "t_rtest_panic.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
// the following definition is mutually exclusive
hgs
parents:
diff changeset
    30
// with loading tracecore as extension 
hgs
parents:
diff changeset
    31
// eg epoc.ini extension tracecore.dll
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
hgs
parents:
diff changeset
    34
#include "TraceCoreConstants.h"
hgs
parents:
diff changeset
    35
#include "d_tracecore.h"
hgs
parents:
diff changeset
    36
#include "t_tracecore.h"
hgs
parents:
diff changeset
    37
#include "TestDataWriterNotifier.h"
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
#define __TRACE_LINE__()    test.Printf(_L("%d\n"),__LINE__)
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
RTest test(_L("T_TRACECORE"));
hgs
parents:
diff changeset
    42
hgs
parents:
diff changeset
    43
RTraceCoreTest TraceTest;
hgs
parents:
diff changeset
    44
TComponentId KOstTraceComponentID;
hgs
parents:
diff changeset
    45
TUint32 KTraceMultipartTestData[60];
hgs
parents:
diff changeset
    46
TBuf8<KTcTdwBufSize> buf;
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
/**
hgs
parents:
diff changeset
    51
 * Validate all filters are in sync for the component ids in this test
hgs
parents:
diff changeset
    52
 * @param aComponentId the component id to check group id (category) filters on 
hgs
parents:
diff changeset
    53
 */
hgs
parents:
diff changeset
    54
void ValidateGroupIdFiltersInSync(TUint32 aComponentId)
hgs
parents:
diff changeset
    55
    {
hgs
parents:
diff changeset
    56
    TInt r = KErrNone;
hgs
parents:
diff changeset
    57
    TcDriverParameters p;
hgs
parents:
diff changeset
    58
    
hgs
parents:
diff changeset
    59
    p.iComponentId = aComponentId;
hgs
parents:
diff changeset
    60
    for (TInt i = BTrace::EThreadIdentification; i < KMaxGroupId; i++)
hgs
parents:
diff changeset
    61
        {
hgs
parents:
diff changeset
    62
        p.iGroupId = i;
hgs
parents:
diff changeset
    63
        r = TraceTest.ValidateFilterSync(p);
hgs
parents:
diff changeset
    64
        TEST_KErrNone(r);
hgs
parents:
diff changeset
    65
        }
hgs
parents:
diff changeset
    66
    }
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
void ValidateAllFiltersInSync()
hgs
parents:
diff changeset
    69
    {
hgs
parents:
diff changeset
    70
    ValidateGroupIdFiltersInSync(KTestComponentID1);
hgs
parents:
diff changeset
    71
    ValidateGroupIdFiltersInSync(KTestComponentID2);
hgs
parents:
diff changeset
    72
    }
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
/*
hgs
parents:
diff changeset
    75
 * Activate a trace depending on aMatch
hgs
parents:
diff changeset
    76
 * 
hgs
parents:
diff changeset
    77
 * @param aMatch if aMatch is true then activate the correct GID  and CID
hgs
parents:
diff changeset
    78
 * @param aNum Number of group id's and component id pairs to activate
hgs
parents:
diff changeset
    79
 * 
hgs
parents:
diff changeset
    80
 */
hgs
parents:
diff changeset
    81
void ActivateTrace(TBool aMatch, TInt aNum = 1)
hgs
parents:
diff changeset
    82
    {
hgs
parents:
diff changeset
    83
    test.Printf(_L("In ActivateTrace()\n"));
hgs
parents:
diff changeset
    84
    TcDriverParameters p;
hgs
parents:
diff changeset
    85
    TInt r = 0;
hgs
parents:
diff changeset
    86
    p.iComponentId = (aMatch) ? KTestComponentID1 : KTestComponentID2;
hgs
parents:
diff changeset
    87
    p.iGroupId = (aMatch) ? KTestGroupId1 : KTestGroupId2;
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
    r = TraceTest.ValidateFilterSync(p);
hgs
parents:
diff changeset
    90
    TEST_KErrNone(r);
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
    //if we want to activate correct gids &cids, activate the correct number of them
hgs
parents:
diff changeset
    93
    //starting from KTestGroupId1 and KTestComponentID1 else just activate one incorrect 
hgs
parents:
diff changeset
    94
    //pair i.e KTestComponentID2 & KTestGroupId1
hgs
parents:
diff changeset
    95
    if (aMatch)
hgs
parents:
diff changeset
    96
        r = TraceTest.ActivateTrace(p, aNum);
hgs
parents:
diff changeset
    97
    else
hgs
parents:
diff changeset
    98
        r = TraceTest.ActivateTrace(p);
hgs
parents:
diff changeset
    99
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   100
hgs
parents:
diff changeset
   101
    r = TraceTest.ValidateFilterSync(p);
hgs
parents:
diff changeset
   102
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
    }
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
/*
hgs
parents:
diff changeset
   107
 * Deactivate a trace depending on aMatch
hgs
parents:
diff changeset
   108
 * 
hgs
parents:
diff changeset
   109
 * @param aMatch if aMatch is true then deactivate the correct GID  and CID
hgs
parents:
diff changeset
   110
 * @param aNum Number of group id's to deactivate
hgs
parents:
diff changeset
   111
 * 
hgs
parents:
diff changeset
   112
 */
hgs
parents:
diff changeset
   113
void DeactivateTrace(TBool aMatch, TInt aNum = 1)
hgs
parents:
diff changeset
   114
    {
hgs
parents:
diff changeset
   115
    test.Printf(_L("In DeactivateTrace()\n"));
hgs
parents:
diff changeset
   116
    TcDriverParameters p;
hgs
parents:
diff changeset
   117
    TInt r = 0;
hgs
parents:
diff changeset
   118
    p.iComponentId = (aMatch) ? KTestComponentID1 : KTestComponentID2;
hgs
parents:
diff changeset
   119
    p.iGroupId = (aMatch) ? KTestGroupId1 : KTestGroupId2;
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    r = TraceTest.ValidateFilterSync(p);
hgs
parents:
diff changeset
   122
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   123
hgs
parents:
diff changeset
   124
    //if we want to deactivate correct gids &cids, deactivate the correct number of them
hgs
parents:
diff changeset
   125
    //starting from KTestGroupId1 and KTestComponentID1 else just deactivate one incorrect 
hgs
parents:
diff changeset
   126
    //pair i.e KTestComponentID2 & KTestGroupId1  
hgs
parents:
diff changeset
   127
    if (aMatch)
hgs
parents:
diff changeset
   128
        r = TraceTest.DeactivateTrace(p, aNum);
hgs
parents:
diff changeset
   129
    else
hgs
parents:
diff changeset
   130
        r = TraceTest.DeactivateTrace(p);
hgs
parents:
diff changeset
   131
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
    r = TraceTest.ValidateFilterSync(p);
hgs
parents:
diff changeset
   134
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   135
    }
hgs
parents:
diff changeset
   136
hgs
parents:
diff changeset
   137
/*
hgs
parents:
diff changeset
   138
 * Tell the test writer to start/stop dropping
hgs
parents:
diff changeset
   139
 * traces
hgs
parents:
diff changeset
   140
 * 
hgs
parents:
diff changeset
   141
 * @param aDrop ETrue to drop Traces, EFalse to stop
hgs
parents:
diff changeset
   142
 *              dropping them
hgs
parents:
diff changeset
   143
 */
hgs
parents:
diff changeset
   144
void DropNextTrace(TBool aDrop)
hgs
parents:
diff changeset
   145
    {
hgs
parents:
diff changeset
   146
    TInt r = KErrNone;
hgs
parents:
diff changeset
   147
    r = TraceTest.DropNextTrace(aDrop);
hgs
parents:
diff changeset
   148
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   149
    }
hgs
parents:
diff changeset
   150
hgs
parents:
diff changeset
   151
/*
hgs
parents:
diff changeset
   152
 * Activate/deactivate the printf handler
hgs
parents:
diff changeset
   153
 *
hgs
parents:
diff changeset
   154
 * TBool aActivate to activate(ETrue)/deactivate(EFalse)
hgs
parents:
diff changeset
   155
 *
hgs
parents:
diff changeset
   156
 * Activate/Deactivate    TRACECORE_KERN_PRINTF=BTrace::EKernPrintf=0
hgs
parents:
diff changeset
   157
 *                        TRACECORE_RDEBUG_PRINT=BTrace::ERDebugPrintf=1
hgs
parents:
diff changeset
   158
 *                        TRACECORE_PLATSEC_PRINTF=BTrace::EPlatsecPrintf=2
hgs
parents:
diff changeset
   159
 *
hgs
parents:
diff changeset
   160
 */
hgs
parents:
diff changeset
   161
void ActivatePrintfHandler(TBool aActivate, TInt aMaxCategory = BTrace::EPlatsecPrintf)
hgs
parents:
diff changeset
   162
    {
hgs
parents:
diff changeset
   163
    TcDriverParameters p;
hgs
parents:
diff changeset
   164
    TInt r=0;
hgs
parents:
diff changeset
   165
    TInt maxPrintfCategory = aMaxCategory;
hgs
parents:
diff changeset
   166
    p.iComponentId = 0x2001022D; //from BTraceHooks_0x2001022D_dictionary.xml
hgs
parents:
diff changeset
   167
    p.iGroupId = BTrace::ERDebugPrintf;
hgs
parents:
diff changeset
   168
hgs
parents:
diff changeset
   169
    for(TInt i=0; i<=maxPrintfCategory; i++)
hgs
parents:
diff changeset
   170
        {
hgs
parents:
diff changeset
   171
        if(aActivate)
hgs
parents:
diff changeset
   172
            r = TraceTest.ActivateTrace(p);
hgs
parents:
diff changeset
   173
        else
hgs
parents:
diff changeset
   174
            r = TraceTest.DeactivateTrace(p);
hgs
parents:
diff changeset
   175
        if (r!=KErrNone)
hgs
parents:
diff changeset
   176
            {
hgs
parents:
diff changeset
   177
            test.Printf(_L("Unable to activate/deactivate printf handler for printf %d: error: %d"), i, r);
hgs
parents:
diff changeset
   178
            }
hgs
parents:
diff changeset
   179
        TEST_KErrNone(r);
hgs
parents:
diff changeset
   180
        p.iGroupId++;
hgs
parents:
diff changeset
   181
        }
hgs
parents:
diff changeset
   182
    r = TraceTest.ValidateFilterSync(p);
hgs
parents:
diff changeset
   183
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   184
    }
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
/*
hgs
parents:
diff changeset
   187
 * Activate/deactivate kernel GIDs
hgs
parents:
diff changeset
   188
 *
hgs
parents:
diff changeset
   189
 * TBool aActivate to activate(ETrue)/deactivate(EFalse)
hgs
parents:
diff changeset
   190
 * TBool aFirstGID start of range of GIDs to activate/deactivate
hgs
parents:
diff changeset
   191
 * TBool aLastGID end of range of GIDs to activate/deactivate
hgs
parents:
diff changeset
   192
 *
hgs
parents:
diff changeset
   193
 */
hgs
parents:
diff changeset
   194
void ActivateKernelTraces(TBool aActivate, TInt aFirstGID = -1, TInt aLastGID = -1)
hgs
parents:
diff changeset
   195
    {
hgs
parents:
diff changeset
   196
    TInt r=KErrNone;
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
    if(aFirstGID == -1)
hgs
parents:
diff changeset
   199
        {
hgs
parents:
diff changeset
   200
        aFirstGID = KMinKernelCategory;
hgs
parents:
diff changeset
   201
        if(aLastGID == -1)
hgs
parents:
diff changeset
   202
            {
hgs
parents:
diff changeset
   203
            aLastGID = KMaxKernelCategory;
hgs
parents:
diff changeset
   204
            }
hgs
parents:
diff changeset
   205
        }
hgs
parents:
diff changeset
   206
    if(aLastGID < aFirstGID)
hgs
parents:
diff changeset
   207
        {
hgs
parents:
diff changeset
   208
        aLastGID = aFirstGID;
hgs
parents:
diff changeset
   209
        }
hgs
parents:
diff changeset
   210
        
hgs
parents:
diff changeset
   211
    TcDriverParameters p;
hgs
parents:
diff changeset
   212
    p.iComponentId = 0x2001022D; //from BTraceHooks_0x2001022D_dictionary.xml
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
    for(TInt i=aFirstGID; i<=aLastGID; i++)
hgs
parents:
diff changeset
   215
        {
hgs
parents:
diff changeset
   216
        p.iGroupId = i;
hgs
parents:
diff changeset
   217
        if(aActivate)
hgs
parents:
diff changeset
   218
            r = TraceTest.ActivateTrace(p);
hgs
parents:
diff changeset
   219
        else
hgs
parents:
diff changeset
   220
            r = TraceTest.DeactivateTrace(p);
hgs
parents:
diff changeset
   221
        if (r<KErrNone)
hgs
parents:
diff changeset
   222
            {
hgs
parents:
diff changeset
   223
            test.Printf(_L("Unable to activate/deactivate kernel trace for GID %d: error: %d"), i, r);
hgs
parents:
diff changeset
   224
            }
hgs
parents:
diff changeset
   225
        TEST_KErrNone(r);
hgs
parents:
diff changeset
   226
        }
hgs
parents:
diff changeset
   227
    }
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
/*
hgs
parents:
diff changeset
   230
 * Validate the trace data in memory buffer
hgs
parents:
diff changeset
   231
 * 
hgs
parents:
diff changeset
   232
 * @param aTracePresent determines if trace data should be present or not
hgs
parents:
diff changeset
   233
 * @param aBuffer the buffer containing the trace data
hgs
parents:
diff changeset
   234
 * @param aSize size of the trace buffer
hgs
parents:
diff changeset
   235
 * @param aGID expected GID
hgs
parents:
diff changeset
   236
 * @param aCID expected CID
hgs
parents:
diff changeset
   237
 * 
hgs
parents:
diff changeset
   238
 */
hgs
parents:
diff changeset
   239
TInt ValidatePayload(TBool aTracePresent, TUint8 aGID, TUint32 aCID, TBool aMissingTrace=EFalse, TBool aPrintfTrace=EFalse, TDesC8* aExpectedPrintfTrace=NULL)
hgs
parents:
diff changeset
   240
    {
hgs
parents:
diff changeset
   241
#ifdef TRACECORE_TRACE_DISABLED
hgs
parents:
diff changeset
   242
    if (!aPrintfTrace)
hgs
parents:
diff changeset
   243
        {
hgs
parents:
diff changeset
   244
        aTracePresent = EFalse;
hgs
parents:
diff changeset
   245
        }
hgs
parents:
diff changeset
   246
#endif
hgs
parents:
diff changeset
   247
    return TTraceDataParser::ValidatePayload(buf, aTracePresent, 
hgs
parents:
diff changeset
   248
            (TGroupId) aGID, (TComponentId)aCID, KTestData, aPrintfTrace, aMissingTrace, aExpectedPrintfTrace);
hgs
parents:
diff changeset
   249
    }
hgs
parents:
diff changeset
   250
hgs
parents:
diff changeset
   251
/*
hgs
parents:
diff changeset
   252
 * Make a request to the test writer to start watching for data
hgs
parents:
diff changeset
   253
 * 
hgs
parents:
diff changeset
   254
 * @param aStatus holds the status of the request
hgs
parents:
diff changeset
   255
 * @param aNumTraces number of traces to write
hgs
parents:
diff changeset
   256
 * 
hgs
parents:
diff changeset
   257
 */
hgs
parents:
diff changeset
   258
void RequestDataNotification(TRequestStatus& aStatus, TInt aNumTraces=1)
hgs
parents:
diff changeset
   259
    {
hgs
parents:
diff changeset
   260
    buf.Zero();
hgs
parents:
diff changeset
   261
    TraceTest.RequestTraceData(aStatus, buf, aNumTraces);
hgs
parents:
diff changeset
   262
    }
hgs
parents:
diff changeset
   263
hgs
parents:
diff changeset
   264
/*
hgs
parents:
diff changeset
   265
 * Read the trace data in memory buffer
hgs
parents:
diff changeset
   266
 * 
hgs
parents:
diff changeset
   267
 * @param aBuffer on return, buffer containing the trace data
hgs
parents:
diff changeset
   268
 * @param aSize on return, size of the trace buffer
hgs
parents:
diff changeset
   269
 * @return
hgs
parents:
diff changeset
   270
 * 
hgs
parents:
diff changeset
   271
 */
hgs
parents:
diff changeset
   272
TInt ReadTraceFromBuffer(TRequestStatus& aStatus, TUint8*& aBuffer,
hgs
parents:
diff changeset
   273
        TInt& aSize)
hgs
parents:
diff changeset
   274
    {
hgs
parents:
diff changeset
   275
    RTimer timer;
hgs
parents:
diff changeset
   276
    TRequestStatus status;
hgs
parents:
diff changeset
   277
    TInt ret = timer.CreateLocal();
hgs
parents:
diff changeset
   278
    // wait for WriteComplete to complete
hgs
parents:
diff changeset
   279
hgs
parents:
diff changeset
   280
    timer.After(status, 10000);
hgs
parents:
diff changeset
   281
    User::WaitForRequest(status,aStatus);
hgs
parents:
diff changeset
   282
hgs
parents:
diff changeset
   283
    if (aStatus.Int() != KErrNone)
hgs
parents:
diff changeset
   284
        //if the read request didn't complete, force it to look like it completed (this doesn't cancel the request tho)
hgs
parents:
diff changeset
   285
        aStatus = KErrNone;
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
    aBuffer = (TUint8*) buf.Ptr();
hgs
parents:
diff changeset
   288
    aSize = buf.Size();
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
    //test.Printf(_L("In ReadTraceFromBuffer()\n"));
hgs
parents:
diff changeset
   291
    timer.Close();
hgs
parents:
diff changeset
   292
    return KErrNone;
hgs
parents:
diff changeset
   293
    }
hgs
parents:
diff changeset
   294
hgs
parents:
diff changeset
   295
/*
hgs
parents:
diff changeset
   296
 * Send Simple (<80 bytes) Test Traces. 
hgs
parents:
diff changeset
   297
 * Each trace has the same payload containing numbers
hgs
parents:
diff changeset
   298
 * starting from KTestData and incrementing until the required size is filled up.
hgs
parents:
diff changeset
   299
 * Each trace has a different group id and component id pair incrementing up from
hgs
parents:
diff changeset
   300
 * KTestGroupId1 and KTestComponentID1.
hgs
parents:
diff changeset
   301
 * 
hgs
parents:
diff changeset
   302
 * @param aTracePresent indicates id a trace packet should be present or not
hgs
parents:
diff changeset
   303
 * @param aSize size of trace to send in words (groups of 4 bytes),defaults to 1.
hgs
parents:
diff changeset
   304
 * @param aNum Number of traces to send, defaults to 1.
hgs
parents:
diff changeset
   305
 */
hgs
parents:
diff changeset
   306
TInt SendAndValidateTestTraces(TBool aTracePresent, TInt aSize = 1,
hgs
parents:
diff changeset
   307
        TInt aNum = 1, TBool aPrintfTrace = EFalse, TInt aNumberDropped = 0)
hgs
parents:
diff changeset
   308
    {
hgs
parents:
diff changeset
   309
    if (aSize > 18)
hgs
parents:
diff changeset
   310
        {
hgs
parents:
diff changeset
   311
        test.Printf(
hgs
parents:
diff changeset
   312
                _L("Incorrect argument... Please use a trace size that is <=18 words (72bytes)"));
hgs
parents:
diff changeset
   313
        return KErrArgument;
hgs
parents:
diff changeset
   314
        }
hgs
parents:
diff changeset
   315
    
hgs
parents:
diff changeset
   316
    if (aNumberDropped>=aNum)
hgs
parents:
diff changeset
   317
        {
hgs
parents:
diff changeset
   318
        test.Printf(
hgs
parents:
diff changeset
   319
                _L("Incorrect argument... Please use aNumberDropped less than number you wish to send)"));
hgs
parents:
diff changeset
   320
        return KErrArgument;
hgs
parents:
diff changeset
   321
        }
hgs
parents:
diff changeset
   322
    
hgs
parents:
diff changeset
   323
    test.Printf(_L("In SendTestTraces()\n"));
hgs
parents:
diff changeset
   324
    TUint32 traceword = TEST_TRACE;
hgs
parents:
diff changeset
   325
    KOstTraceComponentID = KTestComponentID1;
hgs
parents:
diff changeset
   326
    TRequestStatus status;
hgs
parents:
diff changeset
   327
    TUint8* buffer = NULL;
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
    //Drop next Trace
hgs
parents:
diff changeset
   330
    DropNextTrace(ETrue);
hgs
parents:
diff changeset
   331
    TBool dropped = ETrue;
hgs
parents:
diff changeset
   332
    TBool missing = EFalse;
hgs
parents:
diff changeset
   333
    
hgs
parents:
diff changeset
   334
    for (TInt i = 0; i < aNum; i++)
hgs
parents:
diff changeset
   335
        {
hgs
parents:
diff changeset
   336
        if (i>=aNumberDropped)
hgs
parents:
diff changeset
   337
            {
hgs
parents:
diff changeset
   338
            DropNextTrace(EFalse); //stop dropping traces
hgs
parents:
diff changeset
   339
            dropped = EFalse;
hgs
parents:
diff changeset
   340
            }
hgs
parents:
diff changeset
   341
        
hgs
parents:
diff changeset
   342
        if ((i==aNumberDropped)&&(i!=0))
hgs
parents:
diff changeset
   343
            missing = ETrue;
hgs
parents:
diff changeset
   344
        else
hgs
parents:
diff changeset
   345
            missing = EFalse;
hgs
parents:
diff changeset
   346
        
hgs
parents:
diff changeset
   347
        TInt size = 0;
hgs
parents:
diff changeset
   348
        
hgs
parents:
diff changeset
   349
        //make request to read trace data from memory
hgs
parents:
diff changeset
   350
        TInt bufferedTraces=1;
hgs
parents:
diff changeset
   351
        if (aPrintfTrace&&missing&&!dropped)              // if it's a printf trace and we're dropped traces
hgs
parents:
diff changeset
   352
            bufferedTraces++;                             // and the one we're currently sending isn't to be dropped
hgs
parents:
diff changeset
   353
        RequestDataNotification(status, bufferedTraces);
hgs
parents:
diff changeset
   354
        
hgs
parents:
diff changeset
   355
        if (!aPrintfTrace)
hgs
parents:
diff changeset
   356
            OstTraceData(TRACE_NORMAL+i, traceword, "You will only see this text in Trace Viewer: %d", KTraceMultipartTestData,(aSize*4));
hgs
parents:
diff changeset
   357
        else
hgs
parents:
diff changeset
   358
            {
hgs
parents:
diff changeset
   359
            ActivatePrintfHandler(ETrue,BTrace::ERDebugPrintf);
hgs
parents:
diff changeset
   360
            RDebug::Printf(KTestPrintfTraceString);
hgs
parents:
diff changeset
   361
            ActivatePrintfHandler(EFalse,BTrace::ERDebugPrintf);
hgs
parents:
diff changeset
   362
            }
hgs
parents:
diff changeset
   363
            
hgs
parents:
diff changeset
   364
        //read traces from memory
hgs
parents:
diff changeset
   365
        TEST_KErrNone(ReadTraceFromBuffer(status, buffer, size));
hgs
parents:
diff changeset
   366
hgs
parents:
diff changeset
   367
        //Validate Traces
hgs
parents:
diff changeset
   368
        //test.Next(_L("Validate payload"));
hgs
parents:
diff changeset
   369
        TPtrC8 expectedPrintfData(KTestPrintfTraceLiteral);
hgs
parents:
diff changeset
   370
        TInt r = ValidatePayload((aTracePresent&&!dropped), TRACE_NORMAL+i, KOstTraceComponentID, missing, aPrintfTrace, &expectedPrintfData);
hgs
parents:
diff changeset
   371
        TEST_KErrNone(r);
hgs
parents:
diff changeset
   372
        traceword += (1 << GROUPIDSHIFT); //incrememnt the group id part of the trace word...
hgs
parents:
diff changeset
   373
        KOstTraceComponentID++;
hgs
parents:
diff changeset
   374
        }
hgs
parents:
diff changeset
   375
hgs
parents:
diff changeset
   376
    return KErrNone;
hgs
parents:
diff changeset
   377
    }
hgs
parents:
diff changeset
   378
hgs
parents:
diff changeset
   379
/*
hgs
parents:
diff changeset
   380
 * Send a big (>80bytes)Test Trace
hgs
parents:
diff changeset
   381
 * 
hgs
parents:
diff changeset
   382
 * @param aTracePresent indicates id a trace packet should be present or not
hgs
parents:
diff changeset
   383
 */
hgs
parents:
diff changeset
   384
void SendAndValidateBigTestTrace(TBool aTracePresent)
hgs
parents:
diff changeset
   385
    {
hgs
parents:
diff changeset
   386
    test.Printf(_L("In SendBigTestTrace()\n"));
hgs
parents:
diff changeset
   387
    KOstTraceComponentID = KTestComponentID1;
hgs
parents:
diff changeset
   388
    TRequestStatus status;
hgs
parents:
diff changeset
   389
hgs
parents:
diff changeset
   390
    TUint8* buffer = NULL;
hgs
parents:
diff changeset
   391
    TInt size = 0;
hgs
parents:
diff changeset
   392
hgs
parents:
diff changeset
   393
    //make request to read trace data from memory
hgs
parents:
diff changeset
   394
    RequestDataNotification(status);
hgs
parents:
diff changeset
   395
hgs
parents:
diff changeset
   396
    OstTraceData(TRACE_NORMAL, TEST_TRACE, "You will only see this text in Trace Viewer", KTraceMultipartTestData,240);
hgs
parents:
diff changeset
   397
    TEST_KErrNone(ReadTraceFromBuffer(status, buffer, size));
hgs
parents:
diff changeset
   398
hgs
parents:
diff changeset
   399
    //Validate Traces
hgs
parents:
diff changeset
   400
    test.Next(_L("Validate payload for test big trace"));
hgs
parents:
diff changeset
   401
    TEST_KErrNone(ValidatePayload(aTracePresent,TRACE_NORMAL,KOstTraceComponentID));
hgs
parents:
diff changeset
   402
    }
hgs
parents:
diff changeset
   403
hgs
parents:
diff changeset
   404
/*
hgs
parents:
diff changeset
   405
 * Test Trace Activation in Trace core
hgs
parents:
diff changeset
   406
 * 
hgs
parents:
diff changeset
   407
 * @pre Trace Core settings must be cleared before trying to activate correct attributes
hgs
parents:
diff changeset
   408
 */
hgs
parents:
diff changeset
   409
void TestBasicActivation()
hgs
parents:
diff changeset
   410
    {
hgs
parents:
diff changeset
   411
    test.Printf(_L("In TestBasicActivation()\n"));
hgs
parents:
diff changeset
   412
hgs
parents:
diff changeset
   413
    //Send Activation
hgs
parents:
diff changeset
   414
    test.Next(_L("Send Activation message to TraceCore"));
hgs
parents:
diff changeset
   415
    ActivateTrace(ETrue);
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
    //Send and Validate Traces
hgs
parents:
diff changeset
   418
    TEST_KErrNone(SendAndValidateTestTraces(ETrue));
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
    //Deactivate when done sending trace
hgs
parents:
diff changeset
   421
    DeactivateTrace(ETrue);
hgs
parents:
diff changeset
   422
    }
hgs
parents:
diff changeset
   423
hgs
parents:
diff changeset
   424
/*
hgs
parents:
diff changeset
   425
 * Test Trace Deactivation in Trace core
hgs
parents:
diff changeset
   426
 * 
hgs
parents:
diff changeset
   427
 */
hgs
parents:
diff changeset
   428
void TestBasicDeactivation()
hgs
parents:
diff changeset
   429
    {
hgs
parents:
diff changeset
   430
    test.Printf(_L("In TestBasicDeactivation()\n"));
hgs
parents:
diff changeset
   431
hgs
parents:
diff changeset
   432
    //Have correct trace attributes activated, then try to deactivate them
hgs
parents:
diff changeset
   433
    ActivateTrace(ETrue);
hgs
parents:
diff changeset
   434
hgs
parents:
diff changeset
   435
    //Send Deactivation
hgs
parents:
diff changeset
   436
    test.Next(_L("Send Deactivation message to TraceCore"));
hgs
parents:
diff changeset
   437
    DeactivateTrace(ETrue);
hgs
parents:
diff changeset
   438
hgs
parents:
diff changeset
   439
    //Send and Validate Traces
hgs
parents:
diff changeset
   440
    TEST_KErrNone(SendAndValidateTestTraces(EFalse));
hgs
parents:
diff changeset
   441
    }
hgs
parents:
diff changeset
   442
hgs
parents:
diff changeset
   443
/*
hgs
parents:
diff changeset
   444
 * Negative Test Trace Activation in Trace core
hgs
parents:
diff changeset
   445
 * 
hgs
parents:
diff changeset
   446
 * @pre Trace Core settings must be cleared before trying to activate wrong attributes
hgs
parents:
diff changeset
   447
 */
hgs
parents:
diff changeset
   448
void NegativeTestActivation()
hgs
parents:
diff changeset
   449
    {
hgs
parents:
diff changeset
   450
    test.Printf(_L("In NegativeTestActivation()\n"));
hgs
parents:
diff changeset
   451
hgs
parents:
diff changeset
   452
    //Send Activation
hgs
parents:
diff changeset
   453
    test.Next(_L("Send Negative Activation message to TraceCore"));
hgs
parents:
diff changeset
   454
    ActivateTrace(EFalse);
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
    //Send and Validate Traces
hgs
parents:
diff changeset
   457
    TEST_KErrNone(SendAndValidateTestTraces(EFalse));
hgs
parents:
diff changeset
   458
hgs
parents:
diff changeset
   459
    //Deactivate when done sending trace
hgs
parents:
diff changeset
   460
    DeactivateTrace(EFalse);
hgs
parents:
diff changeset
   461
    }
hgs
parents:
diff changeset
   462
hgs
parents:
diff changeset
   463
/*
hgs
parents:
diff changeset
   464
 * Test Trace Deactivation in Trace core
hgs
parents:
diff changeset
   465
 * 
hgs
parents:
diff changeset
   466
 */
hgs
parents:
diff changeset
   467
void NegativeTestDeactivation()
hgs
parents:
diff changeset
   468
    {
hgs
parents:
diff changeset
   469
    test.Printf(_L("In NegativeTestDeactivation()\n"));
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
    //Have correct trace attributes activated, then try to deactivate the wrong ones
hgs
parents:
diff changeset
   472
    ActivateTrace(ETrue);
hgs
parents:
diff changeset
   473
hgs
parents:
diff changeset
   474
    //Send Deactivation
hgs
parents:
diff changeset
   475
    test.Next(_L("Send Negative Deactivation message to TraceCore"));
hgs
parents:
diff changeset
   476
    DeactivateTrace(EFalse);
hgs
parents:
diff changeset
   477
hgs
parents:
diff changeset
   478
    //Send and Validate Traces
hgs
parents:
diff changeset
   479
    TEST_KErrNone(SendAndValidateTestTraces(ETrue));
hgs
parents:
diff changeset
   480
hgs
parents:
diff changeset
   481
    //Deactivate when done sending trace
hgs
parents:
diff changeset
   482
    DeactivateTrace(ETrue);
hgs
parents:
diff changeset
   483
    }
hgs
parents:
diff changeset
   484
hgs
parents:
diff changeset
   485
/*
hgs
parents:
diff changeset
   486
 * Test Trace Activation in Trace core when multiple (16 here) GID and CID pairs are activated
hgs
parents:
diff changeset
   487
 * 
hgs
parents:
diff changeset
   488
 * @pre Trace Core settings must be cleared before trying to activate correct attributes
hgs
parents:
diff changeset
   489
 */
hgs
parents:
diff changeset
   490
void TestMultipleActivation()
hgs
parents:
diff changeset
   491
    {
hgs
parents:
diff changeset
   492
    test.Printf(_L("In TestMultipleActivation()\n"));
hgs
parents:
diff changeset
   493
hgs
parents:
diff changeset
   494
    //Send Activation
hgs
parents:
diff changeset
   495
    test.Next(_L("Send Activation message to TraceCore"));
hgs
parents:
diff changeset
   496
    ActivateTrace(ETrue, 16);
hgs
parents:
diff changeset
   497
hgs
parents:
diff changeset
   498
    //Send and Validate Traces
hgs
parents:
diff changeset
   499
    TEST_KErrNone(SendAndValidateTestTraces(ETrue,1,16));
hgs
parents:
diff changeset
   500
hgs
parents:
diff changeset
   501
    //Deactivate when done sending trace
hgs
parents:
diff changeset
   502
    DeactivateTrace(ETrue, 16);
hgs
parents:
diff changeset
   503
    }
hgs
parents:
diff changeset
   504
hgs
parents:
diff changeset
   505
/*
hgs
parents:
diff changeset
   506
 * Test Trace Deactivation in Trace core when multiple (64 here) GID and CID pairs are activated
hgs
parents:
diff changeset
   507
 * 
hgs
parents:
diff changeset
   508
 * @pre Trace Core settings must be cleared before trying to activate correct attributes
hgs
parents:
diff changeset
   509
 */
hgs
parents:
diff changeset
   510
void TestMultipleDeactivation()
hgs
parents:
diff changeset
   511
    {
hgs
parents:
diff changeset
   512
    test.Printf(_L("In TestMultipleDeactivation()\n"));
hgs
parents:
diff changeset
   513
hgs
parents:
diff changeset
   514
    //Have correct trace attributes activated, then try to deactivate them
hgs
parents:
diff changeset
   515
    ActivateTrace(ETrue, 16);
hgs
parents:
diff changeset
   516
hgs
parents:
diff changeset
   517
    //Send Deactivation
hgs
parents:
diff changeset
   518
    test.Next(_L("Send Deactivation message to TraceCore"));
hgs
parents:
diff changeset
   519
    DeactivateTrace(ETrue, 16);
hgs
parents:
diff changeset
   520
hgs
parents:
diff changeset
   521
    //Send Traces
hgs
parents:
diff changeset
   522
    TEST_KErrNone(SendAndValidateTestTraces(EFalse,1,16));
hgs
parents:
diff changeset
   523
    }
hgs
parents:
diff changeset
   524
hgs
parents:
diff changeset
   525
/*
hgs
parents:
diff changeset
   526
 * Test Trace Activation when big traces are sent
hgs
parents:
diff changeset
   527
 * 
hgs
parents:
diff changeset
   528
 */
hgs
parents:
diff changeset
   529
void TestBigTrace()
hgs
parents:
diff changeset
   530
    {
hgs
parents:
diff changeset
   531
    test.Printf(_L("In TestBigTrace()\n"));
hgs
parents:
diff changeset
   532
hgs
parents:
diff changeset
   533
    //Send Activation
hgs
parents:
diff changeset
   534
    test.Next(_L("Send Activation message to TraceCore"));
hgs
parents:
diff changeset
   535
    ActivateTrace(ETrue);
hgs
parents:
diff changeset
   536
hgs
parents:
diff changeset
   537
    //Send and Validate Big Trace
hgs
parents:
diff changeset
   538
    SendAndValidateBigTestTrace(ETrue);
hgs
parents:
diff changeset
   539
hgs
parents:
diff changeset
   540
    //Deactivate when done sending trace
hgs
parents:
diff changeset
   541
    DeactivateTrace(ETrue);
hgs
parents:
diff changeset
   542
hgs
parents:
diff changeset
   543
    }
hgs
parents:
diff changeset
   544
hgs
parents:
diff changeset
   545
/*
hgs
parents:
diff changeset
   546
 * Test that TraceCore Handlers ouput missing data notification when traces are dropped
hgs
parents:
diff changeset
   547
 */
hgs
parents:
diff changeset
   548
void TestDroppedTraces()
hgs
parents:
diff changeset
   549
    {
hgs
parents:
diff changeset
   550
    test.Printf(_L("In TestDroppedTraces()\n"));
hgs
parents:
diff changeset
   551
hgs
parents:
diff changeset
   552
    //Send Activation
hgs
parents:
diff changeset
   553
    test.Next(_L("Send Activation message to TraceCore"));
hgs
parents:
diff changeset
   554
    ActivateTrace(ETrue, 5);
hgs
parents:
diff changeset
   555
    
hgs
parents:
diff changeset
   556
    //Send and Validate 5 Traces when no traces are dropped
hgs
parents:
diff changeset
   557
    TEST_KErrNone(SendAndValidateTestTraces(ETrue,1,5,EFalse,0));
hgs
parents:
diff changeset
   558
hgs
parents:
diff changeset
   559
    //Send and Validate 5 Traces where 1st 2 traces are dropped (check for missing flag on 3rd)
hgs
parents:
diff changeset
   560
    TEST_KErrNone(SendAndValidateTestTraces(ETrue,1,5,EFalse,2));
hgs
parents:
diff changeset
   561
hgs
parents:
diff changeset
   562
    //Send and Validate 1 Printf Trace where no traces are dropped
hgs
parents:
diff changeset
   563
    TEST_KErrNone(SendAndValidateTestTraces(ETrue,1,5,ETrue,0));
hgs
parents:
diff changeset
   564
    
hgs
parents:
diff changeset
   565
    //Send and Validate 2 Printf Trace where 1st trace is dropped
hgs
parents:
diff changeset
   566
    TEST_KErrNone(SendAndValidateTestTraces(ETrue,1,2,ETrue,1));//(check for "dropped trace" on 2nd)
hgs
parents:
diff changeset
   567
    
hgs
parents:
diff changeset
   568
    //Send and Validate 7 Printf Trace where 1st 5 traces are dropped
hgs
parents:
diff changeset
   569
    TEST_KErrNone(SendAndValidateTestTraces(ETrue,1,7,ETrue,5));//(check for "dropped trace" on 6th)
hgs
parents:
diff changeset
   570
    
hgs
parents:
diff changeset
   571
    //Deactivate when done sending traces
hgs
parents:
diff changeset
   572
    DeactivateTrace(ETrue, 5);
hgs
parents:
diff changeset
   573
    }
hgs
parents:
diff changeset
   574
hgs
parents:
diff changeset
   575
/*
hgs
parents:
diff changeset
   576
 * Test that when activation notification is received, the group is actually activated from TraceCore
hgs
parents:
diff changeset
   577
 */
hgs
parents:
diff changeset
   578
void TestActivationNotification()
hgs
parents:
diff changeset
   579
    {
hgs
parents:
diff changeset
   580
    test.Printf(_L("In TestActivationNotification()\n"));
hgs
parents:
diff changeset
   581
    
hgs
parents:
diff changeset
   582
    // Create activation parameters
hgs
parents:
diff changeset
   583
    TcDriverParameters p; p.iComponentId = 5; p.iGroupId = 7;
hgs
parents:
diff changeset
   584
    TcDriverParameters p2; p2.iComponentId = 6; p2.iGroupId = 8;
hgs
parents:
diff changeset
   585
    
hgs
parents:
diff changeset
   586
    // Register activation notification listener
hgs
parents:
diff changeset
   587
    TraceTest.RegisterActivationNotification(p, ETrue);
hgs
parents:
diff changeset
   588
    
hgs
parents:
diff changeset
   589
    // Activate and test that we receive notification and it's in sync with TraceCore
hgs
parents:
diff changeset
   590
    for (TInt i=0;i<5;i++)
hgs
parents:
diff changeset
   591
        {
hgs
parents:
diff changeset
   592
        TraceTest.ActivateTrace(p);
hgs
parents:
diff changeset
   593
        TEST_KErrNone(TraceTest.CheckActivationNotificationOk(ETrue));
hgs
parents:
diff changeset
   594
        TraceTest.DeactivateTrace(p);
hgs
parents:
diff changeset
   595
        TEST_KErrNone(TraceTest.CheckActivationNotificationOk(ETrue));
hgs
parents:
diff changeset
   596
        }
hgs
parents:
diff changeset
   597
    
hgs
parents:
diff changeset
   598
    // Activate with different ID's, we shouldn't get notification
hgs
parents:
diff changeset
   599
    TraceTest.ActivateTrace(p2);
hgs
parents:
diff changeset
   600
    TEST_KErrNone(TraceTest.CheckActivationNotificationOk(EFalse));
hgs
parents:
diff changeset
   601
    
hgs
parents:
diff changeset
   602
    // Unregister activation notification listener
hgs
parents:
diff changeset
   603
    TraceTest.RegisterActivationNotification(p, EFalse);
hgs
parents:
diff changeset
   604
    }
hgs
parents:
diff changeset
   605
hgs
parents:
diff changeset
   606
/*
hgs
parents:
diff changeset
   607
 * Test RefreshActivations() method for kernel GIDs
hgs
parents:
diff changeset
   608
 * 
hgs
parents:
diff changeset
   609
 * The purpose of this test is to make sure TraceCore can refresh all activations with no error when
hgs
parents:
diff changeset
   610
 * different numbers of kernel GIDs have been activated
hgs
parents:
diff changeset
   611
 */
hgs
parents:
diff changeset
   612
void TestRefreshActivations()
hgs
parents:
diff changeset
   613
    {
hgs
parents:
diff changeset
   614
    test.Printf(_L("In TestRefreshActivations()\n"));
hgs
parents:
diff changeset
   615
hgs
parents:
diff changeset
   616
    test.Next(_L("Test RefreshActivations() when all kernel GIDs are deactivated\n"));
hgs
parents:
diff changeset
   617
hgs
parents:
diff changeset
   618
    //Deactivate all kernel GIDs
hgs
parents:
diff changeset
   619
    ActivateKernelTraces(EFalse);
hgs
parents:
diff changeset
   620
    
hgs
parents:
diff changeset
   621
    //deactivate and reactivate all active GIDs
hgs
parents:
diff changeset
   622
    TEST_KErrNone(TraceTest.RefreshActivations());    
hgs
parents:
diff changeset
   623
    
hgs
parents:
diff changeset
   624
    test.Next(_L("Test RefreshActivations() when all some kernel GIDs are activated\n"));
hgs
parents:
diff changeset
   625
hgs
parents:
diff changeset
   626
    //Activate some kernel GIDs
hgs
parents:
diff changeset
   627
    ActivateKernelTraces(ETrue,BTrace::EThreadIdentification);
hgs
parents:
diff changeset
   628
    ActivateKernelTraces(ETrue,BTrace::EPaging);
hgs
parents:
diff changeset
   629
    ActivateKernelTraces(ETrue,BTrace::EClientServer);
hgs
parents:
diff changeset
   630
    
hgs
parents:
diff changeset
   631
    //deactivate and reactivate all active GIDs
hgs
parents:
diff changeset
   632
    TEST_KErrNone(TraceTest.RefreshActivations());    
hgs
parents:
diff changeset
   633
hgs
parents:
diff changeset
   634
    //Deactivate the kernel GIDs previously activated
hgs
parents:
diff changeset
   635
    ActivateKernelTraces(EFalse,BTrace::EThreadIdentification);
hgs
parents:
diff changeset
   636
    ActivateKernelTraces(EFalse,BTrace::EPaging);
hgs
parents:
diff changeset
   637
    ActivateKernelTraces(EFalse,BTrace::EClientServer);
hgs
parents:
diff changeset
   638
hgs
parents:
diff changeset
   639
    test.Next(_L("Test RefreshActivations() when all kernel GIDs are activated\n"));
hgs
parents:
diff changeset
   640
hgs
parents:
diff changeset
   641
    //Activate all kernel GIDs
hgs
parents:
diff changeset
   642
    ActivateKernelTraces(ETrue);
hgs
parents:
diff changeset
   643
hgs
parents:
diff changeset
   644
    //deactivate and reactivate all active GIDs
hgs
parents:
diff changeset
   645
    TEST_KErrNone(TraceTest.RefreshActivations());    
hgs
parents:
diff changeset
   646
hgs
parents:
diff changeset
   647
    //Deactivate all kernel GIDs
hgs
parents:
diff changeset
   648
    ActivateKernelTraces(EFalse);
hgs
parents:
diff changeset
   649
    }
hgs
parents:
diff changeset
   650
hgs
parents:
diff changeset
   651
/*
hgs
parents:
diff changeset
   652
 * Utility function for generating a trace packet 
hgs
parents:
diff changeset
   653
 * until the test memory writer is available
hgs
parents:
diff changeset
   654
 * 
hgs
parents:
diff changeset
   655
 */
hgs
parents:
diff changeset
   656
void GenerateTraceData()
hgs
parents:
diff changeset
   657
    {
hgs
parents:
diff changeset
   658
hgs
parents:
diff changeset
   659
    //actual data that will be sent in trace tests    
hgs
parents:
diff changeset
   660
    for (TInt i = 0; i < 60; i++)
hgs
parents:
diff changeset
   661
        KTraceMultipartTestData[i] = KTestData + i;
hgs
parents:
diff changeset
   662
    }
hgs
parents:
diff changeset
   663
hgs
parents:
diff changeset
   664
GLDEF_C TInt E32Main()
hgs
parents:
diff changeset
   665
    {
hgs
parents:
diff changeset
   666
hgs
parents:
diff changeset
   667
    test.Title();
hgs
parents:
diff changeset
   668
hgs
parents:
diff changeset
   669
    test.Start(_L("Trace Core tests"));
hgs
parents:
diff changeset
   670
hgs
parents:
diff changeset
   671
    GenerateTraceData();
hgs
parents:
diff changeset
   672
hgs
parents:
diff changeset
   673
    // free the tcore related LDD's this is because 
hgs
parents:
diff changeset
   674
    // if one of the other tests say t_tracecoreostldd
hgs
parents:
diff changeset
   675
    // panics the LDDs will not be released
hgs
parents:
diff changeset
   676
    User::FreeLogicalDevice(_L("TraceCoreOstLdd"));
hgs
parents:
diff changeset
   677
    User::FreeLogicalDevice(_L("TcLdd"));
hgs
parents:
diff changeset
   678
hgs
parents:
diff changeset
   679
    TInt r = KErrNone;
hgs
parents:
diff changeset
   680
hgs
parents:
diff changeset
   681
    
hgs
parents:
diff changeset
   682
    test.Next(_L("Open test LDD"));
hgs
parents:
diff changeset
   683
    r = User::LoadLogicalDevice(RTraceCoreTest::Name());
hgs
parents:
diff changeset
   684
    TEST(r==KErrNone || r==KErrAlreadyExists);
hgs
parents:
diff changeset
   685
    r = TraceTest.Open();
hgs
parents:
diff changeset
   686
    TEST_KErrNone(r);
hgs
parents:
diff changeset
   687
hgs
parents:
diff changeset
   688
    ValidateAllFiltersInSync();
hgs
parents:
diff changeset
   689
    
hgs
parents:
diff changeset
   690
    ActivatePrintfHandler(EFalse);
hgs
parents:
diff changeset
   691
    
hgs
parents:
diff changeset
   692
    test.Next(_L("Test Basic TraceCore Activation"));
hgs
parents:
diff changeset
   693
    TestBasicActivation();
hgs
parents:
diff changeset
   694
    test.Next(_L("Test Basic TraceCore Deactivation"));
hgs
parents:
diff changeset
   695
    TestBasicDeactivation();
hgs
parents:
diff changeset
   696
    test.Next(_L("Negative Test TraceCore Activation"));
hgs
parents:
diff changeset
   697
    NegativeTestActivation();
hgs
parents:
diff changeset
   698
    test.Next(_L("Negative Test TraceCore Deactivation"));
hgs
parents:
diff changeset
   699
    NegativeTestDeactivation();
hgs
parents:
diff changeset
   700
    test.Next(_L("Test Multiple TraceCore Activation"));
hgs
parents:
diff changeset
   701
    TestMultipleActivation();
hgs
parents:
diff changeset
   702
    test.Next(_L("Test Multiple TraceCore Deactivation"));
hgs
parents:
diff changeset
   703
    TestMultipleDeactivation();
hgs
parents:
diff changeset
   704
    test.Next(_L("Test Big Trace"));
hgs
parents:
diff changeset
   705
    TestBigTrace();
hgs
parents:
diff changeset
   706
    test.Next(_L("Test Dropped Traces"));
hgs
parents:
diff changeset
   707
    TestDroppedTraces();
hgs
parents:
diff changeset
   708
    test.Next(_L("Test Activation Notification"));
hgs
parents:
diff changeset
   709
    TestActivationNotification();
hgs
parents:
diff changeset
   710
    test.Next(_L("Test Refresh Activations"));
hgs
parents:
diff changeset
   711
    TestRefreshActivations();
hgs
parents:
diff changeset
   712
hgs
parents:
diff changeset
   713
    
hgs
parents:
diff changeset
   714
    ActivatePrintfHandler(ETrue);
hgs
parents:
diff changeset
   715
    
hgs
parents:
diff changeset
   716
    ValidateAllFiltersInSync();
hgs
parents:
diff changeset
   717
    
hgs
parents:
diff changeset
   718
    test.Next(_L("Close LDD"));
hgs
parents:
diff changeset
   719
    TraceTest.Close();
hgs
parents:
diff changeset
   720
    User::FreeLogicalDevice(RTraceCoreTest::Name());
hgs
parents:
diff changeset
   721
hgs
parents:
diff changeset
   722
hgs
parents:
diff changeset
   723
    
hgs
parents:
diff changeset
   724
    test.Printf(_L("\nFinished Simple Activation/Deactivation tests in trace Core!!!"));
hgs
parents:
diff changeset
   725
    //test.Getch();
hgs
parents:
diff changeset
   726
    test.End();
hgs
parents:
diff changeset
   727
    test.Close();
hgs
parents:
diff changeset
   728
    return (0);
hgs
parents:
diff changeset
   729
    }