tracesrv/tracecompiler/internal/TraceCompiler_Test/TraceCompilerTester/src/TraceCompilerTesterAdvanced.cpp
changeset 62 1c2bb2fc7c87
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tracesrv/tracecompiler/internal/TraceCompiler_Test/TraceCompilerTester/src/TraceCompilerTesterAdvanced.cpp	Tue Oct 26 16:20:32 2010 +0300
@@ -0,0 +1,413 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#include <nkern.h>
+
+#include "TraceCompilerTesterAdvanced.h"
+#include "TraceCompilerTesterCommon1.h"
+#include "TraceCompilerTesterCommon2.h"
+
+#include "OstTraceDefinitions.h"
+#ifdef OST_TRACE_COMPILER_IN_USE
+#include "TraceCompilerTesterAdvancedTraces.h"
+#include "TraceCompilerTesterCommon2Traces.h"
+#endif
+
+// Define group IDs. If TraceCompiler is missing, define these to get the code to compile.
+// However, component still won't work properly.
+#ifdef OST_TRACE_COMPILER_IN_USE
+#define SHORT_TRACE_TEST ASCII1 >> 16
+#define LONG_TRACE_TEST ASCII300 >> 16
+#define POINTER_PARAMETER_TEST POINTER_PARAMETER_TRACE1 >> 16
+#define INCLUDED_NON_SOURCE_FILE_TEST HELLO_WORLD >> 16
+#define TRACE_FLOW 0x7
+#define KEKKONEN TEXT1 >> 16
+#define TRACE_STATE 0x5
+#define TRACE_DATA TRACE_DATA_TRACE >> 16
+#define POST_CODE_TEST POST1 >> 16
+#else
+#define SHORT_TRACE_TEST
+#define LONG_TRACE_TEST
+#define POINTER_PARAMETER_TEST
+#define INCLUDED_NON_SOURCE_FILE_TEST 
+#define TRACE_FLOW
+#define KEKKONEN
+#define TRACE_STATE
+#define TRACE_DATA
+#define POST_CODE_TEST
+#endif
+
+
+//- Local constants ---------------------------------------------------------
+
+const TUint32 KComponentID = 0x20011111;
+
+_LIT8(buf1, "1");
+_LIT8(buf2, "12");
+_LIT8(buf3, "123");
+_LIT8(buf4, "1234");
+_LIT8(buf60, "123456789_123456789_123456789_123456789_123456789_123456789X");
+_LIT8(buf300, "123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789X");
+_LIT8(buf333, "123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_12X");
+_LIT8(buf512, "123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789Y1X");
+_LIT8(buf600, "123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789X");
+ 
+//- Macros ------------------------------------------------------------------
+
+
+//- Member Functions --------------------------------------------------------
+
+/**
+ * Constructor
+ */
+DTraceCompilerTesterAdvanced::DTraceCompilerTesterAdvanced()
+	{
+    }
+	
+/**
+ * EnergyMonitor Destructor
+ */
+DTraceCompilerTesterAdvanced::~DTraceCompilerTesterAdvanced()
+    {
+    }
+
+/**
+ * EnergyMonitor second-phase constructor
+ *
+ * @param
+ * @return System-wide error code
+ */
+TInt DTraceCompilerTesterAdvanced::Construct()
+    {
+    Kern::Printf( "-------------- DTraceCompilerTesterAdvanced::Construct ----------------" );    
+    TInt ret( KErrNone );
+    
+    // Register notification receiver by using just component ID
+    RegisterNotificationReceiver( KComponentID);
+    
+    return ret;
+    }
+
+/**
+ * Callback function for Trace Activation
+ * 
+ * @param aComponentId
+ * @param aGroupId         
+ */   
+void DTraceCompilerTesterAdvanced::TraceActivated( TUint32 aComponentId, TUint16 aGroupId  )
+    {
+    
+    Kern::Printf( "DTraceCompilerTesterAdvanced::TraceActivated - ComponentId = 0x%x, GroupId = 0x%x", aComponentId, aGroupId ); 
+    
+    if (aGroupId == POINTER_PARAMETER_TEST)
+        {
+        // Print out pointer values of two NTimers by using %p tag 
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Pointer Parameter Test START----------------" ); 
+        NTimer* myNTimer1 = new NTimer();
+        NTimer* myNTimer2 = new NTimer();
+        const NTimer* myNTimer3 = new NTimer();
+        OstTraceExt2( POINTER_PARAMETER_TEST, POINTER_PARAMETER_TRACE1, "Print out pointer values of two NTimers;myNTimer1=%p;myNTimer2=%p", myNTimer1, myNTimer2 );
+        OstTraceExt1( POINTER_PARAMETER_TEST, POINTER_PARAMETER_TRACE2, "Print out pointer values of one const NTimers;myNTimer3=%p", myNTimer3 );
+        delete myNTimer1;
+        delete myNTimer2;
+        delete myNTimer3;
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Pointer Parameter Test END----------------" ); 
+        }
+    else if (aGroupId == LONG_TRACE_TEST)
+        {
+        // Print out n times traces those lengths are 60, 300, 512 and 600 characters.
+		// Print out also some traces those parameter total length is more than 512
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test START----------------" ); 
+        
+        TInt i=0;
+	    TUint numberOfTraces = 1;
+	    TInt32 freq = NKern::FastCounterFrequency();
+        TUint32 startTime;
+	    TUint32 endTime;
+	    TUint32 time;
+	    
+	    TUint timeTestNumber1 = 0;
+        TUint timeTestNumber2 = 0;
+        TUint timeTestNumber3 = 0;
+        TUint timeTestNumber4 = 0;
+        TUint timeTestNumber5 = 0;
+        TUint timeTestNumber6 = 0;
+        TUint timeTestNumber7 = 0;
+        // ---------------------------- Ascii60 ----------------------------	    
+	    startTime = NKern::FastCounter();
+	    Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test : Ascii60----------------" ); 	    
+	    for (i=0; i < numberOfTraces; i++)
+	        {
+            OstTraceExt1( LONG_TRACE_TEST, ASCII60, "Ascii60: %s", buf60);
+            }
+        endTime = NKern::FastCounter();
+        time = (endTime - startTime) * 1000 / freq;
+
+        timeTestNumber1 = time;
+        // ---------------------------- Ascii60 ----------------------------
+        
+	    // ---------------------------- Ascii300 ----------------------------	    
+	    startTime = NKern::FastCounter();
+	    Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test : Ascii300----------------" ); 
+	    for (i=0; i < numberOfTraces; i++)
+	        {
+            OstTraceExt1( LONG_TRACE_TEST, ASCII300, "Ascii300: %s", buf300);
+            }
+        endTime = NKern::FastCounter();
+        time = (endTime - startTime) * 1000 / freq;
+
+        timeTestNumber2 = time;
+        // ---------------------------- Ascii300 ----------------------------
+        
+        // ---------------------------- Ascii512 ----------------------------	    
+	    startTime = NKern::FastCounter();
+	    Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test : Ascii512----------------" ); 
+	    for (i=0; i < numberOfTraces; i++)
+	        {
+            OstTraceExt1( LONG_TRACE_TEST, ASCII512, "Ascii512: %s", buf512);
+            }
+        endTime = NKern::FastCounter();
+        time = (endTime - startTime) * 1000 / freq;
+
+        timeTestNumber3 = time;
+        // ---------------------------- Ascii512 ----------------------------            
+
+	    // ---------------------------- Ascii600 ----------------------------	    
+	    startTime = NKern::FastCounter();
+	    Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test : Ascii600----------------" ); 
+	    for (i=0; i < numberOfTraces; i++)
+	        {
+            OstTraceExt1( LONG_TRACE_TEST, ASCII600, "Ascii600: %s", buf600);
+            }
+        endTime = NKern::FastCounter();
+        time = (endTime - startTime) * 1000 / freq;
+
+        timeTestNumber4 = time;
+        // ---------------------------- Ascii600 ----------------------------    
+
+        // ---------------------------- Ascii300 + Ascii512 ----------------------------       
+        startTime = NKern::FastCounter();
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test : Ascii300 + Ascii512----------------" ); 
+        for (i=0; i < numberOfTraces; i++)
+            {
+            OstTraceExt2( LONG_TRACE_TEST, ASCII300_ASCII512, "Ascii300: %s Ascii512: %s", buf300, buf512);
+            }
+        endTime = NKern::FastCounter();
+        time = (endTime - startTime) * 1000 / freq;
+
+        timeTestNumber5 = time;
+        // ---------------------------- Ascii300 + Ascii512 ----------------------------            
+ 
+        // ---------------------------- Ascii600 + Ascii300 ----------------------------       
+        startTime = NKern::FastCounter();
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test : Ascii600 + Ascii300----------------" ); 
+        for (i=0; i < numberOfTraces; i++)
+            {
+            OstTraceExt2( LONG_TRACE_TEST, ASCII600_ASCII300, "Ascii600: %s Ascii300: %s", buf600, buf300);
+            }
+        endTime = NKern::FastCounter();
+        time = (endTime - startTime) * 1000 / freq;
+
+        timeTestNumber6 = time;
+        // ---------------------------- Ascii600 + Ascii300 ----------------------------
+        
+        // ---------------------------- Ascii333 + Ascii333 ----------------------------       
+        startTime = NKern::FastCounter();
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test : Ascii333 + Ascii333----------------" ); 
+        for (i=0; i < numberOfTraces; i++)
+            {
+            OstTraceExt2( LONG_TRACE_TEST, ASCII333_ASCII333, "Ascii333: %s Ascii333: %s", buf333, buf333);
+            }
+        endTime = NKern::FastCounter();
+        time = (endTime - startTime) * 1000 / freq;
+
+        timeTestNumber7 = time;
+        // ---------------------------- Ascii333 + Ascii333 ----------------------------       
+        
+		Kern::Printf( "--------------TraceCompilerTesterAdvanced----------------" ); 
+        Kern::Printf( "Ascii60: %d", timeTestNumber1 );
+        Kern::Printf( "Ascii300: %d", timeTestNumber2 ); 
+        Kern::Printf( "Ascii512: %d", timeTestNumber3 ); 
+        Kern::Printf( "Ascii600: %d", timeTestNumber4 );
+        Kern::Printf( "Ascii300 + Ascii512: %d", timeTestNumber5 );
+        Kern::Printf( "Ascii600 + Ascii300: %d", timeTestNumber6 );
+        Kern::Printf( "Ascii333 + Ascii333: %d", timeTestNumber7 );
+		Kern::Printf( "--------------TraceCompilerTesterAdvanced----------------" );         
+      
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Long Trace Test END----------------" ); 
+        }
+    else if (aGroupId == SHORT_TRACE_TEST)
+        {
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Short Trace Test START----------------" ); 
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Short Trace Test : Ascii1----------------" ); 
+        OstTraceExt1( SHORT_TRACE_TEST, ASCII1, "Ascii1: %s", buf1);
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Short Trace Test : Ascii2----------------" ); 
+        OstTraceExt1( SHORT_TRACE_TEST, ASCII2, "Ascii2: %s", buf2);
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Short Trace Test : Ascii3----------------" ); 
+        OstTraceExt1( SHORT_TRACE_TEST, ASCII3, "Ascii3: %s", buf3);
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Short Trace Test : Ascii4----------------" ); 
+        OstTraceExt1( SHORT_TRACE_TEST, ASCII4, "Ascii4: %s", buf4);
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Short Trace Test : Ascii1 + Acii2----------------" ); 
+        OstTraceExt2( SHORT_TRACE_TEST, ASCII5, "Ascii1: %s Ascii2: %s", buf1, buf2);
+
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Short Trace Test END----------------" ); 
+        }
+    else if (aGroupId == INCLUDED_NON_SOURCE_FILE_TEST)
+        {
+        // Print out traces from included non-source file that is defined in trace.properties file
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Included Non-Source File Test START----------------" );
+        
+        this->HelloWorld();
+        this->HelloMoon();
+        
+        TUint32 value3 = GetBigValue1000();
+        TUint32 value4 = GetBigValue2000();
+        
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Included Non-Source File Test END----------------" );
+                          
+        }
+    else if (aGroupId == TRACE_FLOW)
+        {
+        OstTrace0(TRACE_FLOW, TEST_TRACE_2, "Test OLD TraceCompiler");
+        // This test can also use to test function parameters
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Common Source File Test START----------------");
+        DTraceCompilerTesterCommon1* common1 = new DTraceCompilerTesterCommon1();
+        TInt32 sum = common1->SumValues(-1, -2, 100, 200);
+        delete common1;        
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Common Source File Test END----------------");
+        }
+    else if (aGroupId == KEKKONEN)
+        {
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Kekkonen START----------------");
+        DTraceCompilerTesterCommon2* common2 = new DTraceCompilerTesterCommon2();
+        common2->Kekkonen();
+        delete common2;
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Kekkonen END----------------");
+        }
+    else if (aGroupId == TRACE_STATE)
+        {
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced State Trace Test START----------------");
+        OstTraceState0(STATE_TRACE_0, "Kone1", "Running");
+        OstTraceState1(STATE_TRACE_1, "Kone2", "Stopped", this);
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced  State Trace Test  END----------------");
+        }
+    else if (aGroupId == TRACE_DATA)
+        {
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Data Trace Test START----------------");
+        
+        TBuf8<601> data(buf600);
+        OstTraceData( TRACE_DATA, TRACE_DATA_TRACE,
+                    "DTraceCoreXtiIf::DebugPrintMsg - Msg via XTI IF 0x%{hex8[]}", data.Ptr(), data.Size() );
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced Data Trace Test  END----------------");
+        }
+    else if (aGroupId == POST_CODE_TEST)
+        {
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced POST Code Trace Test START----------------");
+        OstTrace0(POST_CODE_TEST, POST1, "Print some POST code traces");
+        Kern::Printf("[POST][X-Loader][Started][OK]");
+        Kern::Printf("[POST][BootUp][Reset reason][PowerOn]");
+        Kern::NanoWait(50000000);
+        Kern::Printf("[POST][X-Loader][Authenticate][OK]");
+        Kern::NanoWait(100000000);
+        Kern::Printf("[POST][X-Loader][load][OK]");
+        Kern::NanoWait(100000000);
+        Kern::Printf("[POST][X-Loader][Authenticate][OK]");
+        Kern::NanoWait(700000000);
+        Kern::Printf("[POST][X-Loader][load][OK]");
+        Kern::NanoWait(50000000);
+        Kern::Printf("[POST][X-Loader][load][OK]");
+        Kern::NanoWait(50000000);
+        Kern::Printf("[POST][X-Loader][load][OK]");
+        Kern::NanoWait(50000000);
+        Kern::Printf("[POST][X-Loader][Authenticate][OK]");
+        Kern::NanoWait(200000000);
+        Kern::Printf("[POST][Boot strap][Started][OK]");
+        Kern::NanoWait(10000000);
+        Kern::Printf("[POST][Estart][started][OK]");
+        Kern::NanoWait(10000000);
+        Kern::Printf("[POST][Estart][CompositeFileSys.][OK]");
+        Kern::NanoWait(500000000);
+        Kern::Printf("[POST][Mount][Drive][OK]");
+        Kern::NanoWait(200000000);
+        Kern::Printf("[POST][Mount][Drive][OK]");
+        Kern::NanoWait(200000000);
+        Kern::Printf("[POST][Estart][ISC API start][OK]");
+        Kern::NanoWait(300000000);
+        Kern::Printf("[POST][Estart][userdisk format][No]");
+        Kern::NanoWait(10000000);
+        Kern::Printf("[POST][Estart][secenv start][OK]");
+        Kern::NanoWait(20000000);
+        Kern::Printf("[POST][Estart][startup mode][Local]");
+        Kern::NanoWait(10000000);
+        Kern::Printf("[POST][Estart][Language selection][OK]");
+        Kern::NanoWait(200000000);
+        Kern::Printf("[POST][SelfTest][Started][FAIL][KErrOutOfMemory]");
+        Kern::NanoWait(200000000);
+        Kern::Printf("[POST][BT][Started][OK]");
+        Kern::NanoWait(800000000);
+        Kern::Printf("[POST][WLAN][Started][OK]");
+        Kern::NanoWait(800000000);
+        Kern::Printf("[POST][Display][Started][OK]");
+        Kern::NanoWait(800000000);
+        Kern::Printf("[POST][Camera][Started][OK]");
+        Kern::NanoWait(80000000);
+        Kern::Printf("[POST][mc_kernelagent][ExtensionInit0][OK]");
+        Kern::NanoWait(100000000);
+        Kern::Printf("[POST][mc_sender][Pre-init][OK]");
+        Kern::NanoWait(100000000);
+        Kern::Printf("[POST][mc_useragent][MobileCrashWriter init][OK]");        
+        Kern::Printf( "--------------TraceCompilerTesterAdvanced POST Code Trace Test END----------------");
+        }
+    }
+		
+/**
+ * Callback function for Trace Deactivation
+ * 
+ * @param aComponentId
+ * @param aGroupId     
+ */  
+void DTraceCompilerTesterAdvanced::TraceDeactivated( TUint32 aComponentId, TUint16 aGroupId  )
+    {
+    Kern::Printf( "DTraceCompilerTesterAdvanced::TraceDeactivated - ComponentId = 0x%x, GroupId = 0x%x", aComponentId, aGroupId ); 
+    }
+
+
+/**
+ * The entry point for a standard extension. Creates Long Trace Tester extension.
+ *
+ *  @return KErrNone, if successful
+ */
+DECLARE_STANDARD_EXTENSION()    //lint !e960 !e1717 ¤/#((& Symbian
+    {
+    
+    TInt ret( KErrNone );
+    
+    DTraceCompilerTesterAdvanced* longTraceTester = new DTraceCompilerTesterAdvanced();
+
+    if( longTraceTester == NULL )
+        {
+        ret = KErrNoMemory;
+        }    
+    
+    if ( ret == KErrNone  )
+        {
+        // construct instance
+        ret = longTraceTester->Construct();
+        }
+    
+    return ret;
+    }
+// End of File