Skip to content

Commit dd30f13

Browse files
committed
Test: Add test case to verify fan table firmware flashing
Related-To: VLCLJ-2434 Signed-off-by: kalyan alle <[email protected]>
1 parent 7e1fe2b commit dd30f13

File tree

1 file changed

+106
-1
lines changed

1 file changed

+106
-1
lines changed

conformance_tests/sysman/test_sysman_firmware/src/test_sysman_firmware.cpp

Lines changed: 106 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,5 +258,110 @@ LZT_TEST_F(
258258
}
259259
}
260260
}
261-
261+
LZT_TEST_F(
262+
FIRMWARE_TEST,
263+
GivenValidFanTableFirmwareHandleWhenFirmwareIsFlashedThenFlashingIsSuccessful) {
264+
auto fwDirEnv = getenv("ZE_LZT_FIRMWARE_DIRECTORY");
265+
if (nullptr == fwDirEnv) {
266+
LOG_INFO << "Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set";
267+
GTEST_SKIP();
268+
}
269+
std::vector<char> testFwImage;
270+
std::string fwDir(fwDirEnv);
271+
for (auto device : devices) {
272+
uint32_t count = 0;
273+
auto firmware_handles = lzt::get_firmware_handles(device, count);
274+
if (count == 0) {
275+
FAIL() << "No handles found: "
276+
<< _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
277+
}
278+
zes_firmware_handle_t fan_table_handle = nullptr;
279+
for (auto fw_handle : firmware_handles) {
280+
zes_firmware_properties_t props = {
281+
ZES_STRUCTURE_TYPE_FIRMWARE_PROPERTIES};
282+
auto result = zesFirmwareGetProperties(fw_handle, &props);
283+
if (std::string(props.name) == "FanTable") {
284+
fan_table_handle = fw_handle;
285+
auto propFw = lzt::get_firmware_properties(fw_handle);
286+
if (propFw.canControl == true) {
287+
std::string fwName(reinterpret_cast<char *>(propFw.name));
288+
std::string fwToLoad = fwDir + "/" + fwName + ".bin";
289+
std::ifstream inFileStream(fwToLoad,
290+
std::ios::binary | std::ios::ate);
291+
if (!inFileStream.is_open()) {
292+
LOG_INFO << "Skipping test as firmware image not found";
293+
GTEST_SKIP();
294+
}
295+
testFwImage.resize(inFileStream.tellg());
296+
inFileStream.seekg(0, inFileStream.beg);
297+
inFileStream.read(testFwImage.data(), testFwImage.size());
298+
lzt::flash_firmware(fan_table_handle,
299+
static_cast<void *>(testFwImage.data()),
300+
testFwImage.size());
301+
//Query properties after flashing
302+
auto propFwAfter = lzt::get_firmware_properties(fw_handle);
303+
LOG_INFO << "After Flashing - FW Name: " << propFwAfter.name
304+
<< ", CanControl: " << propFwAfter.canControl
305+
<< ", Version: " << propFwAfter.version;
306+
}
307+
}
308+
}
309+
if (fan_table_handle == nullptr) {
310+
FAIL() << "FanTable handle not found!";
311+
}
312+
}
313+
}
314+
LZT_TEST_F(
315+
FIRMWARE_TEST,
316+
GivenValidVRConfigFirmwareHandleWhenFirmwareIsFlashedThenFlashingIsSuccessful) {
317+
auto fwDirEnv = getenv("ZE_LZT_FIRMWARE_DIRECTORY");
318+
if (nullptr == fwDirEnv) {
319+
LOG_INFO << "Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set";
320+
GTEST_SKIP();
321+
}
322+
std::vector<char> testFwImage;
323+
std::string fwDir(fwDirEnv);
324+
for (auto device : devices) {
325+
uint32_t count = 0;
326+
auto firmware_handles = lzt::get_firmware_handles(device, count);
327+
if (count == 0) {
328+
FAIL() << "No handles found: "
329+
<< _ze_result_t(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE);
330+
}
331+
zes_firmware_handle_t vr_config_handle = nullptr;
332+
for (auto fw_handle : firmware_handles) {
333+
zes_firmware_properties_t props = {
334+
ZES_STRUCTURE_TYPE_FIRMWARE_PROPERTIES};
335+
auto result = zesFirmwareGetProperties(fw_handle, &props);
336+
if (std::string(props.name) == "VRConfig") {
337+
vr_config_handle = fw_handle;
338+
auto propFw = lzt::get_firmware_properties(fw_handle);
339+
if (propFw.canControl == true) {
340+
std::string fwName(reinterpret_cast<char *>(propFw.name));
341+
std::string fwToLoad = fwDir + "/" + fwName + ".bin";
342+
std::ifstream inFileStream(fwToLoad,
343+
std::ios::binary | std::ios::ate);
344+
if (!inFileStream.is_open()) {
345+
LOG_INFO << "Skipping test as firmware image not found";
346+
GTEST_SKIP();
347+
}
348+
testFwImage.resize(inFileStream.tellg());
349+
inFileStream.seekg(0, inFileStream.beg);
350+
inFileStream.read(testFwImage.data(), testFwImage.size());
351+
lzt::flash_firmware(vr_config_handle,
352+
static_cast<void *>(testFwImage.data()),
353+
testFwImage.size());
354+
// Query properties after flashing
355+
auto propFwAfter = lzt::get_firmware_properties(fw_handle);
356+
LOG_INFO << "After Flashing - FW Name: " << propFwAfter.name
357+
<< ", CanControl: " << propFwAfter.canControl
358+
<< ", Version: " << propFwAfter.version;
359+
}
360+
}
361+
}
362+
if (vr_config_handle == nullptr) {
363+
FAIL() << "VRConfig handle not found!";
364+
}
365+
}
366+
}
262367
} // namespace

0 commit comments

Comments
 (0)