48 lines
1.8 KiB
Nix
48 lines
1.8 KiB
Nix
import ./make-test-python.nix ({ pkgs, ... }: {
|
|
name = "overlayfs";
|
|
meta.maintainers = with pkgs.lib.maintainers; [ bachp ];
|
|
|
|
nodes.machine = { pkgs, ... }: {
|
|
virtualisation.emptyDiskImages = [ 512 ];
|
|
networking.hostId = "deadbeef";
|
|
environment.systemPackages = with pkgs; [ parted ];
|
|
};
|
|
|
|
testScript = ''
|
|
machine.succeed("ls /dev")
|
|
|
|
machine.succeed("mkdir -p /tmp/mnt")
|
|
|
|
# Test ext4 + overlayfs
|
|
machine.succeed(
|
|
'mkfs.ext4 -F -L overlay-ext4 /dev/vdb',
|
|
'mount -t ext4 /dev/vdb /tmp/mnt',
|
|
'mkdir -p /tmp/mnt/upper /tmp/mnt/lower /tmp/mnt/work /tmp/mnt/merged',
|
|
# Setup some existing files
|
|
'echo Replace > /tmp/mnt/lower/replace.txt',
|
|
'echo Append > /tmp/mnt/lower/append.txt',
|
|
'echo Overwrite > /tmp/mnt/lower/overwrite.txt',
|
|
'mount -t overlay overlay -o lowerdir=/tmp/mnt/lower,upperdir=/tmp/mnt/upper,workdir=/tmp/mnt/work /tmp/mnt/merged',
|
|
# Test new
|
|
'echo New > /tmp/mnt/merged/new.txt',
|
|
'[[ "$(cat /tmp/mnt/merged/new.txt)" == New ]]',
|
|
# Test replace
|
|
'[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replace ]]',
|
|
'echo Replaced > /tmp/mnt/merged/replace-tmp.txt',
|
|
'mv /tmp/mnt/merged/replace-tmp.txt /tmp/mnt/merged/replace.txt',
|
|
'[[ "$(cat /tmp/mnt/merged/replace.txt)" == Replaced ]]',
|
|
# Overwrite
|
|
'[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwrite ]]',
|
|
'echo Overwritten > /tmp/mnt/merged/overwrite.txt',
|
|
'[[ "$(cat /tmp/mnt/merged/overwrite.txt)" == Overwritten ]]',
|
|
# Test append
|
|
'[[ "$(cat /tmp/mnt/merged/append.txt)" == Append ]]',
|
|
'echo ed >> /tmp/mnt/merged/append.txt',
|
|
'[[ "$(cat /tmp/mnt/merged/append.txt)" == "Append\ned" ]]',
|
|
'umount /tmp/mnt/merged',
|
|
'umount /tmp/mnt',
|
|
'udevadm settle',
|
|
)
|
|
'';
|
|
})
|