1import ./make-test-python.nix (
2 { pkgs, ... }:
3 {
4 name = "overlayfs";
5 meta.maintainers = with pkgs.lib.maintainers; [ bachp ];
6
7 nodes.machine =
8 { pkgs, ... }:
9 {
10 virtualisation.emptyDiskImages = [ 512 ];
11 networking.hostId = "deadbeef";
12 environment.systemPackages = with pkgs; [ parted ];
13 };
14
15 testScript = ''
16 machine.succeed("ls /dev")
17
18 machine.succeed("mkdir -p /tmp/mnt")
19
20 # Test ext4 + overlayfs
21 machine.succeed(
22 'mkfs.ext4 -F -L overlay-ext4 /dev/vdb',
23 'mount -t ext4 /dev/vdb /tmp/mnt',
24 'mkdir -p /tmp/mnt/upper /tmp/mnt/lower /tmp/mnt/work /tmp/mnt/merged',
25 # Setup some existing files
26 'echo Replace > /tmp/mnt/lower/replace.txt',
27 'echo Append > /tmp/mnt/lower/append.txt',
28 'echo Overwrite > /tmp/mnt/lower/overwrite.txt',
29 'mount -t overlay overlay -o lowerdir=/tmp/mnt/lower,upperdir=/tmp/mnt/upper,workdir=/tmp/mnt/work /tmp/mnt/merged',
30 # Test new
31 'echo New > /tmp/mnt/merged/new.txt',
32 '[[ "$(cat /tmp/mnt/merged/new.txt)" == New ]]',
33 # Test replace
34 '[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replace ]]',
35 'echo Replaced > /tmp/mnt/merged/replace-tmp.txt',
36 'mv /tmp/mnt/merged/replace-tmp.txt /tmp/mnt/merged/replace.txt',
37 '[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replaced ]]',
38 # Overwrite
39 '[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwrite ]]',
40 'echo Overwritten > /tmp/mnt/merged/overwrite.txt',
41 '[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwritten ]]',
42 # Test append
43 '[[ "$(cat /tmp/mnt/merged/append.txt)" == Append ]]',
44 'echo ed >> /tmp/mnt/merged/append.txt',
45 '[[ "$(cat /tmp/mnt/merged/append.txt)" == "Append\ned" ]]',
46 'umount /tmp/mnt/merged',
47 'umount /tmp/mnt',
48 'udevadm settle',
49 )
50 '';
51 }
52)