blob: 6b837dd9c1e4517b0f2f41951c6091cd29a8998e [file] [log] [blame]
Sampa Misraaea5dde2020-08-31 08:33:47 -05001#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
14using namespace pldm::utils;
15using namespace pldm::responder;
16using namespace pldm::responder::pdr;
17using namespace pldm::responder::pdr_utils;
18using namespace pldm::responder::oem_ibm_platform;
19
20class 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
30TEST(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}