nixos/tests/storage: Pass storage config as XML.

We're internally calling nix-instantiate to get the required options
from the configuration, so let's pass it through an option that skips
this step.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This commit is contained in:
aszlig 2014-11-04 07:28:08 +01:00
parent ccc768a00d
commit 8c3790b0de
No known key found for this signature in database
GPG Key ID: D0EBD0EC8C2DC961

View File

@ -3,8 +3,15 @@ import ./make-test.nix ({ pkgs, ... }:
with pkgs.lib;
let
ext = pkgs.writeText "ext.nix" ''
{
mkConf = cfg: let
config = (import <nixpkgs/nixos/lib/eval-config.nix> {
modules = singleton cfg;
}).config;
in pkgs.writeText "storage.xml" (builtins.toXML {
inherit (config) storage fileSystems swapDevices;
});
ext = {
storage = {
disk.vdb.clear = true;
disk.vdb.initlabel = true;
@ -40,11 +47,9 @@ let
swapDevices = [
{ label = "swap"; storage = "partition.swap"; }
];
}
'';
};
btrfs = pkgs.writeText "btrfs.nix" ''
{
btrfs = {
storage = {
disk.vdb.clear = true;
disk.vdb.initlabel = true;
@ -76,11 +81,9 @@ let
{ label = "swap1"; storage = "partition.swap1"; }
{ label = "swap2"; storage = "partition.swap2"; }
];
}
'';
};
f2fs = pkgs.writeText "f2fs.nix" ''
{
f2fs = {
storage = {
disk.vdb.clear = true;
disk.vdb.initlabel = true;
@ -108,11 +111,9 @@ let
swapDevices = [
{ label = "swap"; storage = "partition.swap"; }
];
}
'';
};
raid = pkgs.writeText "raid.nix" ''
{
raid = {
storage = {
disk.vdb.clear = true;
disk.vdb.initlabel = true;
@ -157,11 +158,9 @@ let
{ label = "swap1"; storage = "partition.swap1"; }
{ label = "swap2"; storage = "partition.swap2"; }
];
}
'';
};
raidLvmCrypt = pkgs.writeText "raid-lvm-crypt.nix" ''
{
raidLvmCrypt = {
storage = {
disk.vdb.clear = true;
disk.vdb.initlabel = true;
@ -210,8 +209,7 @@ let
swapDevices = [
{ label = "swap"; storage = "logvol.swap"; }
];
}
'';
};
in {
name = "partitiion";
@ -273,8 +271,8 @@ in {
}
sub nixpart {
$machine->copyFileFromHost($_[0], "/storage.nix");
$machine->succeed("nixpart -v /storage.nix");
$machine->copyFileFromHost($_[0], "/storage.xml");
$machine->succeed("nixpart -v --from-xml /storage.xml");
ensureSanity;
}
@ -316,7 +314,7 @@ in {
die;
}
# Try to remount with nixpart
$machine->succeed("nixpart -vm /storage.nix");
$machine->succeed("nixpart -vm --from-xml /storage.xml");
ensureMountPoint("/mnt");
# Check if our beloved canaries are dead
chomp $canaries;
@ -329,7 +327,7 @@ in {
}
parttest "ext2, ext3 and ext4 filesystems", sub {
nixpart("${ext}");
nixpart("${mkConf ext}");
ensurePartition("boot", "ext2");
ensurePartition("swap", "swap");
ensurePartition("nix", "ext3");
@ -344,7 +342,7 @@ in {
parttest "btrfs filesystem", sub {
$machine->succeed("modprobe btrfs");
nixpart("${btrfs}");
nixpart("${mkConf btrfs}");
ensurePartition("swap1", "swap");
ensurePartition("swap2", "swap");
ensurePartition("/dev/vdb2", "btrfs");
@ -356,7 +354,7 @@ in {
parttest "f2fs filesystem", sub {
$machine->succeed("modprobe f2fs");
nixpart("${f2fs}");
nixpart("${mkConf f2fs}");
ensurePartition("swap", "swap");
ensurePartition("boot", "f2fs");
ensurePartition("root", "f2fs");
@ -365,7 +363,7 @@ in {
};
parttest "RAID1 with XFS", sub {
nixpart("${raid}");
nixpart("${mkConf raid}");
ensurePartition("swap1", "swap");
ensurePartition("swap2", "swap");
ensurePartition("/dev/md0", "ext3");
@ -378,7 +376,7 @@ in {
};
parttest "RAID1 with LUKS and LVM", sub {
nixpart("${raidLvmCrypt}");
nixpart("${mkConf raidLvmCrypt}");
ensurePartition("/dev/vdb1", "data");
ensureNoPartition("vdb2");
ensurePartition("/dev/vdc1", "data");