summaryrefslogtreecommitdiffstats
path: root/src/usr/hwpf/test/hwpisteperrortest.H
diff options
context:
space:
mode:
authorBill Schwartz <whs@us.ibm.com>2013-10-17 08:03:36 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-11-08 15:19:40 -0600
commit06fdca58e18f8a6dae366a12e03b97c7b28d5742 (patch)
treefdb22b6969b05b85cb7b097455ed4101374a5ac1 /src/usr/hwpf/test/hwpisteperrortest.H
parentfd4fe707fca2059867b4573f3f6f1bd3f708b542 (diff)
downloadtalos-hostboot-06fdca58e18f8a6dae366a12e03b97c7b28d5742.tar.gz
talos-hostboot-06fdca58e18f8a6dae366a12e03b97c7b28d5742.zip
istepreasoncodes.H is a merge bottleneck
Eliminate congestion on istepreasoncodes.H by removing error tags and moduleId/Reason codes from iSteps calling IStepError.addErrorDetails. ISteps pass only the failing error log. IStepError.addErrorDetails will get the iStep and substep from the istep dispatcher and add to user data. Change-Id: If8f8796bfeafb80b5dbcea21629137260b07bc72 RTC: 59658 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/6719 Tested-by: Jenkins Server Reviewed-by: MIKE J. JONES <mjjones@us.ibm.com> Reviewed-by: Brian H. Horton <brianh@linux.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/usr/hwpf/test/hwpisteperrortest.H')
-rw-r--r--src/usr/hwpf/test/hwpisteperrortest.H381
1 files changed, 213 insertions, 168 deletions
diff --git a/src/usr/hwpf/test/hwpisteperrortest.H b/src/usr/hwpf/test/hwpisteperrortest.H
index 0af67a776..f6fbd1faf 100644
--- a/src/usr/hwpf/test/hwpisteperrortest.H
+++ b/src/usr/hwpf/test/hwpisteperrortest.H
@@ -26,6 +26,7 @@
#include <cxxtest/TestSuite.H>
#include <errl/errlentry.H>
#include <hwpisteperror.H>
+#include <istepdispatcher.H>
using namespace ISTEP;
using namespace ISTEP_ERROR;
@@ -38,204 +39,248 @@ public:
*/
void testIstepError1(void)
{
+ uint8_t l_iStep = 0;
+ uint8_t l_subStep =0;
+ const uint16_t MY_REASON_CODE = 0xC0DE;
+ const uint8_t MY_MODULE_ID = 0xBB;
- const uint16_t MY_REASON_CODE = 0xC0DE;
- const uint8_t MY_MODULE_ID = 0xBB;
- // Create an error log
- errlHndl_t l_errl = new ERRORLOG::ErrlEntry(
- ERRORLOG::ERRL_SEV_INFORMATIONAL,
- MY_MODULE_ID,
- MY_REASON_CODE,
- TWO_UINT32_TO_UINT64( 0xDE, 0xAD),
- TO_UINT64(0xBEEF) );
- do {
+ TS_TRACE("testIStepError1: entry");
- IStepError l_stepError;
+ // Get the expected iStep and subStep. Likely the last valid values
+ // since the test case is running after the iSteps.
+ INITSERVICE::IStepDispatcher::
+ getTheInstance().getIstepInfo(l_iStep,l_subStep);
- l_stepError.addErrorDetails( ISTEP_INVALID_REASONCODE,
- ISTEP_INVALID_MODULE, l_errl );
+ // Create an error log
+ errlHndl_t l_errl = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_INFORMATIONAL,
+ MY_MODULE_ID,
+ MY_REASON_CODE,
+ TWO_UINT32_TO_UINT64( 0xDE, 0xAD),
+ TO_UINT64(0xBEEF) );
+ do {
- TS_TRACE("testIStepError1: original elog eid is %d",
+ IStepError l_stepError;
+
+ l_stepError.addErrorDetails( l_errl );
+
+ TS_TRACE("testIStepError1: original elog eid is %d",
l_errl->eid() );
- TS_TRACE("testIStepError1: original elog reasoncode is %d",
+ TS_TRACE("testIStepError1: original elog reasoncode is %d",
l_errl->reasonCode() );
- // grab the values from the original errorlog for use later
- uint64_t test_data0 = l_errl->eid();
- test_data0 <<= 32;
+ // grab the values from the original errorlog for use later
+ uint64_t test_data0 = l_errl->eid();
+ test_data0 <<= 32;
- test_data0 |= l_errl->reasonCode();
+ test_data0 |= l_errl->reasonCode();
- // this call to get resets the error handle
- errlHndl_t new_errl = l_stepError.getErrorHandle();
+ // this call to get resets the error handle
+ errlHndl_t new_errl = l_stepError.getErrorHandle();
- uint64_t l_data0 = new_errl->getUserData1();
+ uint64_t l_data0 = new_errl->getUserData1();
- uint32_t eid = ( l_data0 & 0xFFFFFFFF00000000) >> 32;
- uint32_t reason = (uint32_t)(l_data0 & 0x00000000FFFFFFFF);
+ uint32_t eid = ( l_data0 & 0xFFFFFFFF00000000) >> 32;
+ uint32_t reason = (uint32_t)(l_data0 & 0x00000000FFFFFFFF);
- if( eid != l_errl->eid() )
- {
- TS_FAIL("testIstepError1: expected"
+ // Verify the reference to the added error log.
+ // Added log id is in bytes 0-3 of userdata 1.
+ // Reason code is in bytes 4-6 of userdata 1.
+ if( eid != l_errl->eid() )
+ {
+ TS_FAIL("testIstepError1: expected"
"eid[0x%.8x] == l_errl->eid()[0x%.8x] "
"eid rebuilt from user data of "
"IStepError did not match original error eid",
eid, l_errl->eid());
- }
- else
- {
- TS_TRACE("testIstepError1: passed: eid == l_errl->eid()");
- }
-
- if( reason != l_errl->reasonCode() )
- {
- TS_FAIL("testIstepError1: "
- "expected reasonCode == l_errl->reasonCode() \
- reasonCode rebuilt from user data of \
- IStepError did not match original reasoncode");
-
- }
- else
- {
- TS_TRACE("testIstepError1: passed: "
- "reason == l_errl->reasonCode()");
- }
-
-
- // verify that we counted the error we added
- // count is in bytes 0-3 of userdata 2
- //
- uint64_t l_data1 = new_errl->getUserData2();
-
- l_data1 >>= 32;
-
- if( l_data1 != 1 )
- {
- TS_FAIL("error count in IStepError not correct should be 1");
- }
- else
- {
- TS_TRACE("passed: error count = 1");
- }
-
-
- errlCommit( l_errl, CXXTEST_COMP_ID );
- errlCommit( new_errl, CXXTEST_COMP_ID );
-
- }while(0);
+ }
+ else
+ {
+ TS_TRACE("testIstepError1: passed: eid == l_errl->eid()");
+ }
+
+ if( reason != l_errl->reasonCode() )
+ {
+ TS_FAIL("testIstepError1: "
+ "expected reasonCode == l_errl->reasonCode() \
+ reasonCode rebuilt from user data of \
+ IStepError did not match original reasoncode");
+
+ }
+ else
+ {
+ TS_TRACE("testIstepError1: passed: "
+ "reason == l_errl->reasonCode()");
+ }
+
+ // Verify that we counted the error we added.
+ // Count is in bytes 0-3 of userdata 2.
+ // iStep and subStep in bytes 4-6 of userdata 2.
+ uint64_t l_data1 = new_errl->getUserData2();
+
+ uint32_t l_count = ( l_data1&0xFFFFFFFF00000000 ) >> 32;
+ uint32_t l_errlStepSubStep =
+ (uint32_t)(l_data1&0x00000000FFFFFFFF);
+ uint32_t l_expectedStepSubStep =
+ (uint32_t)(l_subStep | (l_iStep<<8));
+
+ if( l_count != 1 )
+ {
+ TS_FAIL("error count in IStepError not correct,"
+ " should be 1, is %d",l_count);
+ }
+ else
+ {
+ TS_TRACE("passed: error count = 1");
+ }
+
+ if( l_errlStepSubStep != l_expectedStepSubStep )
+ {
+ TS_FAIL("Step/SubStep in IStepError not correct,"
+ " should be 0x%08x, is 0x%08x ",
+ l_expectedStepSubStep,
+ l_errlStepSubStep);
+ }
+ else
+ {
+ TS_TRACE("passed: step/subStep correct");
+ }
+
+ errlCommit( l_errl, CXXTEST_COMP_ID );
+ errlCommit( new_errl, CXXTEST_COMP_ID );
+
+ }while(0);
}
+
void testIstepError2(void)
{
+ uint8_t l_iStep = 0;
+ uint8_t l_subStep =0;
+ const uint16_t MY_REASON_CODE = 0xC0DE;
+ const uint8_t MY_MODULE_ID = 0xBB;
- const uint16_t MY_REASON_CODE = 0xC0DE;
- const uint8_t MY_MODULE_ID = 0xBB;
- // Create an error log
- errlHndl_t l_errl = new ERRORLOG::ErrlEntry(
- ERRORLOG::ERRL_SEV_INFORMATIONAL,
- MY_MODULE_ID,
- MY_REASON_CODE,
- TWO_UINT32_TO_UINT64( 0xDE, 0xAD),
- TO_UINT64(0xBEEF) );
- do {
-
- IStepError l_stepError;
-
- l_stepError.addErrorDetails( ISTEP_INVALID_REASONCODE,
- ISTEP_INVALID_MODULE, l_errl );
-
- TS_TRACE("testIStepError2: original elog eid is %d",
- l_errl->eid() );
-
- TS_TRACE("testIStepError2: original elog reasoncode is %d",
- l_errl->reasonCode() );
-
- // grab the values from the original errorlog for use later
- uint64_t test_data0 = l_errl->eid();
- test_data0 <<= 32;
+ TS_TRACE("testIStepError2: entry");
- test_data0 |= l_errl->reasonCode();
+ // Get the expected iStep and subStep. Likely the last valid values
+ // since the test case is running after the iSteps.
+ INITSERVICE::IStepDispatcher::
+ getTheInstance().getIstepInfo(l_iStep,l_subStep);
- // add a new elog in three more times..
- // Create an error log -- junk data
- errlHndl_t l_errl2 = new ERRORLOG::ErrlEntry(
- ERRORLOG::ERRL_SEV_INFORMATIONAL,
- 0x05,
- 0xcafe,
- TWO_UINT32_TO_UINT64( 0xDE, 0xAD),
- TO_UINT64(0xBEEF) );
-
- l_stepError.addErrorDetails( ISTEP_INVALID_REASONCODE,
- ISTEP_INVALID_MODULE, l_errl2);
+ // Create an error log
+ errlHndl_t l_errl = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_INFORMATIONAL,
+ MY_MODULE_ID,
+ MY_REASON_CODE,
+ TWO_UINT32_TO_UINT64( 0xDE, 0xAD),
+ TO_UINT64(0xBEEF) );
+ do {
- l_stepError.addErrorDetails( ISTEP_INVALID_REASONCODE,
- ISTEP_INVALID_MODULE, l_errl2);
+ IStepError l_stepError;
- l_stepError.addErrorDetails( ISTEP_INVALID_REASONCODE,
- ISTEP_INVALID_MODULE, l_errl2);
+ l_stepError.addErrorDetails( l_errl );
- // count should be 4 and the data0 and data 1 values of the
- // istep error should be the same as before
+ TS_TRACE("testIStepError2: original elog eid is %d",
+ l_errl->eid() );
+ TS_TRACE("testIStepError2: original elog reasoncode is %d",
+ l_errl->reasonCode() );
- // this call to get resets the error handle
- errlHndl_t new_errl = l_stepError.getErrorHandle();
+ // grab the values from the original errorlog for use later
+ uint64_t test_data0 = l_errl->eid();
+ test_data0 <<= 32;
- uint64_t l_data0 = new_errl->getUserData1();
+ test_data0 |= l_errl->reasonCode();
- uint32_t eid = ( l_data0 & 0xFFFFFFFF00000000) >> 32;
- uint32_t reason = (uint32_t)(l_data0 & 0x00000000FFFFFFFF);
-
- if( eid != l_errl->eid() )
- {
- TS_FAIL("testIStepError2: expected "
- "eid[0x%.8x] == l_errl->eid()[0x%.8x] "
- "eid rebuilt from user data of "
- "IStepError did not match original error eid",
- eid, l_errl->eid());
- }
- else
- {
- TS_TRACE("testIStepError2: passed: eid == l_errl->eid()");
- }
-
- if( reason != l_errl->reasonCode() )
- {
- TS_FAIL("testIStepError2: "
- "expected reasonCode == l_errl->reasonCode()"
- "reasonCode rebuilt from user data of"
- "IStepError did not match original reasoncode");
-
- }
- else
- {
- TS_TRACE("testIStepError2: passed: "
- "reason == l_errl->reasonCode()");
- }
-
- // verify that we counted the error we added
- // count is in bytes 0-3 of userdata 2
- //
- uint64_t l_data1 = new_errl->getUserData2();
-
- l_data1 >>= 32;
-
- if( l_data1 != 4 )
- {
- TS_FAIL("error count in IStepError not correct"
- "should be 4");
- TS_TRACE("error count is %d", l_data1 );
- }
- else
- {
- TS_TRACE("passed: error count is correct [%d]", l_data1 );
- }
-
- errlCommit( l_errl, CXXTEST_COMP_ID );
- errlCommit( new_errl, CXXTEST_COMP_ID );
- errlCommit( l_errl2, CXXTEST_COMP_ID );
-
- }while(0);
+ // add a new elog in three more times..
+ // Create an error log -- junk data
+ errlHndl_t l_errl2 = new ERRORLOG::ErrlEntry(
+ ERRORLOG::ERRL_SEV_INFORMATIONAL,
+ 0x05,
+ 0xcafe,
+ TWO_UINT32_TO_UINT64( 0xDE, 0xAD),
+ TO_UINT64(0xBEEF) );
+
+ l_stepError.addErrorDetails( l_errl2 );
+ l_stepError.addErrorDetails( l_errl2 );
+ l_stepError.addErrorDetails( l_errl2 );
+
+ // count should be 4 and the data0 and data 1 values of the
+ // istep error should be the same as before
+
+ // this call to get resets the error handle
+ errlHndl_t new_errl = l_stepError.getErrorHandle();
+
+ uint64_t l_data0 = new_errl->getUserData1();
+
+ uint32_t eid = ( l_data0 & 0xFFFFFFFF00000000) >> 32;
+ uint32_t reason = (uint32_t)(l_data0 & 0x00000000FFFFFFFF);
+
+ if( eid != l_errl->eid() )
+ {
+ TS_FAIL("testIStepError2: expected "
+ "eid[0x%.8x] == l_errl->eid()[0x%.8x] "
+ "eid rebuilt from user data of "
+ "IStepError did not match original error eid",
+ eid, l_errl->eid());
+ }
+ else
+ {
+ TS_TRACE("testIStepError2: passed: eid == l_errl->eid()");
+ }
+
+ if( reason != l_errl->reasonCode() )
+ {
+ TS_FAIL("testIStepError2: "
+ "expected reasonCode == l_errl->reasonCode()"
+ "reasonCode rebuilt from user data of"
+ "IStepError did not match original reasoncode");
+
+ }
+ else
+ {
+ TS_TRACE("testIStepError2: passed: "
+ "reason == l_errl->reasonCode()");
+ }
+
+ // Verify that 4 logs have been added.
+ // Count is in bytes 0-3 of userdata 2.
+ // iStep and subStep in bytes 4-6 of userdata 2.
+ uint64_t l_data1 = new_errl->getUserData2();
+
+ uint32_t l_count = ( l_data1&0xFFFFFFFF00000000 ) >> 32;
+ uint32_t l_errlStepSubStep =
+ (uint32_t)(l_data1&0x00000000FFFFFFFF);
+ uint32_t l_expectedStepSubStep =
+ (uint32_t)(l_subStep | (l_iStep<<8));
+
+ if( l_count != 4 )
+ {
+ TS_FAIL("error count in IStepError not correct,"
+ " should be 4, is %d",l_count);
+ }
+ else
+ {
+ TS_TRACE("passed: error count = 4");
+ }
+
+ if( l_errlStepSubStep != l_expectedStepSubStep )
+ {
+ TS_FAIL("Step/SubStep in IStepError not correct,"
+ " should be 0x%08x, is 0x%08x ",
+ l_expectedStepSubStep,
+ l_errlStepSubStep);
+ }
+ else
+ {
+ TS_TRACE("passed: step/subStep correct");
+ }
+
+ errlCommit( l_errl, CXXTEST_COMP_ID );
+ errlCommit( new_errl, CXXTEST_COMP_ID );
+ errlCommit( l_errl2, CXXTEST_COMP_ID );
+
+ }while(0);
}
};
OpenPOWER on IntegriCloud