diff --git a/conformance_tests/sysman/test_sysman_firmware/src/test_sysman_firmware.cpp b/conformance_tests/sysman/test_sysman_firmware/src/test_sysman_firmware.cpp index 81e3cdeb6..01950616b 100644 --- a/conformance_tests/sysman/test_sysman_firmware/src/test_sysman_firmware.cpp +++ b/conformance_tests/sysman/test_sysman_firmware/src/test_sysman_firmware.cpp @@ -168,52 +168,6 @@ LZT_TEST_F( } } -LZT_TEST_F( - FIRMWARE_TEST, - GivenValidFirmwareHandleWhenFlashingFirmwareThenExpectFirmwareFlashingSuccess) { - auto fwDirEnv = getenv("ZE_LZT_FIRMWARE_DIRECTORY"); - if (nullptr == fwDirEnv) { - LOG_INFO << "Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set"; - GTEST_SKIP(); - } - std::vector testFwImage; - std::string fwDir(fwDirEnv); - for (auto device : devices) { - uint32_t count = 0; - count = lzt::get_firmware_handle_count(device); - if (count > 0) { - is_firmware_supported = true; - LOG_INFO << "Firmware handles are available on this device! "; - auto firmware_handles = lzt::get_firmware_handles(device, count); - for (auto firmware_handle : firmware_handles) { - ASSERT_NE(nullptr, firmware_handle); - auto propFw = lzt::get_firmware_properties(firmware_handle); - if (propFw.canControl == true) { - std::string fwName(reinterpret_cast(propFw.name)); - std::string fwToLoad = fwDir + "/" + fwName + ".bin"; - std::ifstream inFileStream(fwToLoad, - std::ios::binary | std::ios::ate); - if (!inFileStream.is_open()) { - LOG_INFO << "Skipping test as firmware image not found"; - GTEST_SKIP(); - } - testFwImage.resize(inFileStream.tellg()); - inFileStream.seekg(0, inFileStream.beg); - inFileStream.read(testFwImage.data(), testFwImage.size()); - lzt::flash_firmware(firmware_handle, - static_cast(testFwImage.data()), - testFwImage.size()); - } - } - } else { - LOG_INFO << "No firmware handles found for this device! "; - } - } - if (!is_firmware_supported) { - FAIL() << "No firmware handles found on any of the devices! "; - } -} - void flash_firmware(zes_firmware_handle_t firmware_handle, std::string fw_dir) { std::vector test_fw_image; ASSERT_NE(nullptr, firmware_handle); @@ -303,4 +257,66 @@ LZT_TEST_F( } } +class FirmwareFlashParamTest + : public FIRMWARE_TEST, + public ::testing::WithParamInterface { +public: + bool is_firmware_supported = false; +}; + +INSTANTIATE_TEST_SUITE_P(FirmwareTypes, FirmwareFlashParamTest, + ::testing::Values("GFX", "OptionROM")); + +LZT_TEST_P( + FirmwareFlashParamTest, + GivenValidFirmwareHandleWhenFlashingFirmwareTypeThenExpectFirmwareFlashingSuccess) { + auto fwDirEnv = getenv("ZE_LZT_FIRMWARE_DIRECTORY"); + if (nullptr == fwDirEnv) { + LOG_INFO << "Skipping test as ZE_LZT_FIRMWARE_DIRECTORY not set"; + GTEST_SKIP(); + } + std::string fwDir(fwDirEnv); + std::string fwType = GetParam(); + + for (auto device : devices) { + uint32_t count = 0; + count = lzt::get_firmware_handle_count(device); + if (count > 0) { + is_firmware_supported = true; + LOG_INFO << "Firmware handles are available on this device! "; + auto firmware_handles = lzt::get_firmware_handles(device, count); + for (auto firmware_handle : firmware_handles) { + ASSERT_NE(nullptr, firmware_handle); + auto propFw = lzt::get_firmware_properties(firmware_handle); + + if (propFw.canControl == true && + std::string(reinterpret_cast(propFw.name)) == fwType) { + std::string fwName(reinterpret_cast(propFw.name)); + std::string fwToLoad = fwDir + "/" + fwName + ".bin"; + LOG_INFO << " Firmware Name: " << fwName; + LOG_INFO << " Firmware Path: " << fwToLoad; + std::ifstream inFileStream(fwToLoad, + std::ios::binary | std::ios::ate); + if (!inFileStream.is_open()) { + LOG_INFO << "Skipping test as firmware image not found"; + GTEST_SKIP(); + } + std::vector testFwImage( + static_cast(inFileStream.tellg())); + inFileStream.seekg(0, inFileStream.beg); + inFileStream.read(testFwImage.data(), testFwImage.size()); + lzt::flash_firmware(firmware_handle, + static_cast(testFwImage.data()), + testFwImage.size()); + } + } + } else { + LOG_INFO << "No firmware handles found for this device!"; + } + } + if (!is_firmware_supported) { + FAIL() << "No firmware handles found on any of the devices!"; + } +} + } // namespace