diff -r 000000000000 -r 08ec8eefde2f traceservices/tracefw/integ_test/ulogger/TEF/te_ulogger/src/te_uloggerapiteststep.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/traceservices/tracefw/integ_test/ulogger/TEF/te_ulogger/src/te_uloggerapiteststep.cpp Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,1902 @@ +// Copyright (c) 2005-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_uloggerapiteststep.cpp + @internalTechnology +*/ +#include "te_uloggerapiteststep.h" +#include "te_uloggermclsuitedefs.h" + + +using namespace Ulogger; + +/*******************************************************************************/ +/*********************************Primary Filter Test***************************/ +/*******************************************************************************/ + +CULoggerAPIPrimTestStep::~CULoggerAPIPrimTestStep() +/** + * Destructor + */ + { + } + +CULoggerAPIPrimTestStep::CULoggerAPIPrimTestStep() +/** + * Constructor + */ + { + SetTestStepName(KULoggerAPIPrimTestStep); + } + +TVerdict CULoggerAPIPrimTestStep::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Testing ULogger API/uloggerclient.h setting Primary filter functionality, for negative testing edit source")); + SetTestStepResult(EPass); + return TestStepResult(); + } + + +TVerdict CULoggerAPIPrimTestStep::doTestStepL() +/** + * @return - TVerdict code + * Override of base class pure virtual + * Our implementation only logger.GetS called if the base class doTestStepPreambleL() did + * not leave. That being the case, the current test Result value will be EPass. + */ + { + if (TestStepResult()==EPass) + { + // ************** Delete the Block, the block start **************** + + TInt Result=0; + RULogger logger; + CArrayFixFlat *setfilter = new (ELeave)CArrayFixFlat(1); + setfilter->AppendL(UTracePrimary); + CArrayFixFlat *getfilter = new (ELeave)CArrayFixFlat(1); + CArrayFixFlat *removefilter = new (ELeave)CArrayFixFlat(1); + removefilter->AppendL(setfilter->At(0)); + + /**************First set primary filter*************/ + + Result=logger.Connect(); + INFO_PRINTF2(_L("connect err %d"), Result); + CClearConfig configIni; + configIni.Clear(logger); + INFO_PRINTF2(_L("connect err %d"), Result); + Result=logger.SetPrimaryFiltersEnabled(*setfilter,ETrue); + + if(Result==KErrNone) + INFO_PRINTF2(_L("Primary filter has been set with single filter, %d, check log"), setfilter->At(0)); + else + INFO_PRINTF2(_L("Primary filter was not set, error returned, %d"), Result); + + /**************Now get the primary filter set above************/ + + logger.GetPrimaryFiltersEnabled(*getfilter); + INFO_PRINTF1(_L("Get Primary filter returns the following filters")); + for(TInt i=0;i!=getfilter->Count();i++) + { + INFO_PRINTF2(_L("get filter returns %d "),getfilter->At(i)); + } + if(getfilter->At(0)==setfilter->At(0)) + { + Result=0; + INFO_PRINTF1(_L("Get primary filter successful")); + } + else + { + INFO_PRINTF1(_L("Get primary filter failed")); + Result=1; + } + getfilter->Reset(); + /*****************Now remove the above set filter***************/ + + if(Result==0) + { + Result=logger.SetPrimaryFiltersEnabled(*removefilter, EFalse); + INFO_PRINTF2(_L("Remove Primary filters single filter, 0 if succesful: %d"), Result); + logger.GetPrimaryFiltersEnabled(*getfilter); + if(getfilter->Count()==0&&Result==KErrNone) + { + INFO_PRINTF1(_L("Remove primary filter successful")); + Result=0; + } + else + { + if(Result!=0) + INFO_PRINTF1(_L("Remove primary filter failed, as filter has not been set in the config file")); + else + INFO_PRINTF1(_L("Remove primary filter failed, as able to pass same filter option to RemovePrimaryFilter")); + Result=1; + } + } + getfilter->Reset(); + + /****Now if the above steps have passed proceed to testing multiple filters***/ + + if(Result==1) + SetTestStepResult(EFail); + else + { + CArrayFixFlat *setfilters = new (ELeave)CArrayFixFlat(10); + CArrayFixFlat *getfilters = new (ELeave)CArrayFixFlat(10); + for(TInt i=0;i!=MaxNumberOfPrimaryFilters;i++) + { + setfilters->AppendL((TUint8)(i)); + } + + /**************First set multiple primary filter*************/ + + Result=logger.SetPrimaryFiltersEnabled(*setfilters,ETrue); + if(Result==KErrNone) + INFO_PRINTF1(_L("Primary filter has been set with multiple filters,from 0 to 255")); + else + INFO_PRINTF2(_L("Multiple primary filters have not been set succesfully, error code %d"), Result); + + /**************Now get the primary filter set above************/ + logger.Connect(); + logger.GetPrimaryFiltersEnabled(*getfilters); + if(getfilters->Count()==setfilters->Count()) + INFO_PRINTF1(_L("setfilter and getfilter have the same count")); + else + { + INFO_PRINTF1(_L("setfilter and getfilter have different counts")); + INFO_PRINTF2(_L("setfilter has %d"), setfilters->Count()); + INFO_PRINTF2(_L("getfilter has %d"), getfilters->Count()); + Result=1; + } + if(Result==0) + { + for(TInt i=0;i!=getfilters->Count() && Result==0;i++) + { + for(TInt j=0;j!=setfilters->Count() && Result!=0;j++) + { + if(getfilters->At(i)==setfilters->At(j)) + Result=0; + else + Result=1; + } + } + } + if(Result==0) + INFO_PRINTF1(_L("Get multiple primary filters successful")); + else + INFO_PRINTF1(_L("Get multiple primary filters failed")); + INFO_PRINTF1(_L("Get Primary filters returns multiple filters")); + // for(int i=0;i!=MaxNumberOfPrimaryFilters;i++) + // INFO_PRINTF2(_L(" %d"), getfilters->operator[](i)); //uncomment to verify get filters test correct + getfilters->Reset(); + + /*****************Given this is successful, now remove the above set filter***************/ + + if(Result==0) + { + logger.Connect(); + logger.SetPrimaryFiltersEnabled(*removefilter, EFalse); + // getfilter.Append(removefilter); + // logger.SetPrimaryFilter(getfilter);//uncomment these to negative test the test suite + logger.GetPrimaryFiltersEnabled(*getfilters); + for(TInt i=0; i!=getfilters->Count() && Result==0;i++) + { + if(getfilters->At(i)==removefilter->At(0)) + { + INFO_PRINTF1(_L("Remove primary filter in multiple test failed")); + Result=1; + } + else + Result=0; + } + if(Result==0) + INFO_PRINTF1(_L("Remove primary filter in multiple test successful")); + else + INFO_PRINTF1(_L("Remove primary filter in multiple test failed")); + } + INFO_PRINTF1(_L("Now, given that the above tests have passed, negative test the primary filter options")); + INFO_PRINTF1(_L("First reset the removed filter, then proceed")); + setfilter->At(0)=removefilter->At(0); + logger.SetPrimaryFiltersEnabled(*setfilter,ETrue); + if(Result==0) + { + INFO_PRINTF1(_L("Removed filter has been reset")); + + /************Now try to set a primary filter value greater than that allowed***/ + + setfilter->At(0)=((TPrimaryFilter)(MaxNumberOfPrimaryFilters)); + INFO_PRINTF2(_L("setfilter is %d"), setfilter->At(0)); + TInt r=logger.SetPrimaryFiltersEnabled(*setfilter,ETrue); + if((r==KErrNone)&&(setfilter->At(0)==MaxNumberOfPrimaryFilters-256)) + { + INFO_PRINTF3(_L("Primary filter has been set with filter %d,corresponding to the passed value %d, this is allowed as duplicate! Passed"), setfilter->At(0),MaxNumberOfPrimaryFilters ); + Result=0; + } + else if((r==KErrNone)&&(setfilter->At(0)!=MaxNumberOfPrimaryFilters-256)) + { + INFO_PRINTF3(_L("Primary filter has been set with filter %d,corresponding to the passed value %d, this is not allowed as not duplicate! Failed"), setfilter->At(0),MaxNumberOfPrimaryFilters ); + Result=1; + } + else + { + INFO_PRINTF3(_L("Primary filter has not been set with filter %d, corresponding to the passed value %d. Passed"), setfilter->At(0), MaxNumberOfPrimaryFilters); + Result=0; + } + + /************Now try to set more primary filter values greater than available***/ + + { + INFO_PRINTF1(_L("Now try to set more filter than available using a duplicate")); + if(Result==0) + { + setfilter->At(0)=((TPrimaryFilter)(MaxNumberOfPrimaryFilters-1)); + Result=logger.SetPrimaryFiltersEnabled(*setfilter,ETrue); + if((Result==KErrNone)&&(setfilter->At(0)!=MaxNumberOfPrimaryFilters-1)) + { + INFO_PRINTF1(_L("More primary filters than available can be set. Failed")); + Result=1; + } + else + { + INFO_PRINTF1(_L("More primary filters than available cannot be set OR the filter being set is a duplicate. Passed")); + Result=0; + } + } + } + } + if(Result==1) + SetTestStepResult(EFail); + else + SetTestStepResult(EPass); + if(setfilters) + { + delete setfilters; + setfilters=NULL; + } + setfilter->Reset(); + if(getfilters) + { + delete getfilters; + getfilters=NULL; + } + } + + // ************** Block end **************** + + configIni.Clear(logger); + logger.Close(); + if(setfilter) + delete setfilter; + if(getfilter) + delete getfilter; + } + return TestStepResult(); + } + + + +TVerdict CULoggerAPIPrimTestStep::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Completed Primary Filter test")); + return TestStepResult(); + } + + + +/*******************************************************************************/ +/*********************************Secondary Filter Test***************************/ +/*******************************************************************************/ + + +CULoggerAPISecondTestStep::~CULoggerAPISecondTestStep() +/** + * Destructor + */ + { + } + +CULoggerAPISecondTestStep::CULoggerAPISecondTestStep() +/** + * Constructor + */ + { + SetTestStepName(KULoggerAPISecondTestStep); + } + +TVerdict CULoggerAPISecondTestStep::doTestStepPreambleL() +/** * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Testing ULogger API/uloggerclient.h setting Secondary filter functionality, for negative testing edit source")); + SetTestStepResult(EPass); + return TestStepResult(); + } + + +TVerdict CULoggerAPISecondTestStep::doTestStepL() +/** + * @return - TVerdict code + * Override of base class pure virtual + * Our implementation only logger.GetS called if the base class doTestStepPreambleL() did + * not leave. That being the case, the current test Result value will be EPass. + */ + { + if (TestStepResult()==EPass) + { + // ************** Delete the Block, the block start **************** + + TInt Result=0; + RULogger logger; + RArray setfilter; + setfilter.Append((TUint32) UTraceSecondary); + RArray dupfilter; + RArray getfilter; + RArray removefilter; + removefilter.Append(setfilter[0]); + // removefilter=32; //uncomment to negative test the remove filter option + + /**************First set Secondary filter*************/ + + logger.Connect(); + CClearConfig configIni; + configIni.Clear(logger); + Result = logger.SetSecondaryFiltersEnabled(setfilter,ETrue); + INFO_PRINTF2(_L("Secondary filter has been set with single filter, %d, check log"), setfilter[0]); + INFO_PRINTF2(_L("code: %d"), Result); + + + /**************Now get the Secondary filter set above************/ + + Result = logger.GetSecondaryFiltersEnabled(getfilter); + INFO_PRINTF1(_L("Get Secondary filter returns the following filters")); + INFO_PRINTF2(_L("code: %d"), Result); + for(TInt i=0;i!=getfilter.Count();i++) + { + INFO_PRINTF2(_L("%d "),getfilter[i]); + } + if(getfilter[0]==setfilter[0]) + { + Result=0; + INFO_PRINTF1(_L("Get Secondary filter successful")); + } + else + { + INFO_PRINTF1(_L("Get Secondary filter failed")); + Result=1; + } + for(TInt i=0;i!=getfilter.Count();)//i++) + { + getfilter.Remove(0); + } + + /*****************Now remove the above set filter***************/ + + if(Result==0) + { + Result=logger.SetSecondaryFiltersEnabled(removefilter, EFalse); + INFO_PRINTF2(_L("Remove Secondary filters single filter, 0 if succesful, -1 if failed: %d"), Result);//logger.RemoveSingleSecondary); + logger.GetSecondaryFiltersEnabled(getfilter); + if(getfilter.Count()==0) + { + INFO_PRINTF1(_L("Remove Secondary filter successful")); + Result=0; + } + else + { + if(Result!=0) + INFO_PRINTF1(_L("Remove Secondary filter failed, as filter has not been set in the config file")); + else + INFO_PRINTF1(_L("Remove Secondary filter failed, as able to pass same filter option to RemoveSecondaryFilter")); + Result=1; + } + } + + /****Now if the above steps have passed proceed to testing multiple filters***/ + + if(Result==1) + SetTestStepResult(EFail); + else + { + RArray setfilters; + RArray getfilters; + INFO_PRINTF2(_L("maxsecondary %d"),MaxNumberOfSecondaryFilters); + for(TInt i=0;i *setprimfilter = new (ELeave)CArrayFixFlat(1); + setprimfilter->AppendL(UTracePrimary); + RArray setsecondfilter; + setsecondfilter.Append((TUint32) UTraceSecondary); + logger.SetPrimaryFiltersEnabled(*setprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(setsecondfilter,ETrue); + INFO_PRINTF1(_L("about to set file as output plugin")); + //NB: this of course assumes that the plugin functionality works which is tested more rigorously in the plugin test step +#ifndef SysStartTest + + if(Result==0) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + Result=logger.ActivateOutputPlugin(mediaptr); + INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KTextvalue, "C:\\logs\\ULoggerLoggingTest.log"); + TPluginConfiguration pluginConfig; + pluginConfig.SetKey(KTextsetting); + pluginConfig.SetValue(KTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, pluginConfig); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + 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); +#endif + if(Result==0) + { + /************** Start Logging to File****************/ + + Result=logger.Start(); + INFO_PRINTF2(_L("ulogger start returns error %d"), Result); + INFO_PRINTF1(_L("now step over some UTrace statements")); + int tracetag =0; + TBool ret=1; + CUTraces Testtracer; + INFO_PRINTF1(_L("******Testing NONSTATIC Trace Object Methods******")); + /*Comment out this line to switch off tracing as a negative test*/ + for(tracetag=0; tracetag!=NumberOfUTraceMacros&&ret;tracetag++) + { + ret = 0; + ret = Testtracer.DoTheTrace(tracetag); + INFO_PRINTF3(_L("UTrace macro %d has trace size %d"), tracetag, Testtracer.SizeOfTrace(tracetag)); + } + bool UTraceStatus=0; +#ifdef SYMBIAN_TRACE_ENABLE + UTraceStatus = 1; + INFO_PRINTF1(_L("UTRACING HAS BEEN ENABLED!")); +#else + UTraceStatus = 0; + INFO_PRINTF1(_L("UTRACING HAS BEEN DISABLED! All Log files should be empty/not exist")); +#endif + if((ret&&UTraceStatus)||(!ret&&!UTraceStatus)) + { + Result=0; + INFO_PRINTF1(_L("UTracing carried out succesfully")); + if(ret==1) + INFO_PRINTF1(_L("logfile should contain appropriate tracing")); + else + INFO_PRINTF1(_L("logfile should be empty of trace statements")); + } + else + { + Result=1; + INFO_PRINTF2(_L("UTracing Failed on UTrace macro %d"), tracetag); + } + + /*************Now test the set method************************/ + + INFO_PRINTF1(_L("******Testing NONSTATIC Trace Set Methods******")); + TUTrace TestTraceObject(UTracePrimary, UTraceSecondary, schema, context, pc); + for(tracetag=0; tracetag!=NumberOfUTraceMacros&&ret;tracetag++) + { + ret = 0; + ret = Testtracer.DoTheSetTrace(tracetag, TestTraceObject); + INFO_PRINTF3(_L("UTrace set macro %d has trace size %d"), tracetag, Testtracer.SizeOfTrace(tracetag)); + } + if((ret&&UTraceStatus)||(!ret&&!UTraceStatus)) + { + Result=0; + INFO_PRINTF1(_L("UTracing carried out succesfully for set method")); + if(ret==1) + INFO_PRINTF1(_L("logfile should contain appropriate tracing")); + else + INFO_PRINTF1(_L("logfile should be empty of trace statements")); + } + + else + { + Result=1; + INFO_PRINTF2(_L("UTracing Failed on UTrace macro %d for set method "), tracetag); + } + + /*************Now test the static method************************/ + + INFO_PRINTF1(_L("******Testing STATIC Trace Methods******")); + + + for(tracetag=0; tracetag!=NumberOfUTraceMacros&&ret;tracetag++) + { + ret = 0; + ret = Testtracer.DoTheStaticTrace(tracetag); + INFO_PRINTF3(_L("UTrace static macro %d has trace size %d"), tracetag, Testtracer.SizeOfTrace(tracetag)); + } + if((ret&&UTraceStatus)||(!ret&&!UTraceStatus)) + { + Result=0; + INFO_PRINTF1(_L("UTracing carried out succesfully for static method")); + if(ret==1) + INFO_PRINTF1(_L("logfile should contain appropriate tracing")); + else + INFO_PRINTF1(_L("logfile should be empty of trace statements")); + + } + + + else + { + Result=1; + INFO_PRINTF2(_L("UTracing Failed on UTrace macro %d for static method"), tracetag); + } + + /************** Stop Logging to File****************/ + + Result=logger.Stop(); + if(Result==0) + { + ret = Testtracer.DoTheTrace(0); + INFO_PRINTF1(_L("logfile should contain appropriate tracing without an extra UTrace(0) trace at the end, if it is present ULogger.Stop() has failed in functionality")); + } + else + { + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with err %d"), Result); + } + } + else + INFO_PRINTF1(_L("adding file as output plugin failed")); + if(Result==0) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Simple logging to file has been tested - check output log")); + + /***************************negative test***********************/ + + if(TestStepResult()==EPass) + { + INFO_PRINTF1(_L("Now do some negative logging testing.")); + if(Result==KErrNone) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + if(Result==0) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KnegTextvalue, "C:\\logs\\ULoggerNegativeLoggingTest.log"); + TPluginConfiguration negPluginConfig; + negPluginConfig.SetKey(KTextsetting); + negPluginConfig.SetValue(KnegTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, negPluginConfig); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + INFO_PRINTF1(_L("Log over traces with different filters set - there should only be one line in logfile corrseponding to the set filters.")); + if(Result==0) + { + logger.Start(); + + /*****do the tracing**************/ + + bool ret = TUTrace::Trace(UTracePrimary, UTraceSecondary, schema, context, pc); + INFO_PRINTF2(_L("tracing ret %d"), ret); + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary+1),(TSecondaryFilter)(UTraceSecondary+1), schema, context, pc); + INFO_PRINTF2(_L("tracing ret %d"), ret); + + /************** Stop Logging to File****************/ + + Result=logger.Stop(); + if(Result!=0) + { + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with err %d"), Result); + } + INFO_PRINTF1(_L("Set some more filters and remove the original set in ulogger, then trace over the original types of traces - there should be no extra lines in logfile above")); + + /**************Now Change the filter settings********/ + CArrayFixFlat *removeprimfilter = new (ELeave)CArrayFixFlat(1); + removeprimfilter->AppendL(setprimfilter->At(0)); + RArray removesecondfilter; + removesecondfilter.Append(setsecondfilter[0]); + Result=logger.SetPrimaryFiltersEnabled(*removeprimfilter, EFalse); + if(Result==0) + { + INFO_PRINTF1(_L("Call to removeprimary has passed")); + } + Result=logger.SetSecondaryFiltersEnabled(removesecondfilter, EFalse); + if(Result==0) + { + INFO_PRINTF1(_L("Call to removesecondary has passed")); + } + CArrayFixFlat *newsetprimfilter = new (ELeave)CArrayFixFlat(1); + newsetprimfilter->AppendL((TUint8)(UTracePrimary+2)); + RArray newsetsecondfilter; + newsetsecondfilter.Append((TUint32) (UTraceSecondary+2)); + logger.SetPrimaryFiltersEnabled(*newsetprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(newsetsecondfilter,ETrue); + CUTraces Testtracer; + ret=1; + logger.Start(); + + /*****do the tracing**************/ + + /*Comment out this line to switch off tracing as a negative test*/ + int tracetag=0; + for(tracetag=0; tracetag!=NumberOfUTraceMacros&&ret;tracetag++) + { + ret = 0; + ret = Testtracer.DoTheTrace(tracetag); + INFO_PRINTF3(_L("UTrace macro %d has trace size %d"), tracetag, Testtracer.SizeOfTrace(tracetag)); + } + if(ret==1) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("BTrace filters are not being reset with Start()/stop(), so logging over filters that have been unset is occuring. Fail")); + } + + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary+2),(TSecondaryFilter)(UTraceSecondary+2), schema, context, pc); + INFO_PRINTF2(_L("tracing ret %d"), ret); + + /************** Stop Logging to File****************/ + + Result=logger.Stop(); + if(Result!=0) + { + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with err %d"), Result); + } + if(newsetprimfilter) + { + delete(newsetprimfilter); + newsetprimfilter=NULL; + } + } + } + else + INFO_PRINTF1(_L("Incorrect error code when trying to add file as a plug-in when it already exists")); + if(Result==0&&TestStepResult()==EPass) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Simple negative logging to file has been tested - check output log")); + } + + /***************************multiple type test***********************/ + // From negative test: primary has been set to UTracePrimary+2 and secondary to UTraceSecondary+2 + if(TestStepResult()==EPass) + { + INFO_PRINTF1(_L("Now do some multiple type logging testing.")); + //CClearConfig configIni; + //configIni.Clear(logger); + + if(Result==0) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + if(Result==0) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KmultTextvalue, "C:\\logs\\ULoggerMultipleLoggingTest.log"); + TPluginConfiguration pluginConfig; + pluginConfig.SetKey(KTextsetting); + pluginConfig.SetValue(KmultTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, pluginConfig); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + if(Result==0) + { + TInt i; + CArrayFixFlat *multsetprimfilter = new (ELeave)CArrayFixFlat(1); + multsetprimfilter->AppendL(UTracePrimary); + RArray multsetsecondfilter; + multsetsecondfilter.Append((TUint32) (UTraceSecondary)); + logger.SetPrimaryFiltersEnabled(*multsetprimfilter,ETrue); + TInt errCode = logger.SetSecondaryFiltersEnabled(multsetsecondfilter,ETrue); + + if(errCode != KErrNone) + INFO_PRINTF2(_L("Setting secondary filters failed: %d"), errCode); + INFO_PRINTF1(_L("checking !!! secondary filters")); + for(i=0; i buf; + buf.AppendFormat(_L("%d"), multsetsecondfilter[i]); + INFO_PRINTF1(buf); + } + + INFO_PRINTF1(_L("Now given the two sets of set filters, step over traces of each type, some with matching primary but not secondary and vice versa")); + + INFO_PRINTF1(_L("Primary Filetrs:")); + CArrayFixFlat* primFilters = new (ELeave) CArrayFixFlat(1); + CleanupStack::PushL(primFilters); + logger.GetPrimaryFiltersEnabled(*primFilters); + + for(i=0; iCount(); ++i) + { + TBuf<16> buf; + buf.AppendFormat(_L("%d "), primFilters->At(i)); + INFO_PRINTF1(buf); + } + CleanupStack::PopAndDestroy(); //primFiletrs + + INFO_PRINTF1(_L("Secondary Filetrs:")); + RArray secFilters; + errCode = logger.GetSecondaryFiltersEnabled(secFilters); + if(errCode != KErrNone) + INFO_PRINTF2(_L("Getting secondary filters failed: %d"), errCode); + + for(i=0; i buf; + buf.AppendFormat(_L("%d"), secFilters[i]); + INFO_PRINTF1(buf); + } + secFilters.Close(); + + INFO_PRINTF1(_L("Secondary Filetring is:")); + TBool secF = EFalse; + logger.GetSecondaryFilteringEnabled(secF); + if(secF) + INFO_PRINTF1(_L("ENABLED")); + else + INFO_PRINTF1(_L("DISABLED")); + + Result=logger.Start(); + if(Result!=KErrNone) + INFO_PRINTF2(_L("ulogger server didn't start, with error %d"), Result); + + /*****do the tracing**************/ + + bool ret = TUTrace::Trace(UTracePrimary,UTraceSecondary, schema, context, pc); + if(ret==0) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("logging over filters that have been set (both sec and prim) is not occuring. Fail")); + } + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary+1),(TSecondaryFilter)(UTraceSecondary+1), schema, context, pc); + if(ret==1) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("logging over filters that have not been set is occuring. Fail")); + } + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary),(TSecondaryFilter)(UTraceSecondary+2), schema, context, pc); + if(ret==0) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("logging over filters that have been set (both sec+2 and prim) is not occuring. Fail")); + } + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary+2),(TSecondaryFilter)(UTraceSecondary), schema, context, pc); + if(ret==0) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("logging over filters that have been set (both sec and prim+2) is not occuring. Fail")); + } + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary+2),(TSecondaryFilter)(UTraceSecondary+2), schema, context, pc); + if(ret==0) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("logging over filters that have been set (both sec+2 and prim+2) is not occuring. Fail")); + } + + INFO_PRINTF1(_L("checking UTracePrimary i UTraceSecondary")); + TBuf<32> b; + b.AppendFormat(_L("%d and %d"), UTracePrimary+2, UTraceSecondary+1); + INFO_PRINTF1(b); + + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary+2),(TSecondaryFilter)(UTraceSecondary+1), schema, context, pc); + if(ret==1) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("logging over filters that have not been set (the sec) is occuring. Fail")); + } + ret = TUTrace::Trace((TPrimaryFilter)(UTracePrimary+1),(TSecondaryFilter)(UTraceSecondary), schema, context, pc); + if(ret==1) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("logging over filters that have not been set (the prim) is occuring. Fail")); + } + ret = TUTrace::TracePrimary((TPrimaryFilter)(UTracePrimary+1), schema, context, pc); + if(ret==1) + { + SetTestStepResult(EFail); + INFO_PRINTF1(_L("fast logging over filters that have not been set (the prim) is occuring. Fail")); + } + + /************** Stop Logging to File****************/ + + Result=logger.Stop(); + if(Result!=KErrNone) + { + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with error %d"), Result); + } + if(multsetprimfilter) + { + delete(multsetprimfilter); + multsetprimfilter=NULL; + } + } + configIni.Clear(logger); + } + else + INFO_PRINTF1(_L("adding file as output plugin failed")); + if(Result==0&&TestStepResult()==EPass) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Multiple logging to file with user side tracing has been tested - check output log. It should contain four lines of tracing of type, (sec,prim), (sec+2, prim), (sec, prim+2), (sec+2, prim+2)")); + } + if(setprimfilter) + { + delete(setprimfilter); + setprimfilter=NULL; + } + INFO_PRINTF1(_L("Now shutdown the ulogger server session")); + logger.Close(); +#ifdef SysStartTest + if(SysStartResult!=KErrInUse) + SetTestStepResult(EFail); +#endif + // ************** Block end **************** + } + return TestStepResult(); + } + + + + +TVerdict CULoggerAPILoggingTestStep::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Completed Logging Test Step")); + return TestStepResult(); + } + +/*******************************************************************************/ +/*********************************Kernel Side Logging Test**********************/ +/*******************************************************************************/ + +CULoggerAPIKernelTestStep::~CULoggerAPIKernelTestStep() +/** + * Destructor + */ + { + } + +CULoggerAPIKernelTestStep::CULoggerAPIKernelTestStep() +/** + * Constructor + */ + { + SetTestStepName(KULoggerAPIKernelTestStep); + } + +TVerdict CULoggerAPIKernelTestStep::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Testing ULogger API/uloggerclient.h logging with kernel side tracing functionality")); + SetTestStepResult(EPass); + return TestStepResult(); + } + + +TVerdict CULoggerAPIKernelTestStep::doTestStepL() +/** + * @return - TVerdict code + * Override of base class pure virtual + * Our implementation only logger.GetS called if the base class doTestStepPreambleL() did + * not leave. That being the case, the current test Result value will be EPass. + */ + { +#ifndef __WINSCW__ + if (TestStepResult()==EPass) + { + // ************** Delete the Block, the block start **************** + + INFO_PRINTF1(_L("About to test ulogger start with one primary and one secondary, kernel side")); //Block start + TInt Result=0; + CUKernelTraces TestKernelTracer; + RULogger logger; + logger.Connect(); + CClearConfig configIni; + configIni.Clear(logger); + CArrayFixFlat *setprimfilter = new (ELeave)CArrayFixFlat(1); + setprimfilter->AppendL(UTracePrimary); + RArray setsecondfilter; + setsecondfilter.Append((TUint32) UTraceSecondary); + logger.SetPrimaryFiltersEnabled(*setprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(setsecondfilter,ETrue); + INFO_PRINTF1(_L("about to set file as output plugin")); + //NB: this of course assumes that the plugin functionality works which is tested more rigorously in the plugin test step + + if(Result==0) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + Result=logger.ActivateOutputPlugin(mediaptr); + if(Result==0||Result==-11) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KTextvalue, "C:\\logs\\ULoggerKernelLoggingTest.log"); + TPluginConfiguration setPluginConfigs; + setPluginConfigs.SetKey(KTextsetting); + setPluginConfigs.SetValue(KTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, setPluginConfigs); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + } + else + INFO_PRINTF1(_L("add file as output plugin failed")); + TInt r = KErrNone; + r=User::LoadLogicalDevice(_L("eusbc.ldd")); + if(r == KErrAlreadyExists) + r = KErrNone; + RDevUsbcClient usbDevice; + if(Result==0) + { + /************** Start Logging to File****************/ + + logger.Start(); + INFO_PRINTF1(_L("now step over some UTrace statements")); + INFO_PRINTF1(_L("Device driver loading.............")); + if (r == KErrNone) + { + INFO_PRINTF1(_L("Device driver loaded successfully!!!!!!!!!!!!!!!!!!")); + r = usbDevice.Open(0); + INFO_PRINTF2(_L("Device driver opening %d"), r); + if(r == KErrNone) + { + r=TestKernelTracer.DoTheKernelTrace(0, usbDevice); + if(r==KErrNone) + INFO_PRINTF2(_L("EndpointZeroRequestError %d"), r); + else + INFO_PRINTF2(_L("EndpointZeroRequestError failed %d"), r); + } + else + INFO_PRINTF1(_L("Device driver opening failed")); + } + else + INFO_PRINTF2(_L("Device Driver didn't load, %d"), r); +#ifdef SYMBIAN_TRACE_ENABLE + INFO_PRINTF1(_L("UTRACING HAS BEEN ENABLED!")); +#else + INFO_PRINTF1(_L("UTRACING HAS BEEN DISABLED! All Log files should be empty/not exist")); +#endif + /************** Stop Logging to File****************/ + + Result=logger.Stop(); + if(Result!=KErrNone) + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with err %d"), Result); + } + else + INFO_PRINTF1(_L("adding file as output plugin failed")); + if(Result==0) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Simple logging to file has been tested with kernel side tracing- check output log")); + + /***************************negative test***********************/ + + if(TestStepResult()==EPass) + { + INFO_PRINTF1(_L("Now do some negative logging testing.")); + if(Result==KErrNone) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + if(Result==0) + { + INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KnegTextvalue, "C:\\logs\\ULoggerKernelNegativeLoggingTest.log"); + TPluginConfiguration negSetPluginConfigs; + negSetPluginConfigs.SetKey(KTextsetting); + negSetPluginConfigs.SetValue(KnegTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, negSetPluginConfigs); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + + /**************Now Change the filter settings********/ + + CArrayFixFlat *removeprimfilter = new (ELeave)CArrayFixFlat(1); + removeprimfilter->AppendL(setprimfilter->At(0)); + RArray removesecondfilter; + removesecondfilter.Append(setsecondfilter[0]); + Result=logger.SetPrimaryFiltersEnabled(*removeprimfilter, EFalse); + if(Result==0) + { + INFO_PRINTF1(_L("Call to removeprimary has passed")); + } + Result=logger.SetSecondaryFiltersEnabled(removesecondfilter, EFalse); + if(Result==0) + { + INFO_PRINTF1(_L("Call to removesecondary has passed")); + } + CArrayFixFlat *newsetprimfilter = new (ELeave)CArrayFixFlat(1); + newsetprimfilter->AppendL((TUint8)(UTracePrimary+2)); + RArray newsetsecondfilter; + newsetsecondfilter.Append((TUint32)(UTraceSecondary+2)); + logger.SetPrimaryFiltersEnabled(*newsetprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(newsetsecondfilter,ETrue); + if(Result==0) + { + logger.Start(); + INFO_PRINTF1(_L("now step over some UTrace statements")); + r=TestKernelTracer.DoTheKernelTrace(0, usbDevice); + if(r==KErrNone) + INFO_PRINTF2(_L("EndpointZeroRequestError %d"), r); + else + INFO_PRINTF2(_L("EndpointZeroRequestError failed %d"), r); + } + Result=logger.Stop(); + if(Result!=0) + { + INFO_PRINTF1(_L("Call to Ulogger.Stop() has failed")); + } + if(newsetprimfilter) + { + delete(newsetprimfilter); + newsetprimfilter=NULL; + } + } + else + INFO_PRINTF1(_L("Incorrect error code when trying to add file as a plug-in when it already exists")); + if(Result==0&&TestStepResult()==EPass) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Simple negative logging to file has been tested - check output log")); + } + + /***************************multiple type test***********************/ + // From negative test: primary has been set to UTracePrimary+2 and secondary to UTraceSecondary+2 + if(TestStepResult()==EPass) + { + INFO_PRINTF1(_L("Now do some multiple type logging testing.")); + if(Result==0) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + if(Result==0) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KmultTextvalue, "C:\\logs\\ULoggerKernelMultipleLoggingTest.log"); + TPluginConfiguration setPluginConfigs; + setPluginConfigs.SetKey(KTextsetting); + setPluginConfigs.SetValue(KmultTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, setPluginConfigs); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + if(Result==0) + { + /******************reset filters and change call for multiple logging*****/ + + CArrayFixFlat *multsetprimfilter = new (ELeave)CArrayFixFlat(1); + multsetprimfilter->AppendL(UTracePrimary); + RArray multsetsecondfilter; + multsetsecondfilter.Append((TUint32) (UTraceSecondary)); + logger.SetPrimaryFiltersEnabled(*multsetprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(multsetsecondfilter,ETrue); + INFO_PRINTF1(_L("Now given the two sets of set filters, step over traces of each type, some with matching primary but not secondary and vice versa")); + Result=logger.Start(); + if(Result!=KErrNone) + INFO_PRINTF2(_L("ulogger server didn't start, with error %d"), Result); + /*****do the tracing**************/ + r=TestKernelTracer.DoTheKernelTrace(1, usbDevice); + if(r!=KErrNone) + { + INFO_PRINTF2(_L("GetStringDescriptorLangId failed with error %d"), r); + } + Result=logger.Stop(); + if(Result!=KErrNone) + { + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with error %d"), Result); + } + if(multsetprimfilter) + { + delete(multsetprimfilter); + multsetprimfilter=NULL; + } + } + } + else + INFO_PRINTF1(_L("adding file as output plugin failed")); + if(Result==0&&TestStepResult()==EPass) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Multiple logging to file with kernel side tracing has been tested - check output log. It should contain four lines of tracing of type, (sec,prim), (sec+2, prim), (sec, prim+2), (sec+2, prim+2)")); + configIni.Clear(logger); + } + if(setprimfilter) + { + delete(setprimfilter); + setprimfilter=NULL; + } + INFO_PRINTF1(_L("Now shutdown the ulogger server session")); + logger.Close(); + // ************** Block end **************** + } +#else + INFO_PRINTF1(_L("Kernel tests not run on emulator")); +#endif + return TestStepResult(); + } + + + +TVerdict CULoggerAPIKernelTestStep::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Please delete this line or modify it. I am in Test Step Postamble in Class CULoggerAPIKernelTestStep")); + return TestStepResult(); + } + + + + +/*******************************************************************************/ +/*********************************Printf Test***************************/ +/*******************************************************************************/ + +CULoggerAPIPrintfTestStep::~CULoggerAPIPrintfTestStep() +/** + * Destructor + */ + { + } + +CULoggerAPIPrintfTestStep::CULoggerAPIPrintfTestStep() +/** + * Constructor + */ + { + SetTestStepName(KULoggerAPIPrintfTestStep); + } + +TVerdict CULoggerAPIPrintfTestStep::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Testing ULogger API/uloggerclient.h logging with user side printf tracing functionality")); + if(NumberOfPrintfMacros!=16) + { + INFO_PRINTF1(_L("WARNING! Number of available UTrace Printf Macros is not the same as accounted for in calls to UTrace!! Update ULoggerAPITest.cpp, (logging test step) accordingly!")); + SetTestStepResult(EFail); + } + else + SetTestStepResult(EPass); + return TestStepResult(); + } + + +TVerdict CULoggerAPIPrintfTestStep::doTestStepL() +/** + * @return - TVerdict code + * Override of base class pure virtual + * Our implementation only logger.GetS called if the base class doTestStepPreambleL() did + * not leave. That being the case, the current test Result value will be EPass. + */ + { + if (TestStepResult()==EPass) + { + // ************** Delete the Block, the block start **************** + INFO_PRINTF1(_L("About to test ulogger printf tracing with one primary and one secondary")); //Block start + TInt Result=0; + RULogger logger; + logger.Connect(); + CClearConfig configIni; + configIni.Clear(logger); + CArrayFixFlat *setprimfilter = new (ELeave)CArrayFixFlat(1); + setprimfilter->AppendL(UTracePrimary); + RArray setsecondfilter; + setsecondfilter.Append((TUint32) UTraceSecondary); + logger.SetPrimaryFiltersEnabled(*setprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(setsecondfilter,ETrue); + INFO_PRINTF1(_L("about to set file as output plugin")); + //NB: this of course assumes that the plugin functionality works which is tested more rigorously in the plugin test step + + if(Result==0) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + Result=logger.ActivateOutputPlugin(mediaptr); + if(Result==0||Result==-11) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KTextvalue, "C:\\logs\\ULoggerPrintfTest.log"); + TPluginConfiguration pluginConfig; + pluginConfig.SetKey(KTextsetting); + pluginConfig.SetValue(KTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, pluginConfig); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + } + else + INFO_PRINTF1(_L("add file as output plugin failed")); + if(Result==0) + { + /************** Start Logging to File****************/ + /************* Testing NONSTATIC printf methods**********************/ + + Result=logger.Start(); + INFO_PRINTF2(_L("ulogger start returns error %d"), Result); + INFO_PRINTF1(_L("now step over some UTrace printf statements")); + int tracetag =0; + TBool ret=1; + CUTraces Testtracer; + INFO_PRINTF1(_L("******Testing NONSTATIC Trace Printf Methods******")); + + /*Comment out this line to switch off tracing as a negative test*/ + + for(tracetag=0; tracetag!=NumberOfPrintfMacros&&ret;tracetag++) + { + ret = 0; + ret = Testtracer.DoThePrintf(tracetag); + INFO_PRINTF3(_L("UTrace printf macro %d has trace size %d - UPDATE!!!!"), tracetag, 0); + } + bool UTraceStatus=0; +#ifdef SYMBIAN_TRACE_ENABLE + UTraceStatus = 1; + INFO_PRINTF1(_L("UTRACING HAS BEEN ENABLED!")); +#else + UTraceStatus = 0; + INFO_PRINTF1(_L("UTRACING HAS BEEN DISABLED! All Log files should be empty/not exist")); +#endif + if((ret&&UTraceStatus)||(!ret&&!UTraceStatus)) + { + Result=0; + INFO_PRINTF1(_L("UTracing printfs carried out succesfully")); + if(ret==1) + INFO_PRINTF1(_L("logfile should contain appropriate printf tracing")); + else + INFO_PRINTF1(_L("logfile should be empty of printf trace statements")); + } + else + { + Result=1; + INFO_PRINTF2(_L("UTracing Failed on UTrace printf macro %d"), tracetag); + } + + /************* Now Test STATIC printf methods**********************/ + + INFO_PRINTF1(_L("******Testing STATIC Trace Printf Methods******")); + + /*Comment out this line to switch off tracing as a negative test*/ + for(tracetag=0; tracetag!=NumberOfPrintfMacros&&ret;tracetag++) + { + ret = 0; + ret = Testtracer.DoTheStaticPrintf(tracetag); + INFO_PRINTF3(_L("UTrace printf macro %d has trace size %d - UPDATE!!!!"), tracetag, 0); + } +#ifdef SYMBIAN_TRACE_ENABLE + UTraceStatus = 1; + INFO_PRINTF1(_L("UTRACING HAS BEEN ENABLED!")); +#else + UTraceStatus = 0; + INFO_PRINTF1(_L("UTRACING HAS BEEN DISABLED! All Log files should be empty/not exist")); +#endif + if((ret&&UTraceStatus)||(!ret&&!UTraceStatus)) + { + Result=0; + INFO_PRINTF1(_L("UTracing printfs carried out succesfully")); + if(ret==1) + INFO_PRINTF1(_L("logfile should contain appropriate printf tracing")); + else + INFO_PRINTF1(_L("logfile should be empty of printf trace statements")); + } + else + { + Result=1; + INFO_PRINTF2(_L("UTracing Failed on UTrace printf macro %d"), tracetag); + } + } + SetTestStepResult(EPass); + } + return TestStepResult(); + } + + + +TVerdict CULoggerAPIPrintfTestStep::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("completed user side printf logging tests")); + + return TestStepResult(); + } + + + + + +/******************************************************************************/ +/*********************************Kernel Side Printf Test***************************/ +/*******************************************************************************/ + +CULoggerAPIKernelPrintfTestStep::~CULoggerAPIKernelPrintfTestStep() +/** + * Destructor + */ + { + } + +CULoggerAPIKernelPrintfTestStep::CULoggerAPIKernelPrintfTestStep() +/** + * Constructor + */ + { + SetTestStepName(KULoggerAPIKernelPrintfTestStep); + } + +TVerdict CULoggerAPIKernelPrintfTestStep::doTestStepPreambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("Testing ULogger API/uloggerclient.h kernel side printf logging functionality")); + return TestStepResult(); + } + + +TVerdict CULoggerAPIKernelPrintfTestStep::doTestStepL() +/** + * @return - TVerdict code + * Override of base class pure virtual + * Our implementation only logger.GetS called if the base class doTestStepPreambleL() did + * not leave. That being the case, the current test Result value will be EPass. + */ + { +#ifndef __WINSCW__ + if (TestStepResult()==EPass) + { + // ************** Delete the Block, the block start **************** + INFO_PRINTF1(_L("About to test ulogger start with one primary and one secondary, kernel side printf logging")); //Block start + TInt Result=0; + CUKernelTraces TestKernelTracer; + RULogger logger; + logger.Connect(); + CClearConfig configIni; + configIni.Clear(logger); + CArrayFixFlat *setprimfilter = new (ELeave)CArrayFixFlat(1); + setprimfilter->AppendL(UTracePrimary); + RArray setsecondfilter; + setsecondfilter.Append((TUint32) UTraceSecondary); + logger.SetPrimaryFiltersEnabled(*setprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(setsecondfilter,ETrue); + INFO_PRINTF1(_L("about to set file as output plugin")); + //NB: this of course assumes that the plugin functionality works which is tested more rigorously in the plugin test step + + //Result=logger.AddOutputPlugin(KTextplugin); + if(Result==0) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + Result=logger.ActivateOutputPlugin(mediaptr); + if(Result==0||Result==-11) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KTextvalue, "C:\\logs\\ULoggerKernelPrintfTest.log"); + TPluginConfiguration setPluginConfigs; + setPluginConfigs.SetKey(KTextsetting); + setPluginConfigs.SetValue(KTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, setPluginConfigs); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + } + else + INFO_PRINTF1(_L("add file as output plugin failed")); + TInt r = KErrNone; + r=User::LoadLogicalDevice(_L("eusbc.ldd")); + if(r == KErrAlreadyExists) + r = KErrNone; + RDevUsbcClient usbDevice; + if(Result==0) + { + /************** Start Logging to File****************/ + + logger.Start(); + INFO_PRINTF1(_L("now step over some UTrace statements")); + INFO_PRINTF1(_L("Device driver loading.............")); + if (r == KErrNone) + { + INFO_PRINTF1(_L("Device driver loaded successfully!!!!!!!!!!!!!!!!!!")); + r = usbDevice.Open(0); + INFO_PRINTF2(_L("Device driver opening %d"), r); + if(r == KErrNone) + { + r = TestKernelTracer.DoTheKernelPrintf(0, usbDevice); + if(r==KErrNone) + INFO_PRINTF2(_L("SetStringDescriptor %d"), r); + else + INFO_PRINTF2(_L("SetStringDescriptor failed %d"), r); + } + else + INFO_PRINTF1(_L("Device driver opening failed")); + } + else + INFO_PRINTF2(_L("Device Driver didn't load, %d"), r); +#ifdef SYMBIAN_TRACE_ENABLE + INFO_PRINTF1(_L("UTRACING HAS BEEN ENABLED!")); +#else + INFO_PRINTF1(_L("UTRACING HAS BEEN DISABLED! All Log files should be empty/not exist")); +#endif + /************** Stop Logging to File****************/ + + Result=logger.Stop(); + if(Result!=KErrNone) + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with err %d"), Result); + } + else + INFO_PRINTF1(_L("adding file as output plugin failed")); + if(Result==0) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Simple printf logging to file has been tested with kernel side tracing- check output log")); + + /***************************negative test***********************/ + + if(TestStepResult()==EPass) + { + INFO_PRINTF1(_L("Now do some negative logging testing.")); + if(Result==KErrNone) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + if(Result==0||Result==-11) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KnegTextvalue, "C:\\logs\\ULoggerKernelPrintfNegativeLoggingTest.log"); + TPluginConfiguration negSetPluginConfigs; + negSetPluginConfigs.SetKey(KTextsetting); + negSetPluginConfigs.SetValue(KnegTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, negSetPluginConfigs); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + + /**************Now Change the filter settings********/ + + CArrayFixFlat *removeprimfilter = new (ELeave)CArrayFixFlat(1); + removeprimfilter->AppendL(setprimfilter->At(0)); + RArray removesecondfilter; + removesecondfilter.Append(setsecondfilter[0]); + Result=logger.SetPrimaryFiltersEnabled(*removeprimfilter, EFalse); + if(Result==0) + { + INFO_PRINTF1(_L("Call to removeprimary has passed")); + } + Result=logger.SetSecondaryFiltersEnabled(removesecondfilter, EFalse); + if(Result==0) + { + INFO_PRINTF1(_L("Call to removesecondary has passed")); + } + CArrayFixFlat *newsetprimfilter = new (ELeave)CArrayFixFlat(1); + newsetprimfilter->AppendL((TUint8)(UTracePrimary+2)); + RArray newsetsecondfilter; + newsetsecondfilter.Append((TUint32) (UTraceSecondary+2)); + logger.SetPrimaryFiltersEnabled(*newsetprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(newsetsecondfilter,ETrue); + if(Result==0) + { + logger.Start(); + INFO_PRINTF1(_L("now step over some UTrace statements")); + r = TestKernelTracer.DoTheKernelPrintf(0, usbDevice); + if(r==KErrNone) + INFO_PRINTF2(_L("SetStringDescriptor %d"), r); + else + INFO_PRINTF2(_L("SetStringDescriptor failed %d"), r); + } + Result=logger.Stop(); + if(Result!=0) + { + INFO_PRINTF1(_L("Call to Ulogger.Stop() has failed")); + } + if(newsetprimfilter) + { + delete(newsetprimfilter); + newsetprimfilter=NULL; + } + } + else + INFO_PRINTF1(_L("Incorrect error code when trying to add file as a plug-in when it already exists")); + if(Result==0&&TestStepResult()==EPass) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Simple negative printf logging to file has been tested - check output log")); + } + + /***************************multiple type test***********************/ + // From negative test: primary has been set to UTracePrimary+2 and secondary to UTraceSecondary+2 + if(TestStepResult()==EPass) + { + INFO_PRINTF1(_L("Now do some multiple type printf logging testing.")); + if(Result==0) + { + INFO_PRINTF1(_L("file set as output plugin ok")); + _LIT8(KTextmedia,"uloggerfileplugin"); + TPtrC8 mediaptr(KTextmedia); + if(Result==0||Result==-11) + { INFO_PRINTF1(_L("file set as active output plugin ok")); + _LIT(KTextsetting, "output_path"); + _LIT(KmultTextvalue, "C:\\logs\\ULoggerKernelPrintfMultipleLoggingTest.log"); + TPluginConfiguration setPluginConfigs; + setPluginConfigs.SetKey(KTextsetting); + setPluginConfigs.SetValue(KmultTextvalue); + Result=logger.SetPluginConfigurations(mediaptr, setPluginConfigs); + if(Result==0) + INFO_PRINTF1(_L("output plugin settings set ok")); + else + INFO_PRINTF1(_L("setting output plugin settings failed")); + } + else + INFO_PRINTF1(_L("file not set as active output plugin - failed")); + if(Result==0) + { + /******************reset filters and change call for multiple logging*****/ + + CArrayFixFlat *multsetprimfilter = new (ELeave)CArrayFixFlat(1); + multsetprimfilter->AppendL(UTracePrimary); + RArray multsetsecondfilter; + multsetsecondfilter.Append((TUint32) (UTraceSecondary)); + logger.SetPrimaryFiltersEnabled(*multsetprimfilter,ETrue); + logger.SetSecondaryFiltersEnabled(multsetsecondfilter,ETrue); + INFO_PRINTF1(_L("Now given the two sets of set filters, step over traces of each type, some with matching primary but not secondary and vice versa")); + Result=logger.Start(); + if(Result!=KErrNone) + INFO_PRINTF2(_L("ulogger server didn't start, with error %d"), Result); + + /*****do the tracing**************/ + r = TestKernelTracer.DoTheKernelPrintf(1, usbDevice); + if(r!=KErrNone) + { + INFO_PRINTF2(_L("RemoveStringDescriptor failed with error %d"), r); + } + Result=logger.Stop(); + if(Result!=KErrNone) + { + INFO_PRINTF2(_L("Call to Ulogger.Stop() has failed with error %d"), Result); + } + if(multsetprimfilter) + { + delete(multsetprimfilter); + multsetprimfilter=NULL; + } + } + } + else + INFO_PRINTF1(_L("adding file as output plugin failed")); + if(Result==0&&TestStepResult()==EPass) + SetTestStepResult(EPass); + else + SetTestStepResult(EFail); + INFO_PRINTF1(_L("Multiple printf logging to file with kernel side tracing has been tested - check output log. It should contain four lines of tracing of type, (sec,prim), (sec+2, prim), (sec, prim+2), (sec+2, prim+2)")); + configIni.Clear(logger); + } + if(setprimfilter) + { + delete(setprimfilter); + setprimfilter=NULL; + } + INFO_PRINTF1(_L("Now shutdown the ulogger server session")); + logger.Close(); + + // ************** Block end **************** + } +#else + INFO_PRINTF1(_L("Kernel tests not run on emulator")); +#endif + return TestStepResult(); + } + + + +TVerdict CULoggerAPIKernelPrintfTestStep::doTestStepPostambleL() +/** + * @return - TVerdict code + * Override of base class virtual + */ + { + INFO_PRINTF1(_L("completed kernel printf functionality")); + return TestStepResult(); + } +