traceservices/tracefw/integ_test/ost/TEF/te_ostv2integsuite_functional/src/te_ostv2tracetestwrapper.cpp
changeset 0 08ec8eefde2f
child 6 5ffdb8f2067f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/traceservices/tracefw/integ_test/ost/TEF/te_ostv2integsuite_functional/src/te_ostv2tracetestwrapper.cpp	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,251 @@
+// Copyright (c) 2007-2009 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:
+// Example CTestStep derived implementation
+//
+
+
+
+/**
+ @file te_tracecontroldefaultconfig.cpp
+ @internalTechnology
+*/
+#include "te_ostv2tracetestwrapper.h"
+#include "opensystemtrace_types.h"
+#include "te_ostv2tracetestwrapperTraces.h"
+
+const TUint32 KTestTInt1 =  0x123;
+const TUint32 KTestTInt2 =  0x456;
+
+_LIT(KTestDuplicates, "TestDuplicates");
+
+using namespace Ulogger; 
+CTOstv2TraceTestWrapper::~CTOstv2TraceTestWrapper()
+/**
+ * Destructor
+ */
+	{
+	}
+
+CTOstv2TraceTestWrapper::CTOstv2TraceTestWrapper()
+/**
+ * Constructor
+ */
+	{
+	}
+
+CTOstv2TraceTestWrapper* CTOstv2TraceTestWrapper::NewLC()
+	{
+	CTOstv2TraceTestWrapper* self = new (ELeave)CTOstv2TraceTestWrapper();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTOstv2TraceTestWrapper* CTOstv2TraceTestWrapper::NewL()
+	{
+	CTOstv2TraceTestWrapper* self=CTOstv2TraceTestWrapper::NewLC();
+	CleanupStack::Pop(); // self;
+	return self;
+	}
+
+void CTOstv2TraceTestWrapper::ConstructL()
+	{
+	}
+
+TAny* CTOstv2TraceTestWrapper::GetObject()
+	{
+	return NULL;
+	}
+TBool CTOstv2TraceTestWrapper::DoCommandL(	const TTEFFunction& aCommand,
+											const TTEFSectionName& /*aSection*/, 
+											const TInt /*aAsyncErrorIndex*/)
+	{
+	
+	if(aCommand == KTestDuplicates())
+		{
+		
+		
+		INFO_PRINTF1(_L("CTOstv2TraceTestWrapper::DoCommandL Testing duplicates"));
+		
+		INFO_PRINTF1(_L("Opening Ulogger connection"));
+		RULogger logger;
+		TInt result=logger.Connect();
+		INFO_PRINTF2(_L("Connection to Ulogger: %d, attempt: 1"), result);
+		if (result!=KErrNone)
+			 {
+			 INFO_PRINTF1(_L("Connection to Ulogger failed. Will try to connect max. 10 times"));
+			 for (TInt i=2; i<12;i++)
+				 {
+					 User::After(1000);
+					 result = logger.Connect();
+					 INFO_PRINTF3(_L("Connection to Ulogger: %d, attempt: %d"), result, i);
+					 if (result==KErrNone)
+					 {
+					 break;
+					 }
+				 }
+			 }
+		
+	
+		// clear the config file
+		CClearConfig configIni;
+		configIni.Clear(logger);
+
+		// extract the user ids from the values generated by tracecompiler
+		const TUint8 USER_DEFINED_GID_1 = TEST_OSTTRACEWRAPPER7 >> 16;
+		const TUint8 USER_DEFINED_GID_2 = TEST_OSTTRACEWRAPPER8 >> 16;
+		
+		// switch on primary filtering mechanism
+		CArrayFixFlat<TUint8> *setprimfilter = new (ELeave)CArrayFixFlat<TUint8>(22);
+		setprimfilter->AppendL(KGroupId);
+		setprimfilter->AppendL(TRACE_FATAL); 
+		setprimfilter->AppendL(TRACE_DUMP);
+		setprimfilter->AppendL(TRACE_DEBUG);				
+		setprimfilter->AppendL(USER_DEFINED_GID_1);
+		setprimfilter->AppendL(USER_DEFINED_GID_2);
+		
+		result = logger.SetPrimaryFiltersEnabled(*setprimfilter, ETrue);
+				
+		if(result != KErrNone)
+			{
+			ERR_PRINTF2(_L("Failed to set Ulogger primary filters result(%d"), result);
+			SetBlockResult(EFail);	
+			}
+				
+		// switch off secondary filtering
+		result = logger.SetSecondaryFilteringEnabled(EFalse);
+		if(result != KErrNone)
+			{
+			ERR_PRINTF2(_L("Failed to set Ulogger secondary filters result(%d"), result);
+			SetBlockResult(EFail);	
+			}
+		
+		delete setprimfilter;
+		setprimfilter = NULL;
+
+		
+		// setup output file
+		_LIT(KLogFilename, "C:\\logs\\duplicate_trace_test.utf");
+		EmptyFile(KLogFilename);
+		// setup ulogger to write to the file using its output plugin
+		_LIT8(KTextmedia,"uloggerfileplugin");
+		TPtrC8 mediaptr(KTextmedia);
+		result=logger.ActivateOutputPlugin(mediaptr);
+		if(result == KErrNone)
+			{
+			INFO_PRINTF1(_L("file set as active output plugin ok"));
+			TPluginConfiguration pluginConfig;
+			_LIT(KTextsetting, "output_path");
+			pluginConfig.SetKey(KTextsetting);
+			pluginConfig.SetValue(KLogFilename());
+			result=logger.SetPluginConfigurations(mediaptr, pluginConfig);
+			if(result == KErrNone)
+				{
+				INFO_PRINTF1(_L("output plugin settings set ok"));
+
+				result=logger.Start();
+				if(result == KErrNone)
+					{	
+					// add some traces TRACE_DEBUG & TRACE_DUMP equate to the same numeric value
+					
+					AddTraceHelper((TGroupId)TRACE_FATAL, (TTraceId)TEST_OSTTRACEWRAPPER1, KTestTInt1);
+					OstTrace1(TRACE_FATAL, 	TEST_OSTTRACEWRAPPER1, "CTOstv2TraceTestWrapper TRACE_FATAL test 1 KTestTInt1 (%d)" , KTestTInt1);
+					
+					
+					AddTraceHelper((TGroupId)TRACE_DEBUG, (TTraceId)TEST_OSTTRACEWRAPPER2, KTestTInt1);
+					OstTrace1(TRACE_DEBUG, 	TEST_OSTTRACEWRAPPER2, "CTOstv2TraceTestWrapper TRACE_DEBUG test 1 KTestTInt1 (%d)" , KTestTInt1);
+					
+					AddTraceHelper((TGroupId)TRACE_DUMP, (TTraceId)TEST_OSTTRACEWRAPPER3, KTestTInt1);
+					OstTrace1(TRACE_DUMP, 	TEST_OSTTRACEWRAPPER3, "CTOstv2TraceTestWrapper TRACE_DUMP  test 1 KTestTInt1 (%d)" , KTestTInt1);
+
+					AddTraceHelper((TGroupId)TRACE_FATAL, (TTraceId)TEST_OSTTRACEWRAPPER4, KTestTInt2);
+					OstTrace1(TRACE_FATAL, 	TEST_OSTTRACEWRAPPER4, "CTOstv2TraceTestWrapper TRACE_FATAL test 2 KTestTInt2 (%d)" , KTestTInt2);
+					
+					AddTraceHelper((TGroupId)TRACE_DEBUG, (TTraceId)TEST_OSTTRACEWRAPPER5, KTestTInt2);
+					OstTrace1(TRACE_DEBUG, 	TEST_OSTTRACEWRAPPER5, "CTOstv2TraceTestWrapper TRACE_DEBUG test 2 KTestTInt2 (%d)" , KTestTInt2);
+
+					AddTraceHelper((TGroupId)TRACE_DUMP, (TTraceId)TEST_OSTTRACEWRAPPER6, KTestTInt2);
+					OstTrace1(TRACE_DUMP, TEST_OSTTRACEWRAPPER6, "CTOstv2TraceTestWrapper TRACE_DUMP  test 2 KTestTInt2 (%d)" , KTestTInt2);					
+			
+					AddTraceHelper((TGroupId)USER_DEFINED_GID_1, (TTraceId)TEST_OSTTRACEWRAPPER7, KTestTInt1);
+					OstTrace1(USER_DEFINED_GID_1, TEST_OSTTRACEWRAPPER7, "CTOstv2TraceTestWrapper USER_DEFINED_GID_1  test 2 KTestTInt2 (%d)" , KTestTInt1);					
+
+					AddTraceHelper((TGroupId)USER_DEFINED_GID_2, (TTraceId)TEST_OSTTRACEWRAPPER8, KTestTInt2);
+					OstTrace1(USER_DEFINED_GID_2, TEST_OSTTRACEWRAPPER8, "CTOstv2TraceTestWrapper USER_DEFINED_GID_1  test 2 KTestTInt2 (%d)" , KTestTInt2);					
+					
+					result=logger.Stop();
+					
+					if(result == KErrNone)
+						{
+						SetBlockResult(CheckResults(KLogFilename()) == KErrNone ? EPass : EFail);
+						}					
+					}
+				else
+					{
+					INFO_PRINTF2(_L("ulogger start returns error %d"), result);	
+					}
+				}
+			else
+				{
+				INFO_PRINTF2(_L("setting output plugin settings failed with err %d"), result);
+				}			
+			}
+		else
+			{
+			INFO_PRINTF2(_L("add file as output plugin failed with err %d"), result);
+			}
+		}
+		return ETrue;
+	}
+
+
+TInt CTOstv2TraceTestWrapper::CheckResults(const TDesC& aLogFilename)
+	{
+	// read the logged traces from the log file	
+	TInt  err = ReadFromLogFile(aLogFilename);
+	if(err == KErrNone)
+		{
+		err = CompareTraces();
+		if(err == KErrNone)
+			{
+			
+			}
+		else{
+			ERR_PRINTF2(_L("CompareTraces returned err (%d)"), err);
+			}
+		}
+	else
+		{
+		ERR_PRINTF2(_L("ReadFromLogFile returned err (%d)"), err);
+		}
+	
+	return err;
+	}
+
+
+
+void CTOstv2TraceTestWrapper::CTOstv2TraceTestWrapper::AddTraceHelper(const TGroupId aGroupId, const TTraceId aTraceId, TUint32 aValue)
+	{	
+	if( CreateTraceObject(KOstTraceComponentID, aGroupId, EAddThreadIdentification , ENoProgramCounter, iSentTraces))
+		{
+		TTraceConfigs& config = *iSentTraces[iSentTraces.Count()-1];
+		TTraceConfigsOperator::SetData(config, aValue );					
+		TTraceConfigsOperator::SetHeader(config, aGroupId, KOstTraceComponentID, EAddThreadIdentification , ENoProgramCounter, aTraceId);
+		}
+	else
+		{
+		ERR_PRINTF2(_L("CreateTraceObject failed with for traceid (%d)"),  aTraceId);
+		SetBlockResult(EFail);
+		}	
+	}