diff --git a/src/include/usr/vpd/pvpdenums.H b/src/include/usr/vpd/pvpdenums.H index 28fddb37669..e432a867adb 100644 --- a/src/include/usr/vpd/pvpdenums.H +++ b/src/include/usr/vpd/pvpdenums.H @@ -83,6 +83,7 @@ namespace PVPD VZ = 0x17, LX = 0x18, MB = 0x19, + NV = 0x1A, // Last Keyword PVPD_LAST_KEYWORD, diff --git a/src/usr/vpd/pvpd.H b/src/usr/vpd/pvpd.H index 71d90d084ac..e3e9475210c 100644 --- a/src/usr/vpd/pvpd.H +++ b/src/usr/vpd/pvpd.H @@ -105,6 +105,7 @@ namespace PVPD { VZ, "VZ" }, { LX, "LX" }, { MB, "MB" }, + { NV, "NV" }, // ------------------------------------------------------------------- // DO NOT USE!! This is for test purposes ONLY! diff --git a/src/usr/vpd/test/pvpdtest.H b/src/usr/vpd/test/pvpdtest.H new file mode 100755 index 00000000000..d06dace8161 --- /dev/null +++ b/src/usr/vpd/test/pvpdtest.H @@ -0,0 +1,109 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/usr/vpd/test/pvpdtest.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2013,2017 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +#ifndef __PVPDTEST_H +#define __PVPDTEST_H + +/** + * @file pvpdtest.H + * + * @brief Test cases for pvpd code + */ +#include + +#include +#include +#include +#include +#include + +#include +#include +#include "../pvpd.H" +#include "../ipvpd.H" + +extern trace_desc_t* g_trac_vpd; + +using namespace TARGETING; + + +class pvpdTest: public CxxTest::TestSuite +{ + public: + + /** + * @brief This function will test the numerical order of the pvpdRecords + * and pvpdKeywords structures. + */ + void testpvpdCheckStructOrder ( void ) + { + uint64_t fails = 0x0; + VPD::vpdRecord prevRecord = PVPD::PVPD_FIRST_RECORD; + VPD::vpdKeyword prevKeyword = PVPD::PVPD_FIRST_KEYWORD; + + TRACFCOMP( g_trac_vpd, + ENTER_MRK"testpvpdCheckStructOrder()" ); + + // Check the pvpdRecords structure for proper order + uint32_t entry = 0x0; + for( entry = 0; + entry < (sizeof(PVPD::pvpdRecords)/ + sizeof(PVPD::pvpdRecords[0])); + entry++ ) + { + if( !(PVPD::pvpdRecords[entry].record >= prevRecord) ) + { + fails++; + TS_FAIL( "testpvpdCheckStructOrder() - Record table out of " + "order! Cur Record: 0x%04x, Prev Record: 0x%04x", + PVPD::pvpdRecords[entry].record, + prevRecord ); + } + prevRecord = PVPD::pvpdRecords[entry].record; + } + + // Check the pvpdKeywords structure for proper order + for( entry = 0; + entry < (sizeof(PVPD::pvpdKeywords)/ + sizeof(PVPD::pvpdKeywords[0])); + entry++ ) + { + if( !(PVPD::pvpdKeywords[entry].keyword >= prevKeyword) ) + { + fails++; + TS_FAIL( "testpvpdCheckStructOrder() - " + "Keyword table out of order! Cur Keyword: 0x%04x, Prev Keyword: 0x%04x", + PVPD::pvpdKeywords[entry].keyword, + prevKeyword ); + } + prevKeyword = PVPD::pvpdKeywords[entry].keyword; + } + + TRACFCOMP( g_trac_vpd, + "testpvpdCheckStructOrder - %d fails", + fails ); + } +}; + +#endif //__PVPDTEST_H