diff options
Diffstat (limited to 'src/usr/pnor/test/pnorddtest.H')
-rw-r--r-- | src/usr/pnor/test/pnorddtest.H | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/src/usr/pnor/test/pnorddtest.H b/src/usr/pnor/test/pnorddtest.H new file mode 100644 index 000000000..a60d53efe --- /dev/null +++ b/src/usr/pnor/test/pnorddtest.H @@ -0,0 +1,130 @@ +#ifndef __PNORDDTEST_H +#define __PNORDDTEST_H + +/** + * @file pnorddtest.H + * + * @brief Test case for PNOR Resource Provider +*/ + +#include <cxxtest/TestSuite.H> +#include <errl/errlmanager.H> +#include <errl/errlentry.H> +#include <errl/errltypes.H> +#include <pnor/pnorif.H> +#include <devicefw/userif.H> +//#include "../pnordd.H" + +extern trace_desc_t* g_trac_pnor; +using namespace TARGETING; + + +class PnorDdTest : public CxxTest::TestSuite +{ + public: + + /** + * @brief PNOR DD test #1 + * Write some data to PNOR and read it back again + */ + void testPnorDD1(void) + { + //@TODO: make this table driven so it can test more values + //@TODO: compare results with expected data. + //@TODO: Add some more interesting tests + + TARGETING::Target* l_testTarget = MASTER_PROCESSOR_CHIP_TARGET_SENTINEL; + size_t l_size = sizeof(uint64_t); + errlHndl_t l_err = NULL; + + do{ + TS_TRACE("testPnorDD1: starting"); + + // Perform PnorDD Write 1 + uint64_t l_address = 0x100; + uint64_t l_writeData = 0x12345678FEEDB0B0; + l_err = deviceWrite(l_testTarget, + &l_writeData, + l_size, + DEVICE_PNOR_ADDRESS(0, l_address)); + if (l_err) + { + TS_FAIL("testPnorDD1: PNORDD write 1: deviceWrite() failed! Error committed."); + break; + } + else + { + TS_TRACE("testPnorDD1: PNORDD write 1, Address 0x%llx, Data %llx", + l_address, + (long long unsigned)l_writeData); + } + + + // Perform PnorDD Write 2 + l_address = 0x108; + l_writeData = 0xFEEDBEEF000ABCDE; + l_err = deviceWrite(l_testTarget, + &l_writeData, + l_size, + DEVICE_PNOR_ADDRESS(0, l_address)); + if (l_err) + { + TS_FAIL("testPnorDD1: PNORDD write 2: deviceWrite() failed! Error committed."); + break; + } + else + { + TS_TRACE("testPnorDD1: PNORDD write 2, Address 0x%llx, Data %llx", + l_address, + (long long unsigned)l_writeData); + } + + // Perform PnorDD read 1 + l_address = 0x100; + uint64_t l_readData = 0; + l_err = deviceRead(l_testTarget, + &l_readData, + l_size, + DEVICE_PNOR_ADDRESS(0, l_address)); + if (l_err) + { + TS_FAIL("testPnorDD1: PNORDD read 1: deviceRead() failed! Error committed."); + break; + } + else + { + TS_TRACE("testPnorDD1: PNORDD read 1, Address 0x%llx, Data %llx", + l_address, + (long long unsigned)l_readData); + } + + // Perform PnorDD read 2 + l_address = 0x108; + l_err = deviceRead(l_testTarget, + &l_readData, + l_size, + DEVICE_PNOR_ADDRESS(0, l_address)); + if (l_err) + { + TS_FAIL("testPnorDD1: PNORDD read 2: deviceRead() failed! Error committed."); + break; + } + else + { + TS_TRACE("testPnorDD1: PNORDD read 2, Address 0x%llx, Data %llx", + l_address, + (long long unsigned)l_readData); + } + + }while(0); + + + //@TODO: Add total fail/pass count trace to know how many passed. + + }; + + +}; + + +#endif |