MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / create_header_with_extension

Function create_header_with_extension

block/src/qcow/mod.rs:2560–2586  ·  view source on GitHub ↗

Helper to create a test file with header extensions

(ext_type: u32, ext_data: &[u8])

Source from the content-addressed store, hash-verified

2558
2559 /// Helper to create a test file with header extensions
2560 fn create_header_with_extension(ext_type: u32, ext_data: &[u8]) -> (RawFile, QcowHeader) {
2561 let header = QcowHeader::create_for_size_and_path(3, 0x10_0000, None)
2562 .expect("Failed to create header.");
2563
2564 let mut disk_file: RawFile = RawFile::new(TempFile::new().unwrap().into_file(), false);
2565 header.write_to(&mut disk_file).unwrap();
2566
2567 // Write extension
2568 disk_file
2569 .seek(SeekFrom::Start(header.header_size as u64))
2570 .unwrap();
2571 u32::write_be(&mut disk_file, ext_type).unwrap();
2572 u32::write_be(&mut disk_file, ext_data.len() as u32).unwrap();
2573 disk_file.write_all(ext_data).unwrap();
2574
2575 // Add padding to 8-byte boundary
2576 let padding = (8 - (ext_data.len() % 8)) % 8;
2577 if padding > 0 {
2578 disk_file.write_all(&vec![0u8; padding]).unwrap();
2579 }
2580
2581 u32::write_be(&mut disk_file, HEADER_EXT_END).unwrap();
2582
2583 disk_file.rewind().unwrap();
2584
2585 (disk_file, header)
2586 }
2587
2588 #[test]
2589 fn read_header_extensions_unknown_extension() {

Calls 4

newFunction · 0.85
write_toMethod · 0.45
seekMethod · 0.45
lenMethod · 0.45