diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index b3d2fbaee8ed..8cfbd55b7738 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -244,6 +244,7 @@ in ayatana-indicators = runTest ./ayatana-indicators.nix; babeld = runTest ./babeld.nix; bazarr = runTest ./bazarr.nix; + bcache = runTestOn [ "x86_64-linux" "aarch64-linux" ] ./bcache.nix; bcachefs = runTestOn [ "x86_64-linux" "aarch64-linux" ] ./bcachefs.nix; beanstalkd = runTest ./beanstalkd.nix; bees = runTest ./bees.nix; diff --git a/nixos/tests/bcache.nix b/nixos/tests/bcache.nix new file mode 100644 index 000000000000..651db2e0b3e2 --- /dev/null +++ b/nixos/tests/bcache.nix @@ -0,0 +1,40 @@ +{ pkgs, ... }: +{ + name = "bcache"; + meta.maintainers = with pkgs.lib.maintainers; [ pineapplehunter ]; + + nodes.machine = + { pkgs, ... }: + { + virtualisation.emptyDiskImages = [ 4096 ]; + networking.hostId = "deadbeef"; + boot.supportedFilesystems = [ "ext4" ]; + environment.systemPackages = [ pkgs.parted ]; + }; + + testScript = '' + machine.succeed("modprobe bcache") + machine.succeed("bcache version") + machine.succeed("ls /dev") + + machine.succeed( + "mkdir /tmp/mnt", + "udevadm settle", + "parted --script /dev/vdb mklabel gpt", + "parted --script /dev/vdb mkpart primary 0% 50% mkpart primary 50% 100%", + "udevadm settle", + "bcache make -C /dev/vdb1", + "bcache make -B /dev/vdb2", + "udevadm settle", + "bcache attach /dev/vdb1 /dev/vdb2", + "bcache set-cachemode /dev/vdb2 writeback", + "udevadm settle", + "bcache show", + "ls /sys/fs/bcache", + "mkfs.ext4 /dev/bcache0", + "mount /dev/bcache0 /tmp/mnt", + "umount /tmp/mnt", + "udevadm settle", + ) + ''; +} diff --git a/pkgs/by-name/bc/bcache-tools/package.nix b/pkgs/by-name/bc/bcache-tools/package.nix index 0e2e857f60ce..0b20b7d00475 100644 --- a/pkgs/by-name/bc/bcache-tools/package.nix +++ b/pkgs/by-name/bc/bcache-tools/package.nix @@ -6,6 +6,7 @@ util-linux, bash, udevCheckHook, + nixosTests, }: stdenv.mkDerivation rec { @@ -51,6 +52,10 @@ stdenv.mkDerivation rec { mkdir -p "$out/sbin" "$out/lib/udev/rules.d" "$out/share/man/man8" ''; + passthru.tests = { + inherit (nixosTests) bcache; + }; + meta = { description = "User-space tools required for bcache (Linux block layer cache)"; longDescription = ''