diff options
| author | Brian Horton <brianh@linux.ibm.com> | 2012-04-25 15:48:55 -0500 |
|---|---|---|
| committer | A. Patrick Williams III <iawillia@us.ibm.com> | 2012-05-08 17:20:50 -0500 |
| commit | cd9263254cacd7948aad8ba1bd3a98af469b02af (patch) | |
| tree | 26e6c8a9856ac9d5b782173b1f2df9b35fe53e18 /src/usr/errl/test | |
| parent | 8c8f1b51f8f7d366e60ce8ae899b77cd122f86f4 (diff) | |
| download | blackbird-hostboot-cd9263254cacd7948aad8ba1bd3a98af469b02af.tar.gz blackbird-hostboot-cd9263254cacd7948aad8ba1bd3a98af469b02af.zip | |
Errlog User Details: Log Arbitrary Attributes
Add code so that a hostboot or procedure developer can save attributes
into an error log and have them display in a human-readable way in order
to aid debug and FA. All data is stored in errlog in binary format and
decoded into strings and enum 'constants' with the parse function.
Methods to dump and parse the attributes are auto-generated by the
xmltohb.pl script.
In addition, cleanup up Target User Details so that blanks lines aren't
output and so that the attribute name isn't put into the error log and
is instead added by the parse function (smaller errlog usage), and change
to same coding style as other UserDetail functions (data put into buffer
in ctor and not in addToLog function).
following will be added in future story/task work:
- parsing for complex attributes.
- combining multiple attribute user details together instead of
generating a separate log entry for each.
Change-Id: I6baafa36ef095aafabb5bf86d6054bcb3db47019
RTC: 35275
Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/944
Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Tested-by: Jenkins Server
Diffstat (limited to 'src/usr/errl/test')
| -rw-r--r-- | src/usr/errl/test/errluserdetailtest.H | 117 |
1 files changed, 115 insertions, 2 deletions
diff --git a/src/usr/errl/test/errluserdetailtest.H b/src/usr/errl/test/errluserdetailtest.H index 8fb1f3ed5..c70119a74 100644 --- a/src/usr/errl/test/errluserdetailtest.H +++ b/src/usr/errl/test/errluserdetailtest.H @@ -35,6 +35,13 @@ #include <errl/errluserdetails.H> #include <errl/errlreasoncodes.H> #include <errl/errludstring.H> +#include <errl/errludbacktrace.H> +#include <errl/errludtarget.H> +#include <errludattribute.H> +#include <targeting/common/targetservice.H> +#include <targeting/common/iterators/rangefilter.H> +#include <targeting/common/predicates/predicates.H> +#include <targeting/common/util.H> using namespace ERRORLOG; @@ -61,8 +68,8 @@ public: * @userdata2 Test data 2 * @devdesc User Details unit test - create string user detail data */ - l_errl = new ERRORLOG::ErrlEntry( - ERRORLOG::ERRL_SEV_INFORMATIONAL, + l_errl = new ErrlEntry( + ERRL_SEV_INFORMATIONAL, HBERRL_USERDATA_TEST_MOD_ID, HBERRL_TEST_STRING_UD, 0x1234567890, // user1 @@ -76,6 +83,112 @@ public: errlCommit(l_errl, CXXTEST_COMP_ID); } + /** + * @test testAttribute - Capture a String in an error log + */ + void testAttribute(void) + { + errlHndl_t l_err = NULL; + + TS_TRACE( "testAttribute errorlog user detail data"); + /*@ + * @errortype + * @severity ERRORLOG_SEV_INFORMATIONAL + * @moduleid HBERRL_USERDATA_TEST_MOD_ID + * @reasoncode HBERRL_TEST_ATTRIBUTE_UD + * @userdata1 Test data 1 + * @userdata2 Test data 2 + * @devdesc User Details unit test - create string user detail data + */ + l_err = new ErrlEntry( + ERRL_SEV_INFORMATIONAL, + HBERRL_USERDATA_TEST_MOD_ID, + HBERRL_TEST_ATTRIBUTE_UD, + 0x0001002300450067, + 0x008900AB00CD00EF); + + using namespace TARGETING; + + // find a proc target + PredicateCTM procChipFilter(CLASS_CHIP,TYPE_PROC); + TargetRangeFilter pProc( + targetService().begin(), targetService().end(), + &procChipFilter); + + // find a membuf target + PredicateCTM membufChipFilter(CLASS_CHIP,TYPE_MEMBUF); + TargetRangeFilter pMembuf( + targetService().begin(), targetService().end(), + &membufChipFilter); + + // find a dimm target + PredicateCTM dimmChipFilter(CLASS_NA,TYPE_DIMM); + TargetRangeFilter pDimm( + targetService().begin(), targetService().end(), + &dimmChipFilter); + + const Target* c_target; + c_target = *pProc; + TS_TRACE( "testAttribute pProc %p", c_target); + ErrlUserDetailsString("Attribute test").addToLog(l_err); + ErrlUserDetailsTarget(c_target).addToLog(l_err); + ErrlUserDetailsBackTrace().addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_CLASS).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_TYPE).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_MODEL).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_PHYS_PATH).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_SCRATCH_UINT8_1).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_HUID).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_DUMMY_WO).addToLog(l_err); + ErrlUserDetailsAttribute(c_target).addToLog(l_err); + + c_target = *pMembuf; + TS_TRACE( "testAttribute pMembuf %p", c_target); + ErrlUserDetailsString("Attribute test").addToLog(l_err); + ErrlUserDetailsTarget(c_target).addToLog(l_err); + ErrlUserDetailsBackTrace().addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_CLASS).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_TYPE).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_MODEL).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_PHYS_PATH).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_SCRATCH_UINT8_1).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_HUID).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_DUMMY_WO).addToLog(l_err); + ErrlUserDetailsAttribute(c_target).addToLog(l_err); + + c_target = *pDimm; + TS_TRACE( "testAttribute pDimm %p", c_target); + ErrlUserDetailsString("Attribute test").addToLog(l_err); + ErrlUserDetailsTarget(c_target).addToLog(l_err); + ErrlUserDetailsBackTrace().addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_CLASS).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_TYPE).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_MODEL).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_PHYS_PATH).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_SCRATCH_UINT8_1).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_HUID).addToLog(l_err); + ErrlUserDetailsAttribute(c_target,ATTR_DUMMY_WO).addToLog(l_err); + ErrlUserDetailsAttribute(c_target).addToLog(l_err); + +#if 0 + // extended test + uint32_t i = 0; + for (TargetIterator target = targetService().begin(); + (i < 10) && (target != targetService().end()); + ++i, ++target) + { + TS_TRACE( "testAttribute %p", *target); + const Target* c_target = *target; + ErrlUserDetailsTarget(c_target).addToLog(l_err); + ErrlUserDetailsAttribute(c_target).addToLog(l_err); + } +#endif + + // commit the errorlog + errlCommit(l_err, CXXTEST_COMP_ID); + TS_TRACE( "testAttribute done"); + } + }; #endif |

