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

Function refcount_all_orders_overwrite

block/src/qcow/mod.rs:2808–2839  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

2806 /// Test overwrite and multi-cluster allocation for all refcount orders.
2807 #[test]
2808 fn refcount_all_orders_overwrite() {
2809 for order in 0..=6u8 {
2810 let mut header = valid_header_v3();
2811 header[99] = order;
2812 with_basic_file(&header, |disk_file: RawFile| {
2813 let mut q = QcowFile::from(disk_file).unwrap();
2814
2815 // Write then overwrite
2816 q.write_all(b"initial data here!!!").unwrap();
2817 q.rewind().unwrap();
2818 let new_data = b"overwritten data!!!!";
2819 q.write_all(new_data).unwrap();
2820 q.rewind().unwrap();
2821 let mut buf = vec![0u8; new_data.len()];
2822 q.read_exact(&mut buf).unwrap();
2823 assert_eq!(&buf, new_data);
2824
2825 // Allocate multiple clusters
2826 let cluster_size = 0x10000u64;
2827 for i in 1..4u64 {
2828 q.seek(SeekFrom::Start(i * cluster_size)).unwrap();
2829 q.write_all(b"cluster data").unwrap();
2830 }
2831 for i in 1..4u64 {
2832 let mut cluster_buf = vec![0u8; 12];
2833 q.seek(SeekFrom::Start(i * cluster_size)).unwrap();
2834 q.read_exact(&mut cluster_buf).unwrap();
2835 assert_eq!(&cluster_buf, b"cluster data");
2836 }
2837 });
2838 }
2839 }
2840
2841 /// Test L2 cache eviction for all refcount orders.
2842 #[test]

Callers

nothing calls this directly

Calls 3

valid_header_v3Function · 0.85
with_basic_fileFunction · 0.85
seekMethod · 0.45

Tested by

no test coverage detected