@@ -258,5 +258,110 @@ LZT_TEST_F(
258
258
}
259
259
}
260
260
}
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
+ }
262
367
} // namespace
0 commit comments