nixosTests.nvmetcfg: init

This commit is contained in:
Nick Cao 2024-02-01 13:34:05 -05:00
parent 1934b8c4b0
commit ed3e7a5208
No known key found for this signature in database
3 changed files with 49 additions and 0 deletions

View file

@ -627,6 +627,7 @@ in {
ntfy-sh = handleTest ./ntfy-sh.nix {};
ntfy-sh-migration = handleTest ./ntfy-sh-migration.nix {};
ntpd-rs = handleTest ./ntpd-rs.nix {};
nvmetcfg = handleTest ./nvmetcfg.nix {};
nzbget = handleTest ./nzbget.nix {};
nzbhydra2 = handleTest ./nzbhydra2.nix {};
oh-my-zsh = handleTest ./oh-my-zsh.nix {};

43
nixos/tests/nvmetcfg.nix Normal file
View file

@ -0,0 +1,43 @@
import ./make-test-python.nix ({ lib, ... }: {
name = "nvmetcfg";
meta = {
maintainers = with lib.maintainers; [ nickcao ];
};
nodes = {
server = { pkgs, ... }: {
boot.kernelModules = [ "nvmet" ];
environment.systemPackages = [ pkgs.nvmetcfg ];
networking.firewall.allowedTCPPorts = [ 4420 ];
virtualisation.emptyDiskImages = [ 512 ];
};
client = { pkgs, ... }: {
boot.kernelModules = [ "nvme-fabrics" ];
environment.systemPackages = [ pkgs.nvme-cli ];
};
};
testScript = let subsystem = "nqn.2014-08.org.nixos:server"; in ''
import json
with subtest("Create subsystem and namespace"):
server.succeed("nvmet subsystem add ${subsystem}")
server.succeed("nvmet namespace add ${subsystem} 1 /dev/vdb")
with subtest("Bind subsystem to port"):
server.wait_for_unit("network-online.target")
server.succeed("nvmet port add 1 tcp 0.0.0.0:4420")
server.succeed("nvmet port add-subsystem 1 ${subsystem}")
with subtest("Discover and connect to available subsystems"):
client.wait_for_unit("network-online.target")
assert "subnqn: ${subsystem}" in client.succeed("nvme discover --transport=tcp --traddr=server --trsvcid=4420")
client.succeed("nvme connect-all --transport=tcp --traddr=server --trsvcid=4420")
with subtest("Write to the connected subsystem"):
devices = json.loads(client.succeed("lsblk --nvme --paths --json"))["blockdevices"]
assert len(devices) == 1
client.succeed(f"dd if=/dev/zero of={devices[0]['name']} bs=1M count=64")
'';
})

View file

@ -1,6 +1,7 @@
{ lib
, rustPlatform
, fetchFromGitHub
, nixosTests
}:
rustPlatform.buildRustPackage rec {
@ -16,6 +17,10 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-yZ4UAx95f/cjeObBtzpiYtwDjgOgkKnD64yGe6ouVGw=";
passthru.tests = {
inherit (nixosTests) nvmetcfg;
};
meta = with lib; {
description = "NVMe-oF Target Configuration Utility for Linux";
homepage = "https://github.com/vifino/nvmetcfg";