traceservices/tracefw/integ_test/ost/TEF/te_ostv2integsuite_functional/src/te_ostv2tracetestwrapper.cpp
changeset 0 08ec8eefde2f
child 6 5ffdb8f2067f
equal deleted inserted replaced
-1:000000000000 0:08ec8eefde2f
       
     1 // Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Example CTestStep derived implementation
       
    15 //
       
    16 
       
    17 
       
    18 
       
    19 /**
       
    20  @file te_tracecontroldefaultconfig.cpp
       
    21  @internalTechnology
       
    22 */
       
    23 #include "te_ostv2tracetestwrapper.h"
       
    24 #include "opensystemtrace_types.h"
       
    25 #include "te_ostv2tracetestwrapperTraces.h"
       
    26 
       
    27 const TUint32 KTestTInt1 =  0x123;
       
    28 const TUint32 KTestTInt2 =  0x456;
       
    29 
       
    30 _LIT(KTestDuplicates, "TestDuplicates");
       
    31 
       
    32 using namespace Ulogger; 
       
    33 CTOstv2TraceTestWrapper::~CTOstv2TraceTestWrapper()
       
    34 /**
       
    35  * Destructor
       
    36  */
       
    37 	{
       
    38 	}
       
    39 
       
    40 CTOstv2TraceTestWrapper::CTOstv2TraceTestWrapper()
       
    41 /**
       
    42  * Constructor
       
    43  */
       
    44 	{
       
    45 	}
       
    46 
       
    47 CTOstv2TraceTestWrapper* CTOstv2TraceTestWrapper::NewLC()
       
    48 	{
       
    49 	CTOstv2TraceTestWrapper* self = new (ELeave)CTOstv2TraceTestWrapper();
       
    50 	CleanupStack::PushL(self);
       
    51 	self->ConstructL();
       
    52 	return self;
       
    53 	}
       
    54 
       
    55 CTOstv2TraceTestWrapper* CTOstv2TraceTestWrapper::NewL()
       
    56 	{
       
    57 	CTOstv2TraceTestWrapper* self=CTOstv2TraceTestWrapper::NewLC();
       
    58 	CleanupStack::Pop(); // self;
       
    59 	return self;
       
    60 	}
       
    61 
       
    62 void CTOstv2TraceTestWrapper::ConstructL()
       
    63 	{
       
    64 	}
       
    65 
       
    66 TAny* CTOstv2TraceTestWrapper::GetObject()
       
    67 	{
       
    68 	return NULL;
       
    69 	}
       
    70 TBool CTOstv2TraceTestWrapper::DoCommandL(	const TTEFFunction& aCommand,
       
    71 											const TTEFSectionName& /*aSection*/, 
       
    72 											const TInt /*aAsyncErrorIndex*/)
       
    73 	{
       
    74 	
       
    75 	if(aCommand == KTestDuplicates())
       
    76 		{
       
    77 		
       
    78 		
       
    79 		INFO_PRINTF1(_L("CTOstv2TraceTestWrapper::DoCommandL Testing duplicates"));
       
    80 		
       
    81 		INFO_PRINTF1(_L("Opening Ulogger connection"));
       
    82 		RULogger logger;
       
    83 		TInt result=logger.Connect();
       
    84 		INFO_PRINTF2(_L("Connection to Ulogger: %d, attempt: 1"), result);
       
    85 		if (result!=KErrNone)
       
    86 			 {
       
    87 			 INFO_PRINTF1(_L("Connection to Ulogger failed. Will try to connect max. 10 times"));
       
    88 			 for (TInt i=2; i<12;i++)
       
    89 				 {
       
    90 					 User::After(1000);
       
    91 					 result = logger.Connect();
       
    92 					 INFO_PRINTF3(_L("Connection to Ulogger: %d, attempt: %d"), result, i);
       
    93 					 if (result==KErrNone)
       
    94 					 {
       
    95 					 break;
       
    96 					 }
       
    97 				 }
       
    98 			 }
       
    99 		
       
   100 	
       
   101 		// clear the config file
       
   102 		CClearConfig configIni;
       
   103 		configIni.Clear(logger);
       
   104 
       
   105 		// extract the user ids from the values generated by tracecompiler
       
   106 		const TUint8 USER_DEFINED_GID_1 = TEST_OSTTRACEWRAPPER7 >> 16;
       
   107 		const TUint8 USER_DEFINED_GID_2 = TEST_OSTTRACEWRAPPER8 >> 16;
       
   108 		
       
   109 		// switch on primary filtering mechanism
       
   110 		CArrayFixFlat<TUint8> *setprimfilter = new (ELeave)CArrayFixFlat<TUint8>(22);
       
   111 		setprimfilter->AppendL(KGroupId);
       
   112 		setprimfilter->AppendL(TRACE_FATAL); 
       
   113 		setprimfilter->AppendL(TRACE_DUMP);
       
   114 		setprimfilter->AppendL(TRACE_DEBUG);				
       
   115 		setprimfilter->AppendL(USER_DEFINED_GID_1);
       
   116 		setprimfilter->AppendL(USER_DEFINED_GID_2);
       
   117 		
       
   118 		result = logger.SetPrimaryFiltersEnabled(*setprimfilter, ETrue);
       
   119 				
       
   120 		if(result != KErrNone)
       
   121 			{
       
   122 			ERR_PRINTF2(_L("Failed to set Ulogger primary filters result(%d"), result);
       
   123 			SetBlockResult(EFail);	
       
   124 			}
       
   125 				
       
   126 		// switch off secondary filtering
       
   127 		result = logger.SetSecondaryFilteringEnabled(EFalse);
       
   128 		if(result != KErrNone)
       
   129 			{
       
   130 			ERR_PRINTF2(_L("Failed to set Ulogger secondary filters result(%d"), result);
       
   131 			SetBlockResult(EFail);	
       
   132 			}
       
   133 		
       
   134 		delete setprimfilter;
       
   135 		setprimfilter = NULL;
       
   136 
       
   137 		
       
   138 		// setup output file
       
   139 		_LIT(KLogFilename, "C:\\logs\\duplicate_trace_test.utf");
       
   140 		EmptyFile(KLogFilename);
       
   141 		// setup ulogger to write to the file using its output plugin
       
   142 		_LIT8(KTextmedia,"uloggerfileplugin");
       
   143 		TPtrC8 mediaptr(KTextmedia);
       
   144 		result=logger.ActivateOutputPlugin(mediaptr);
       
   145 		if(result == KErrNone)
       
   146 			{
       
   147 			INFO_PRINTF1(_L("file set as active output plugin ok"));
       
   148 			TPluginConfiguration pluginConfig;
       
   149 			_LIT(KTextsetting, "output_path");
       
   150 			pluginConfig.SetKey(KTextsetting);
       
   151 			pluginConfig.SetValue(KLogFilename());
       
   152 			result=logger.SetPluginConfigurations(mediaptr, pluginConfig);
       
   153 			if(result == KErrNone)
       
   154 				{
       
   155 				INFO_PRINTF1(_L("output plugin settings set ok"));
       
   156 
       
   157 				result=logger.Start();
       
   158 				if(result == KErrNone)
       
   159 					{	
       
   160 					// add some traces TRACE_DEBUG & TRACE_DUMP equate to the same numeric value
       
   161 					
       
   162 					AddTraceHelper((TGroupId)TRACE_FATAL, (TTraceId)TEST_OSTTRACEWRAPPER1, KTestTInt1);
       
   163 					OstTrace1(TRACE_FATAL, 	TEST_OSTTRACEWRAPPER1, "CTOstv2TraceTestWrapper TRACE_FATAL test 1 KTestTInt1 (%d)" , KTestTInt1);
       
   164 					
       
   165 					
       
   166 					AddTraceHelper((TGroupId)TRACE_DEBUG, (TTraceId)TEST_OSTTRACEWRAPPER2, KTestTInt1);
       
   167 					OstTrace1(TRACE_DEBUG, 	TEST_OSTTRACEWRAPPER2, "CTOstv2TraceTestWrapper TRACE_DEBUG test 1 KTestTInt1 (%d)" , KTestTInt1);
       
   168 					
       
   169 					AddTraceHelper((TGroupId)TRACE_DUMP, (TTraceId)TEST_OSTTRACEWRAPPER3, KTestTInt1);
       
   170 					OstTrace1(TRACE_DUMP, 	TEST_OSTTRACEWRAPPER3, "CTOstv2TraceTestWrapper TRACE_DUMP  test 1 KTestTInt1 (%d)" , KTestTInt1);
       
   171 
       
   172 					AddTraceHelper((TGroupId)TRACE_FATAL, (TTraceId)TEST_OSTTRACEWRAPPER4, KTestTInt2);
       
   173 					OstTrace1(TRACE_FATAL, 	TEST_OSTTRACEWRAPPER4, "CTOstv2TraceTestWrapper TRACE_FATAL test 2 KTestTInt2 (%d)" , KTestTInt2);
       
   174 					
       
   175 					AddTraceHelper((TGroupId)TRACE_DEBUG, (TTraceId)TEST_OSTTRACEWRAPPER5, KTestTInt2);
       
   176 					OstTrace1(TRACE_DEBUG, 	TEST_OSTTRACEWRAPPER5, "CTOstv2TraceTestWrapper TRACE_DEBUG test 2 KTestTInt2 (%d)" , KTestTInt2);
       
   177 
       
   178 					AddTraceHelper((TGroupId)TRACE_DUMP, (TTraceId)TEST_OSTTRACEWRAPPER6, KTestTInt2);
       
   179 					OstTrace1(TRACE_DUMP, TEST_OSTTRACEWRAPPER6, "CTOstv2TraceTestWrapper TRACE_DUMP  test 2 KTestTInt2 (%d)" , KTestTInt2);					
       
   180 			
       
   181 					AddTraceHelper((TGroupId)USER_DEFINED_GID_1, (TTraceId)TEST_OSTTRACEWRAPPER7, KTestTInt1);
       
   182 					OstTrace1(USER_DEFINED_GID_1, TEST_OSTTRACEWRAPPER7, "CTOstv2TraceTestWrapper USER_DEFINED_GID_1  test 2 KTestTInt2 (%d)" , KTestTInt1);					
       
   183 
       
   184 					AddTraceHelper((TGroupId)USER_DEFINED_GID_2, (TTraceId)TEST_OSTTRACEWRAPPER8, KTestTInt2);
       
   185 					OstTrace1(USER_DEFINED_GID_2, TEST_OSTTRACEWRAPPER8, "CTOstv2TraceTestWrapper USER_DEFINED_GID_1  test 2 KTestTInt2 (%d)" , KTestTInt2);					
       
   186 					
       
   187 					result=logger.Stop();
       
   188 					
       
   189 					if(result == KErrNone)
       
   190 						{
       
   191 						SetBlockResult(CheckResults(KLogFilename()) == KErrNone ? EPass : EFail);
       
   192 						}					
       
   193 					}
       
   194 				else
       
   195 					{
       
   196 					INFO_PRINTF2(_L("ulogger start returns error %d"), result);	
       
   197 					}
       
   198 				}
       
   199 			else
       
   200 				{
       
   201 				INFO_PRINTF2(_L("setting output plugin settings failed with err %d"), result);
       
   202 				}			
       
   203 			}
       
   204 		else
       
   205 			{
       
   206 			INFO_PRINTF2(_L("add file as output plugin failed with err %d"), result);
       
   207 			}
       
   208 		}
       
   209 		return ETrue;
       
   210 	}
       
   211 
       
   212 
       
   213 TInt CTOstv2TraceTestWrapper::CheckResults(const TDesC& aLogFilename)
       
   214 	{
       
   215 	// read the logged traces from the log file	
       
   216 	TInt  err = ReadFromLogFile(aLogFilename);
       
   217 	if(err == KErrNone)
       
   218 		{
       
   219 		err = CompareTraces();
       
   220 		if(err == KErrNone)
       
   221 			{
       
   222 			
       
   223 			}
       
   224 		else{
       
   225 			ERR_PRINTF2(_L("CompareTraces returned err (%d)"), err);
       
   226 			}
       
   227 		}
       
   228 	else
       
   229 		{
       
   230 		ERR_PRINTF2(_L("ReadFromLogFile returned err (%d)"), err);
       
   231 		}
       
   232 	
       
   233 	return err;
       
   234 	}
       
   235 
       
   236 
       
   237 
       
   238 void CTOstv2TraceTestWrapper::CTOstv2TraceTestWrapper::AddTraceHelper(const TGroupId aGroupId, const TTraceId aTraceId, TUint32 aValue)
       
   239 	{	
       
   240 	if( CreateTraceObject(KOstTraceComponentID, aGroupId, EAddThreadIdentification , ENoProgramCounter, iSentTraces))
       
   241 		{
       
   242 		TTraceConfigs& config = *iSentTraces[iSentTraces.Count()-1];
       
   243 		TTraceConfigsOperator::SetData(config, aValue );					
       
   244 		TTraceConfigsOperator::SetHeader(config, aGroupId, KOstTraceComponentID, EAddThreadIdentification , ENoProgramCounter, aTraceId);
       
   245 		}
       
   246 	else
       
   247 		{
       
   248 		ERR_PRINTF2(_L("CreateTraceObject failed with for traceid (%d)"),  aTraceId);
       
   249 		SetBlockResult(EFail);
       
   250 		}	
       
   251 	}