blob: bb157f205452e73b435566044a7e3ab10ee4e4b3 [file] [log] [blame]
Tom Joseph53279882021-04-28 06:29:13 -07001#include "common/test/mocked_utils.hpp"
Sampa Misraaea5dde2020-08-31 08:33:47 -05002#include "common/utils.hpp"
3#include "libpldmresponder/event_parser.hpp"
4#include "libpldmresponder/pdr.hpp"
5#include "libpldmresponder/pdr_utils.hpp"
6#include "libpldmresponder/platform.hpp"
7#include "oem/ibm/libpldmresponder/inband_code_update.hpp"
8#include "oem/ibm/libpldmresponder/oem_ibm_handler.hpp"
Andrew Jeffery7c1dc7e2023-04-28 14:52:16 +09309#include "test/test_instance_id.hpp"
Sampa Misraaea5dde2020-08-31 08:33:47 -050010
George Liuc453e162022-12-21 17:16:23 +080011#include <libpldm/entity.h>
Brad Bishop27403f42021-12-01 21:37:44 -050012#include <libpldm/entity_oem_ibm.h>
13
Sampa Misra3a0e3b92020-10-21 05:58:00 -050014#include <sdeventplus/event.hpp>
15
Sampa Misraaea5dde2020-08-31 08:33:47 -050016#include <iostream>
17
18using namespace pldm::utils;
19using namespace pldm::responder;
20using namespace pldm::responder::pdr;
21using namespace pldm::responder::pdr_utils;
22using namespace pldm::responder::oem_ibm_platform;
23
24class MockCodeUpdate : public CodeUpdate
25{
26 public:
27 MockCodeUpdate(const pldm::utils::DBusHandler* dBusIntf) :
28 CodeUpdate(dBusIntf)
29 {}
30
31 MOCK_METHOD(void, setVersions, (), (override));
32};
33
Sagar Srinivas360c53f2020-10-15 07:26:31 -050034class MockOemPlatformHandler : public oem_ibm_platform::Handler
35{
36 public:
37 MockOemPlatformHandler(const pldm::utils::DBusHandler* dBusIntf,
38 pldm::responder::CodeUpdate* codeUpdate, int mctp_fd,
Andrew Jefferya330b2f2023-05-04 14:55:37 +093039 uint8_t mctp_eid, pldm::InstanceIdDb& instanceIdDb,
Sagar Srinivas360c53f2020-10-15 07:26:31 -050040 sdeventplus::Event& event) :
41 oem_ibm_platform::Handler(dBusIntf, codeUpdate, mctp_fd, mctp_eid,
Andrew Jefferya330b2f2023-05-04 14:55:37 +093042 instanceIdDb, event, nullptr)
Sagar Srinivas360c53f2020-10-15 07:26:31 -050043 {}
44 MOCK_METHOD(uint16_t, getNextEffecterId, ());
45 MOCK_METHOD(uint16_t, getNextSensorId, ());
46};
47
48TEST(OemSetStateEffecterStatesHandler, testGoodRequest)
Sampa Misraaea5dde2020-08-31 08:33:47 -050049{
Sagar Srinivas78a225a2020-08-27 00:52:20 -050050 uint16_t entityID_ = PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE;
Sampa Misraaea5dde2020-08-31 08:33:47 -050051 uint16_t stateSetId_ = PLDM_OEM_IBM_BOOT_STATE;
52 uint16_t entityInstance_ = 0;
53 uint8_t compSensorCnt_ = 1;
Varsha Kaverappa3fbd39e2020-09-28 01:40:22 -050054 uint16_t effecterId = 0xA;
Andrew Jeffery7c1dc7e2023-04-28 14:52:16 +093055 TestInstanceIdDb instanceIdDb;
56
Patrick Williams84b790c2022-07-22 19:26:56 -050057 sdbusplus::bus_t bus(sdbusplus::bus::new_default());
Sampa Misra3a0e3b92020-10-21 05:58:00 -050058 auto event = sdeventplus::Event::get_default();
Sampa Misraaea5dde2020-08-31 08:33:47 -050059 std::vector<get_sensor_state_field> stateField;
60
61 auto mockDbusHandler = std::make_unique<MockdBusHandler>();
62 std::unique_ptr<CodeUpdate> mockCodeUpdate =
63 std::make_unique<MockCodeUpdate>(mockDbusHandler.get());
64 std::unique_ptr<oem_platform::Handler> oemPlatformHandler{};
65
66 oemPlatformHandler = std::make_unique<oem_ibm_platform::Handler>(
Andrew Jefferya330b2f2023-05-04 14:55:37 +093067 mockDbusHandler.get(), mockCodeUpdate.get(), 0x1, 0x9, instanceIdDb,
68 event, nullptr);
Sampa Misraaea5dde2020-08-31 08:33:47 -050069
70 auto rc = oemPlatformHandler->getOemStateSensorReadingsHandler(
71 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField);
72
73 ASSERT_EQ(rc, PLDM_SUCCESS);
74 ASSERT_EQ(stateField.size(), 1);
75 ASSERT_EQ(stateField[0].event_state, tSideNum);
76 ASSERT_EQ(stateField[0].sensor_op_state, PLDM_SENSOR_ENABLED);
77 ASSERT_EQ(stateField[0].present_state, PLDM_SENSOR_UNKNOWN);
78 ASSERT_EQ(stateField[0].previous_state, PLDM_SENSOR_UNKNOWN);
79
80 entityInstance_ = 1;
81
82 std::vector<get_sensor_state_field> stateField1;
83 rc = oemPlatformHandler->getOemStateSensorReadingsHandler(
84 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField1);
85 ASSERT_EQ(stateField1.size(), 1);
86 ASSERT_EQ(stateField1[0].event_state, tSideNum);
87
88 entityInstance_ = 2;
89 rc = oemPlatformHandler->getOemStateSensorReadingsHandler(
90 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField1);
91 ASSERT_EQ(stateField1[0].event_state, PLDM_SENSOR_UNKNOWN);
92
93 entityID_ = 40;
94 stateSetId_ = 50;
95 rc = oemPlatformHandler->getOemStateSensorReadingsHandler(
96 entityID_, entityInstance_, stateSetId_, compSensorCnt_, stateField1);
97 ASSERT_EQ(rc, PLDM_PLATFORM_INVALID_STATE_VALUE);
98
Sagar Srinivas78a225a2020-08-27 00:52:20 -050099 entityID_ = PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE;
Sampa Misraaea5dde2020-08-31 08:33:47 -0500100 entityInstance_ = 0;
101 stateSetId_ = PLDM_OEM_IBM_BOOT_STATE;
102 compSensorCnt_ = 1;
103
104 std::vector<set_effecter_state_field> setEffecterStateField;
105 setEffecterStateField.push_back({PLDM_REQUEST_SET, pSideNum});
106
Sampa Misra3a0e3b92020-10-21 05:58:00 -0500107 rc = oemPlatformHandler->oemSetStateEffecterStatesHandler(
Sampa Misraaea5dde2020-08-31 08:33:47 -0500108 entityID_, entityInstance_, stateSetId_, compSensorCnt_,
Varsha Kaverappa3fbd39e2020-09-28 01:40:22 -0500109 setEffecterStateField, effecterId);
Sampa Misraaea5dde2020-08-31 08:33:47 -0500110 ASSERT_EQ(rc, PLDM_SUCCESS);
111
112 entityInstance_ = 2;
Sampa Misra3a0e3b92020-10-21 05:58:00 -0500113 rc = oemPlatformHandler->oemSetStateEffecterStatesHandler(
Sampa Misraaea5dde2020-08-31 08:33:47 -0500114 entityID_, entityInstance_, stateSetId_, compSensorCnt_,
Varsha Kaverappa3fbd39e2020-09-28 01:40:22 -0500115 setEffecterStateField, effecterId);
Sampa Misraaea5dde2020-08-31 08:33:47 -0500116
117 ASSERT_EQ(rc, PLDM_PLATFORM_INVALID_STATE_VALUE);
118
119 entityID_ = 34;
120 stateSetId_ = 99;
121 entityInstance_ = 0;
Sampa Misra3a0e3b92020-10-21 05:58:00 -0500122 rc = oemPlatformHandler->oemSetStateEffecterStatesHandler(
Sampa Misraaea5dde2020-08-31 08:33:47 -0500123 entityID_, entityInstance_, stateSetId_, compSensorCnt_,
Varsha Kaverappa3fbd39e2020-09-28 01:40:22 -0500124 setEffecterStateField, effecterId);
Sampa Misraaea5dde2020-08-31 08:33:47 -0500125 ASSERT_EQ(rc, PLDM_PLATFORM_SET_EFFECTER_UNSUPPORTED_SENSORSTATE);
126}
Varsha Kaverappabb585b22020-09-10 06:15:42 -0500127
128TEST(EncodeCodeUpdateEvent, testGoodRequest)
129{
130 size_t sensorEventSize = PLDM_SENSOR_EVENT_DATA_MIN_LENGTH + 1;
131 std::vector<uint8_t> sensorEventDataVec{};
132 sensorEventDataVec.resize(sensorEventSize);
133
134 auto eventData = reinterpret_cast<struct pldm_sensor_event_data*>(
135 sensorEventDataVec.data());
136 eventData->sensor_id = 0xA;
137 eventData->sensor_event_class_type = PLDM_SENSOR_OP_STATE;
138
139 auto opStateSensorEventData =
140 reinterpret_cast<struct pldm_sensor_event_sensor_op_state*>(
141 sensorEventDataVec.data());
142 opStateSensorEventData->present_op_state = uint8_t(CodeUpdateState::START);
143 opStateSensorEventData->previous_op_state = uint8_t(CodeUpdateState::END);
144
145 std::vector<uint8_t> requestMsg(sizeof(pldm_msg_hdr) +
146 PLDM_PLATFORM_EVENT_MESSAGE_MIN_REQ_BYTES +
147 sensorEventDataVec.size());
148
Patrick Williams6da4f912023-05-10 07:50:53 -0500149 auto rc = encodeEventMsg(PLDM_SENSOR_EVENT, sensorEventDataVec, requestMsg,
150 0x1);
Varsha Kaverappabb585b22020-09-10 06:15:42 -0500151
152 EXPECT_EQ(rc, PLDM_SUCCESS);
153}
154
155TEST(EncodeCodeUpdate, testBadRequest)
156{
157 std::vector<uint8_t> requestMsg;
158 std::vector<uint8_t> sensorEventDataVec{};
159
Patrick Williams6da4f912023-05-10 07:50:53 -0500160 auto rc = encodeEventMsg(PLDM_SENSOR_EVENT, sensorEventDataVec, requestMsg,
161 0x1);
Varsha Kaverappabb585b22020-09-10 06:15:42 -0500162
163 EXPECT_EQ(rc, PLDM_ERROR_INVALID_DATA);
164}
Varsha Kaverappa3ca29df2020-09-27 12:39:22 -0500165
166TEST(clearDirPath, testClearDirPath)
167{
168 char dirPath[] = "/tmp/testClearDir/";
169 fs::path dir(dirPath);
170 fs::create_directories(dir);
171 struct stat buffer;
172 ASSERT_EQ(stat(dirPath, &buffer), 0);
173 char filePath[] = "/tmp/testClearDir/file.txt";
174 std::ofstream file(filePath);
175 ASSERT_EQ(stat(filePath, &buffer), 0);
176
177 auto mockDbusHandler = std::make_unique<MockdBusHandler>();
178 std::unique_ptr<CodeUpdate> mockCodeUpdate =
179 std::make_unique<MockCodeUpdate>(mockDbusHandler.get());
180
181 mockCodeUpdate->clearDirPath(dirPath);
182 ASSERT_EQ(stat(filePath, &buffer), -1);
183 ASSERT_EQ(stat(dirPath, &buffer), 0);
184}
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500185
186TEST(generateStateEffecterOEMPDR, testGoodRequest)
187{
188 auto inPDRRepo = pldm_pdr_init();
Patrick Williams84b790c2022-07-22 19:26:56 -0500189 sdbusplus::bus_t bus(sdbusplus::bus::new_default());
Andrew Jeffery7c1dc7e2023-04-28 14:52:16 +0930190 std::filesystem::path dbPath;
191 TestInstanceIdDb instanceIdDb;
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500192 auto mockDbusHandler = std::make_unique<MockdBusHandler>();
193 auto event = sdeventplus::Event::get_default();
194 std::unique_ptr<CodeUpdate> mockCodeUpdate =
195 std::make_unique<MockCodeUpdate>(mockDbusHandler.get());
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500196 std::unique_ptr<oem_ibm_platform::Handler> mockoemPlatformHandler =
197 std::make_unique<MockOemPlatformHandler>(mockDbusHandler.get(),
198 mockCodeUpdate.get(), 0x1, 0x9,
Andrew Jefferya330b2f2023-05-04 14:55:37 +0930199 instanceIdDb, event);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500200 Repo inRepo(inPDRRepo);
201
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530202 mockoemPlatformHandler->buildOEMPDR(inRepo);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500203 ASSERT_EQ(inRepo.empty(), false);
204
205 pdr_utils::PdrEntry e;
206
207 // Test for effecter number 1, for current boot side state
208 auto record1 = pdr::getRecordByHandle(inRepo, 1, e);
209 ASSERT_NE(record1, nullptr);
210
211 pldm_state_effecter_pdr* pdr =
212 reinterpret_cast<pldm_state_effecter_pdr*>(e.data);
213
214 ASSERT_EQ(pdr->hdr.record_handle, 1);
215 ASSERT_EQ(pdr->hdr.version, 1);
216 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_EFFECTER_PDR);
217 ASSERT_EQ(pdr->hdr.record_change_num, 0);
218 ASSERT_EQ(pdr->hdr.length, 16);
Manojkiran Edacc5f1582021-09-29 17:03:06 +0530219 ASSERT_EQ(pdr->terminus_handle, TERMINUS_HANDLE);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500220 ASSERT_EQ(pdr->entity_type, PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE);
221 ASSERT_EQ(pdr->entity_instance, 0);
Patel-Kamalkumar68f5bbd2022-10-07 07:29:20 +0000222 ASSERT_EQ(pdr->container_id, 1);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500223 ASSERT_EQ(pdr->effecter_semantic_id, 0);
224 ASSERT_EQ(pdr->effecter_init, PLDM_NO_INIT);
225 ASSERT_EQ(pdr->has_description_pdr, false);
226 ASSERT_EQ(pdr->composite_effecter_count, 1);
227 state_effecter_possible_states* states =
228 reinterpret_cast<state_effecter_possible_states*>(pdr->possible_states);
229 ASSERT_EQ(states->state_set_id, 32769);
230 ASSERT_EQ(states->possible_states_size, 2);
231 bitfield8_t bf1{};
232 bf1.byte = 6;
233 ASSERT_EQ(states->states[0].byte, bf1.byte);
234
235 // Test for effecter number 2, for next boot side state
236 auto record2 = pdr::getRecordByHandle(inRepo, 2, e);
237 ASSERT_NE(record2, nullptr);
238
239 pdr = reinterpret_cast<pldm_state_effecter_pdr*>(e.data);
240
241 ASSERT_EQ(pdr->hdr.record_handle, 2);
242 ASSERT_EQ(pdr->hdr.version, 1);
243 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_EFFECTER_PDR);
244 ASSERT_EQ(pdr->hdr.record_change_num, 0);
245 ASSERT_EQ(pdr->hdr.length, 16);
Manojkiran Edacc5f1582021-09-29 17:03:06 +0530246 ASSERT_EQ(pdr->terminus_handle, TERMINUS_HANDLE);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500247 ASSERT_EQ(pdr->entity_type, PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE);
248 ASSERT_EQ(pdr->entity_instance, 1);
Patel-Kamalkumar68f5bbd2022-10-07 07:29:20 +0000249 ASSERT_EQ(pdr->container_id, 1);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500250 ASSERT_EQ(pdr->effecter_semantic_id, 0);
251 ASSERT_EQ(pdr->effecter_init, PLDM_NO_INIT);
252 ASSERT_EQ(pdr->has_description_pdr, false);
253 ASSERT_EQ(pdr->composite_effecter_count, 1);
254 states =
255 reinterpret_cast<state_effecter_possible_states*>(pdr->possible_states);
256 ASSERT_EQ(states->state_set_id, 32769);
257 ASSERT_EQ(states->possible_states_size, 2);
258 bitfield8_t bf2{};
259 bf2.byte = 6;
260 ASSERT_EQ(states->states[0].byte, bf2.byte);
261
262 // Test for effecter number 3, for firmware update state control
263 auto record3 = pdr::getRecordByHandle(inRepo, 3, e);
264 ASSERT_NE(record3, nullptr);
265
266 pdr = reinterpret_cast<pldm_state_effecter_pdr*>(e.data);
267
268 ASSERT_EQ(pdr->hdr.record_handle, 3);
269 ASSERT_EQ(pdr->hdr.version, 1);
270 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_EFFECTER_PDR);
271 ASSERT_EQ(pdr->hdr.record_change_num, 0);
272 ASSERT_EQ(pdr->hdr.length, 16);
Manojkiran Edacc5f1582021-09-29 17:03:06 +0530273 ASSERT_EQ(pdr->terminus_handle, TERMINUS_HANDLE);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500274 ASSERT_EQ(pdr->entity_type, PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE);
275 ASSERT_EQ(pdr->entity_instance, 0);
Patel-Kamalkumar68f5bbd2022-10-07 07:29:20 +0000276 ASSERT_EQ(pdr->container_id, 1);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500277 ASSERT_EQ(pdr->effecter_semantic_id, 0);
278 ASSERT_EQ(pdr->effecter_init, PLDM_NO_INIT);
279 ASSERT_EQ(pdr->has_description_pdr, false);
280 ASSERT_EQ(pdr->composite_effecter_count, 1);
281 states =
282 reinterpret_cast<state_effecter_possible_states*>(pdr->possible_states);
283 ASSERT_EQ(states->state_set_id, 32768);
284 ASSERT_EQ(states->possible_states_size, 2);
285 bitfield8_t bf3{};
286 bf3.byte = 126;
287 ASSERT_EQ(states->states[0].byte, bf3.byte);
288
289 pldm_pdr_destroy(inPDRRepo);
290}
291
292TEST(generateStateSensorOEMPDR, testGoodRequest)
293{
294 auto inPDRRepo = pldm_pdr_init();
Patrick Williams84b790c2022-07-22 19:26:56 -0500295 sdbusplus::bus_t bus(sdbusplus::bus::new_default());
Andrew Jeffery7c1dc7e2023-04-28 14:52:16 +0930296 std::filesystem::path dbPath;
297 TestInstanceIdDb instanceIdDb;
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500298
299 auto mockDbusHandler = std::make_unique<MockdBusHandler>();
300 auto event = sdeventplus::Event::get_default();
301 std::unique_ptr<CodeUpdate> mockCodeUpdate =
302 std::make_unique<MockCodeUpdate>(mockDbusHandler.get());
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500303 std::unique_ptr<oem_ibm_platform::Handler> mockoemPlatformHandler =
304 std::make_unique<MockOemPlatformHandler>(mockDbusHandler.get(),
305 mockCodeUpdate.get(), 0x1, 0x9,
Andrew Jefferya330b2f2023-05-04 14:55:37 +0930306 instanceIdDb, event);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500307 Repo inRepo(inPDRRepo);
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530308 mockoemPlatformHandler->buildOEMPDR(inRepo);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500309 ASSERT_EQ(inRepo.empty(), false);
310
311 pdr_utils::PdrEntry e;
312
313 // Test for sensor number 1, for current boot side state
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530314 auto record1 = pdr::getRecordByHandle(inRepo, 5, e);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500315 ASSERT_NE(record1, nullptr);
316
317 pldm_state_sensor_pdr* pdr =
318 reinterpret_cast<pldm_state_sensor_pdr*>(e.data);
319
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530320 ASSERT_EQ(pdr->hdr.record_handle, 5);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500321 ASSERT_EQ(pdr->hdr.version, 1);
322 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_SENSOR_PDR);
323 ASSERT_EQ(pdr->hdr.record_change_num, 0);
324 ASSERT_EQ(pdr->hdr.length, 14);
Manojkiran Edacc5f1582021-09-29 17:03:06 +0530325 ASSERT_EQ(pdr->terminus_handle, TERMINUS_HANDLE);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500326 ASSERT_EQ(pdr->entity_type, PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE);
327 ASSERT_EQ(pdr->entity_instance, 0);
Patel-Kamalkumar68f5bbd2022-10-07 07:29:20 +0000328 ASSERT_EQ(pdr->container_id, 1);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500329 ASSERT_EQ(pdr->sensor_init, PLDM_NO_INIT);
330 ASSERT_EQ(pdr->sensor_auxiliary_names_pdr, false);
331 ASSERT_EQ(pdr->composite_sensor_count, 1);
332 state_sensor_possible_states* states =
333 reinterpret_cast<state_sensor_possible_states*>(pdr->possible_states);
334 ASSERT_EQ(states->state_set_id, 32769);
335 ASSERT_EQ(states->possible_states_size, 2);
336 bitfield8_t bf1{};
337 bf1.byte = 6;
338 ASSERT_EQ(states->states[0].byte, bf1.byte);
339
340 // Test for sensor number 2, for next boot side state
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530341 auto record2 = pdr::getRecordByHandle(inRepo, 6, e);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500342 ASSERT_NE(record2, nullptr);
343
344 pdr = reinterpret_cast<pldm_state_sensor_pdr*>(e.data);
345
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530346 ASSERT_EQ(pdr->hdr.record_handle, 6);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500347 ASSERT_EQ(pdr->hdr.version, 1);
348 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_SENSOR_PDR);
349 ASSERT_EQ(pdr->hdr.record_change_num, 0);
350 ASSERT_EQ(pdr->hdr.length, 14);
Manojkiran Edacc5f1582021-09-29 17:03:06 +0530351 ASSERT_EQ(pdr->terminus_handle, TERMINUS_HANDLE);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500352 ASSERT_EQ(pdr->entity_type, PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE);
353 ASSERT_EQ(pdr->entity_instance, 1);
Patel-Kamalkumar68f5bbd2022-10-07 07:29:20 +0000354 ASSERT_EQ(pdr->container_id, 1);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500355 ASSERT_EQ(pdr->sensor_init, PLDM_NO_INIT);
356 ASSERT_EQ(pdr->sensor_auxiliary_names_pdr, false);
357 ASSERT_EQ(pdr->composite_sensor_count, 1);
358 states =
359 reinterpret_cast<state_sensor_possible_states*>(pdr->possible_states);
360 ASSERT_EQ(states->state_set_id, 32769);
361 ASSERT_EQ(states->possible_states_size, 2);
362 bitfield8_t bf2{};
363 bf2.byte = 6;
364 ASSERT_EQ(states->states[0].byte, bf2.byte);
365
366 // Test for sensor number 3, for firmware update state control
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530367 auto record3 = pdr::getRecordByHandle(inRepo, 7, e);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500368 ASSERT_NE(record3, nullptr);
369
370 pdr = reinterpret_cast<pldm_state_sensor_pdr*>(e.data);
371
Manojkiran Eda6b1d8832021-03-27 11:25:06 +0530372 ASSERT_EQ(pdr->hdr.record_handle, 7);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500373 ASSERT_EQ(pdr->hdr.version, 1);
374 ASSERT_EQ(pdr->hdr.type, PLDM_STATE_SENSOR_PDR);
375 ASSERT_EQ(pdr->hdr.record_change_num, 0);
376 ASSERT_EQ(pdr->hdr.length, 14);
Manojkiran Edacc5f1582021-09-29 17:03:06 +0530377 ASSERT_EQ(pdr->terminus_handle, TERMINUS_HANDLE);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500378 ASSERT_EQ(pdr->entity_type, PLDM_OEM_IBM_ENTITY_FIRMWARE_UPDATE);
379 ASSERT_EQ(pdr->entity_instance, 0);
Patel-Kamalkumar68f5bbd2022-10-07 07:29:20 +0000380 ASSERT_EQ(pdr->container_id, 1);
Sagar Srinivas360c53f2020-10-15 07:26:31 -0500381 ASSERT_EQ(pdr->sensor_init, PLDM_NO_INIT);
382 ASSERT_EQ(pdr->sensor_auxiliary_names_pdr, false);
383 ASSERT_EQ(pdr->composite_sensor_count, 1);
384 states =
385 reinterpret_cast<state_sensor_possible_states*>(pdr->possible_states);
386 ASSERT_EQ(states->state_set_id, 32768);
387 ASSERT_EQ(states->possible_states_size, 2);
388 bitfield8_t bf3{};
389 bf3.byte = 126;
390 ASSERT_EQ(states->states[0].byte, bf3.byte);
391
392 pldm_pdr_destroy(inPDRRepo);
393}