Nothing to see here, move along meow
1use lancer_lancerfs::test_helpers::setup_fs;
2
3#[test]
4fn file_data_survives_remount() {
5 let mut fs = setup_fs(4096);
6 let root = fs.root_block();
7 let (_inode, block) = fs.create_file(root, b"persist");
8 let data: Vec<u8> = (0..8192u16).map(|i| (i % 251) as u8).collect();
9 fs.write_file(block, 0, &data);
10 fs.commit();
11
12 fs.remount();
13
14 let file_block = fs.lookup_file(fs.root_block(), b"persist").unwrap();
15 let read_back = fs.read_file(file_block, 0, 8192);
16 assert_eq!(read_back, data);
17}
18
19#[test]
20fn directory_structure_survives_remount() {
21 let mut fs = setup_fs(4096);
22 let root = fs.root_block();
23
24 let (_a_inode, a_block) = fs.mkdir(root, b"a");
25 let (_b_inode, b_block) = fs.mkdir(a_block, b"b");
26 let (_c_inode, c_block) = fs.mkdir(b_block, b"c");
27
28 let (_f1, f1_block) = fs.create_file(a_block, b"f1");
29 fs.write_file(f1_block, 0, b"in_a");
30
31 let (_f2, f2_block) = fs.create_file(c_block, b"f2");
32 fs.write_file(f2_block, 0, b"in_c");
33
34 fs.commit();
35 fs.remount();
36
37 let resolved_a = fs.resolve_path(&[b"a"]).unwrap();
38 let resolved_c = fs.resolve_path(&[b"a", b"b", b"c"]).unwrap();
39
40 let f1_found = fs.lookup_file(resolved_a, b"f1").unwrap();
41 assert_eq!(fs.read_file(f1_found, 0, 4), b"in_a");
42
43 let f2_found = fs.lookup_file(resolved_c, b"f2").unwrap();
44 assert_eq!(fs.read_file(f2_found, 0, 4), b"in_c");
45}
46
47#[test]
48fn multiple_commits_then_remount() {
49 let mut fs = setup_fs(4096);
50 let root = fs.root_block();
51
52 let (_inode, block) = fs.create_file(root, b"evolving");
53 fs.write_file(block, 0, b"version_one");
54 fs.commit();
55
56 fs.write_file(block, 0, b"version_two_longer");
57 fs.commit();
58
59 fs.remount();
60
61 let file_block = fs.lookup_file(fs.root_block(), b"evolving").unwrap();
62 let read_back = fs.read_file(file_block, 0, 64);
63 assert_eq!(&read_back[..18], b"version_two_longer");
64}
65
66#[test]
67fn inline_data_survives_remount() {
68 let mut fs = setup_fs(4096);
69 let root = fs.root_block();
70 let (_inode, block) = fs.create_file(root, b"tiny");
71 fs.write_file(block, 0, b"small_payload");
72 fs.commit();
73
74 fs.remount();
75
76 let file_block = fs.lookup_file(fs.root_block(), b"tiny").unwrap();
77 let read_back = fs.read_file(file_block, 0, 64);
78 assert_eq!(&read_back[..13], b"small_payload");
79}
80
81#[test]
82fn snapshot_survives_remount() {
83 let mut fs = setup_fs(4096);
84 let root = fs.root_block();
85 let (_inode, block) = fs.create_file(root, b"snapfile");
86 fs.write_file(block, 0, b"snap_data");
87 fs.commit();
88
89 fs.create_snapshot(b"snap1");
90
91 fs.remount();
92
93 let snap = fs.snapshot_lookup(b"snap1");
94 assert!(snap.is_some());
95}