const TEST_PATH: &str = "/home/jamcleod/.panda/bionic-shrunk.qcow2";
#[test]
fn parse() {
use std::io::Read;
use std::io::Seek;
let qcow = qcow::open(TEST_PATH).unwrap();
for snapshot in qcow.snapshots() {
println!(
"Snapshot {:?}: {:?} (size = {})",
snapshot.unique_id,
snapshot.name,
snapshot.vm_state_size
);
}
let qcow = qcow.unwrap_qcow2();
dbg!(&qcow);
let mut file = std::io::BufReader::new(std::fs::File::open(TEST_PATH).unwrap());
let _ = qcow
.l1_table[0]
.read_l2(&mut file, qcow.header.cluster_bits);
let mut file = std::fs::File::open(TEST_PATH).unwrap();
let mut reader = qcow.reader(&mut file);
let mut buf = [0; 0x100];
reader.read_exact(&mut buf).unwrap();
let mut buf2 = [0; 0x80];
let pos = reader.seek(std::io::SeekFrom::Current(-0x80)).unwrap();
assert_eq!(pos, 0x80);
reader.read_exact(&mut buf2).unwrap();
assert_eq!(buf2, &buf[0x80..]);
let pos = reader.seek(std::io::SeekFrom::Start(0)).unwrap();
assert_eq!(pos, 0);
reader.read_exact(&mut buf2).unwrap();
assert_eq!(buf2, &buf[..0x80]);
std::io::copy(
&mut reader.take(0x400_0000),
&mut std::io::sink(),
).unwrap();
}