1de2a132aSGilbert Chen #include "libpldm/entity.h" 2de2a132aSGilbert Chen 3*3c5486d4SThu Nguyen #include "platform-mc/numeric_sensor.hpp" 46c7fed4cSGilbert Chen #include "platform-mc/terminus.hpp" 56c7fed4cSGilbert Chen 66c7fed4cSGilbert Chen #include <gtest/gtest.h> 76c7fed4cSGilbert Chen 86c7fed4cSGilbert Chen TEST(TerminusTest, supportedTypeTest) 96c7fed4cSGilbert Chen { 106c7fed4cSGilbert Chen auto t1 = pldm::platform_mc::Terminus(1, 1 << PLDM_BASE); 116c7fed4cSGilbert Chen auto t2 = pldm::platform_mc::Terminus(2, 126c7fed4cSGilbert Chen 1 << PLDM_BASE | 1 << PLDM_PLATFORM); 136c7fed4cSGilbert Chen 146c7fed4cSGilbert Chen EXPECT_EQ(true, t1.doesSupportType(PLDM_BASE)); 156c7fed4cSGilbert Chen EXPECT_EQ(false, t1.doesSupportType(PLDM_PLATFORM)); 166c7fed4cSGilbert Chen EXPECT_EQ(true, t2.doesSupportType(PLDM_BASE)); 176c7fed4cSGilbert Chen EXPECT_EQ(true, t2.doesSupportType(PLDM_PLATFORM)); 186c7fed4cSGilbert Chen } 196c7fed4cSGilbert Chen 206c7fed4cSGilbert Chen TEST(TerminusTest, getTidTest) 216c7fed4cSGilbert Chen { 226c7fed4cSGilbert Chen const pldm_tid_t tid = 1; 236c7fed4cSGilbert Chen auto t1 = pldm::platform_mc::Terminus(tid, 1 << PLDM_BASE); 246c7fed4cSGilbert Chen 256c7fed4cSGilbert Chen EXPECT_EQ(tid, t1.getTid()); 266c7fed4cSGilbert Chen } 27de2a132aSGilbert Chen 28de2a132aSGilbert Chen TEST(TerminusTest, parseSensorAuxiliaryNamesPDRTest) 29de2a132aSGilbert Chen { 30de2a132aSGilbert Chen auto t1 = pldm::platform_mc::Terminus(1, 31de2a132aSGilbert Chen 1 << PLDM_BASE | 1 << PLDM_PLATFORM); 32de2a132aSGilbert Chen std::vector<uint8_t> pdr1{ 33de2a132aSGilbert Chen 0x0, 34de2a132aSGilbert Chen 0x0, 35de2a132aSGilbert Chen 0x0, 36de2a132aSGilbert Chen 0x1, // record handle 37de2a132aSGilbert Chen 0x1, // PDRHeaderVersion 38de2a132aSGilbert Chen PLDM_SENSOR_AUXILIARY_NAMES_PDR, // PDRType 39de2a132aSGilbert Chen 0x0, 40de2a132aSGilbert Chen 0x0, // recordChangeNumber 41de2a132aSGilbert Chen 0x0, 42de2a132aSGilbert Chen 21, // dataLength 43de2a132aSGilbert Chen 0, 44de2a132aSGilbert Chen 0x0, // PLDMTerminusHandle 45de2a132aSGilbert Chen 0x1, 46de2a132aSGilbert Chen 0x0, // sensorID 47de2a132aSGilbert Chen 0x1, // sensorCount 48de2a132aSGilbert Chen 0x1, // nameStringCount 49de2a132aSGilbert Chen 'e', 50de2a132aSGilbert Chen 'n', 51de2a132aSGilbert Chen 0x0, // nameLanguageTag 52de2a132aSGilbert Chen 0x0, 53de2a132aSGilbert Chen 'T', 54de2a132aSGilbert Chen 0x0, 55de2a132aSGilbert Chen 'E', 56de2a132aSGilbert Chen 0x0, 57de2a132aSGilbert Chen 'M', 58de2a132aSGilbert Chen 0x0, 59de2a132aSGilbert Chen 'P', 60de2a132aSGilbert Chen 0x0, 61de2a132aSGilbert Chen '1', 62de2a132aSGilbert Chen 0x0, 63de2a132aSGilbert Chen 0x0 // sensorName 64de2a132aSGilbert Chen }; 65de2a132aSGilbert Chen 66*3c5486d4SThu Nguyen std::vector<uint8_t> pdr2{ 67*3c5486d4SThu Nguyen 0x1, 0x0, 0x0, 68*3c5486d4SThu Nguyen 0x0, // record handle 69*3c5486d4SThu Nguyen 0x1, // PDRHeaderVersion 70*3c5486d4SThu Nguyen PLDM_ENTITY_AUXILIARY_NAMES_PDR, // PDRType 71*3c5486d4SThu Nguyen 0x1, 72*3c5486d4SThu Nguyen 0x0, // recordChangeNumber 73*3c5486d4SThu Nguyen 0x11, 74*3c5486d4SThu Nguyen 0, // dataLength 75*3c5486d4SThu Nguyen /* Entity Auxiliary Names PDR Data*/ 76*3c5486d4SThu Nguyen 3, 77*3c5486d4SThu Nguyen 0x80, // entityType system software 78*3c5486d4SThu Nguyen 0x1, 79*3c5486d4SThu Nguyen 0x0, // Entity instance number =1 80*3c5486d4SThu Nguyen 0, 81*3c5486d4SThu Nguyen 0, // Overal system 82*3c5486d4SThu Nguyen 0, // shared Name Count one name only 83*3c5486d4SThu Nguyen 01, // nameStringCount 84*3c5486d4SThu Nguyen 0x65, 0x6e, 0x00, 85*3c5486d4SThu Nguyen 0x00, // Language Tag "en" 86*3c5486d4SThu Nguyen 0x53, 0x00, 0x30, 0x00, 87*3c5486d4SThu Nguyen 0x00 // Entity Name "S0" 88*3c5486d4SThu Nguyen }; 89*3c5486d4SThu Nguyen 90de2a132aSGilbert Chen t1.pdrs.emplace_back(pdr1); 91*3c5486d4SThu Nguyen t1.pdrs.emplace_back(pdr2); 92de2a132aSGilbert Chen t1.parseTerminusPDRs(); 93de2a132aSGilbert Chen 94de2a132aSGilbert Chen auto sensorAuxNames = t1.getSensorAuxiliaryNames(0); 95de2a132aSGilbert Chen EXPECT_EQ(nullptr, sensorAuxNames); 96de2a132aSGilbert Chen 97de2a132aSGilbert Chen sensorAuxNames = t1.getSensorAuxiliaryNames(1); 98de2a132aSGilbert Chen EXPECT_NE(nullptr, sensorAuxNames); 99de2a132aSGilbert Chen 100de2a132aSGilbert Chen const auto& [sensorId, sensorCnt, names] = *sensorAuxNames; 101de2a132aSGilbert Chen EXPECT_EQ(1, sensorId); 102de2a132aSGilbert Chen EXPECT_EQ(1, sensorCnt); 103de2a132aSGilbert Chen EXPECT_EQ(1, names.size()); 104de2a132aSGilbert Chen EXPECT_EQ(1, names[0].size()); 105de2a132aSGilbert Chen EXPECT_EQ("en", names[0][0].first); 106de2a132aSGilbert Chen EXPECT_EQ("TEMP1", names[0][0].second); 107*3c5486d4SThu Nguyen EXPECT_EQ(2, t1.pdrs.size()); 108*3c5486d4SThu Nguyen EXPECT_EQ("S0", t1.getTerminusName()); 109*3c5486d4SThu Nguyen } 110*3c5486d4SThu Nguyen 111*3c5486d4SThu Nguyen TEST(TerminusTest, parsePDRTestNoSensorPDR) 112*3c5486d4SThu Nguyen { 113*3c5486d4SThu Nguyen auto t1 = pldm::platform_mc::Terminus(1, 114*3c5486d4SThu Nguyen 1 << PLDM_BASE | 1 << PLDM_PLATFORM); 115*3c5486d4SThu Nguyen std::vector<uint8_t> pdr1{ 116*3c5486d4SThu Nguyen 0x1, 0x0, 0x0, 117*3c5486d4SThu Nguyen 0x0, // record handle 118*3c5486d4SThu Nguyen 0x1, // PDRHeaderVersion 119*3c5486d4SThu Nguyen PLDM_ENTITY_AUXILIARY_NAMES_PDR, // PDRType 120*3c5486d4SThu Nguyen 0x1, 121*3c5486d4SThu Nguyen 0x0, // recordChangeNumber 122*3c5486d4SThu Nguyen 0x11, 123*3c5486d4SThu Nguyen 0, // dataLength 124*3c5486d4SThu Nguyen /* Entity Auxiliary Names PDR Data*/ 125*3c5486d4SThu Nguyen 3, 126*3c5486d4SThu Nguyen 0x80, // entityType system software 127*3c5486d4SThu Nguyen 0x1, 128*3c5486d4SThu Nguyen 0x0, // Entity instance number =1 129*3c5486d4SThu Nguyen 0, 130*3c5486d4SThu Nguyen 0, // Overal system 131*3c5486d4SThu Nguyen 0, // shared Name Count one name only 132*3c5486d4SThu Nguyen 01, // nameStringCount 133*3c5486d4SThu Nguyen 0x65, 0x6e, 0x00, 134*3c5486d4SThu Nguyen 0x00, // Language Tag "en" 135*3c5486d4SThu Nguyen 0x53, 0x00, 0x30, 0x00, 136*3c5486d4SThu Nguyen 0x00 // Entity Name "S0" 137*3c5486d4SThu Nguyen }; 138*3c5486d4SThu Nguyen 139*3c5486d4SThu Nguyen t1.pdrs.emplace_back(pdr1); 140*3c5486d4SThu Nguyen t1.parseTerminusPDRs(); 141*3c5486d4SThu Nguyen 142*3c5486d4SThu Nguyen auto sensorAuxNames = t1.getSensorAuxiliaryNames(1); 143*3c5486d4SThu Nguyen EXPECT_EQ(nullptr, sensorAuxNames); 144de2a132aSGilbert Chen } 145