1 #include "libpldm/entity.h" 2 3 #include "common/utils.hpp" 4 #include "libpldmresponder/event_parser.hpp" 5 #include "libpldmresponder/pdr.hpp" 6 #include "libpldmresponder/pdr_utils.hpp" 7 #include "libpldmresponder/platform.hpp" 8 #include "oem/ibm/libpldmresponder/inband_code_update.hpp" 9 #include "oem/ibm/libpldmresponder/oem_ibm_handler.hpp" 10 #include "test/mocked_utils.hpp" 11 12 #include <iostream> 13 14 using namespace pldm::utils; 15 using namespace pldm::responder; 16 using namespace pldm::responder::pdr; 17 using namespace pldm::responder::pdr_utils; 18 using namespace pldm::responder::oem_ibm_platform; 19 20 class MockCodeUpdate : public CodeUpdate 21 { 22 public: 23 MockCodeUpdate(const pldm::utils::DBusHandler* dBusIntf) : 24 CodeUpdate(dBusIntf) 25 {} 26 27 MOCK_METHOD(void, setVersions, (), (override)); 28 }; 29 30 TEST(oemSetStateEffecterStatesHandler, testGoodRequest) 31 { 32 uint16_t entityID_ = PLDM_ENTITY_VIRTUAL_MACHINE_MANAGER; 33 uint16_t stateSetId_ = PLDM_OEM_IBM_BOOT_STATE; 34 uint16_t entityInstance_ = 0; 35 uint8_t compSensorCnt_ = 1; 36 37 std::vector<get_sensor_state_field> stateField; 38 39 auto mockDbusHandler = std::make_unique<MockdBusHandler>(); 40 std::unique_ptr<CodeUpdate> mockCodeUpdate = 41 std::make_unique<MockCodeUpdate>(mockDbusHandler.get()); 42 std::unique_ptr<oem_platform::Handler> oemPlatformHandler{}; 43 44 oemPlatformHandler = std::make_unique<oem_ibm_platform::Handler>( 45 mockDbusHandler.get(), mockCodeUpdate.get()); 46 47 auto rc = oemPlatformHandler->getOemStateSensorReadingsHandler( 48 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField); 49 50 ASSERT_EQ(rc, PLDM_SUCCESS); 51 ASSERT_EQ(stateField.size(), 1); 52 ASSERT_EQ(stateField[0].event_state, tSideNum); 53 ASSERT_EQ(stateField[0].sensor_op_state, PLDM_SENSOR_ENABLED); 54 ASSERT_EQ(stateField[0].present_state, PLDM_SENSOR_UNKNOWN); 55 ASSERT_EQ(stateField[0].previous_state, PLDM_SENSOR_UNKNOWN); 56 57 entityInstance_ = 1; 58 59 std::vector<get_sensor_state_field> stateField1; 60 rc = oemPlatformHandler->getOemStateSensorReadingsHandler( 61 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField1); 62 ASSERT_EQ(stateField1.size(), 1); 63 ASSERT_EQ(stateField1[0].event_state, tSideNum); 64 65 entityInstance_ = 2; 66 rc = oemPlatformHandler->getOemStateSensorReadingsHandler( 67 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField1); 68 ASSERT_EQ(stateField1[0].event_state, PLDM_SENSOR_UNKNOWN); 69 70 entityID_ = 40; 71 stateSetId_ = 50; 72 rc = oemPlatformHandler->getOemStateSensorReadingsHandler( 73 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField1); 74 ASSERT_EQ(rc, PLDM_PLATFORM_INVALID_STATE_VALUE); 75 76 entityID_ = PLDM_ENTITY_VIRTUAL_MACHINE_MANAGER; 77 entityInstance_ = 0; 78 stateSetId_ = PLDM_OEM_IBM_BOOT_STATE; 79 compSensorCnt_ = 1; 80 81 std::vector<set_effecter_state_field> setEffecterStateField; 82 setEffecterStateField.push_back({PLDM_REQUEST_SET, pSideNum}); 83 84 rc = oemPlatformHandler->oemSetStateEffecterStatesHandler( 85 entityID_, entityInstance_, stateSetId_, compSensorCnt_, 86 setEffecterStateField); 87 ASSERT_EQ(rc, PLDM_SUCCESS); 88 89 entityInstance_ = 2; 90 rc = oemPlatformHandler->oemSetStateEffecterStatesHandler( 91 entityID_, entityInstance_, stateSetId_, compSensorCnt_, 92 setEffecterStateField); 93 94 ASSERT_EQ(rc, PLDM_PLATFORM_INVALID_STATE_VALUE); 95 96 entityID_ = 34; 97 stateSetId_ = 99; 98 entityInstance_ = 0; 99 rc = oemPlatformHandler->oemSetStateEffecterStatesHandler( 100 entityID_, entityInstance_, stateSetId_, compSensorCnt_, 101 setEffecterStateField); 102 ASSERT_EQ(rc, PLDM_PLATFORM_SET_EFFECTER_UNSUPPORTED_SENSORSTATE); 103 } 104