mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-19 04:02:10 +00:00
nixosTests.installer: Fix grub1 test being unreliable
The kernel sometimes assigns `/dev/sdb` to the 8GiB disk. This, in turn, means the test will fail because we're targeting the wrong disk. ``` machine # [ 0.000000] sd 2:0:0:0: [sda] 16777216 512-byte logical blocks: (8.59 GB/8.00 GiB) machine # [ 0.000000] sd 3:0:0:0: [sdb] 1048576 512-byte logical blocks: (537 MB/512 MiB) ``` ``` machine # [ 0.000000] sd 2:0:0:0: [sdb] 16777216 512-byte logical blocks: (8.59 GB/8.00 GiB) machine # [ 0.000000] sd 3:0:0:0: [sda] 1048576 512-byte logical blocks: (537 MB/512 MiB) ``` Note how the "sd x:0:0:0:` ID is stable. That is because QEMU **is** told to give specific identifiers to the disks. So using the dev/disk/by-id/ identifiers is stable. * * * Tested by forcing the sda/sdb swap this way: diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix index 24c55081f9a..2eee224351b 100644 --- a/nixos/tests/installer.nix +++ b/nixos/tests/installer.nix @@ -702,12 +702,19 @@ in { + " mkpart primary linux-swap 1M 1024M" + " mkpart primary ext2 1024M -1s", "udevadm settle", + ) + print(machine.succeed("find /dev/disk/ '!' -type d -printf '%p → %l\n' | sort")) + machine.succeed( "mkswap ${grubDevice}-part1 -L swap", "swapon -L swap", "mkfs.ext3 -L nixos ${grubDevice}-part2", "mount LABEL=nixos /mnt", "mkdir -p /mnt/tmp", ) + machine.succeed("echo success") + machine.succeed( + 'if [[ "$(find ${grubDevice} -printf \'%l\')" != "../../sdb" ]]; then exit 22; else true; fi' + ) ''; grubVersion = 1; # /dev/sda is not stable, even when the SCSI disk number is. And ran this way: $ until (clear; tmux clear ; time env -i nix-build nixos/release-combined.nix -A nixos.tests.installer.grub1.x86_64-linux); do echo derp; done
This commit is contained in:
parent
93de027ee0
commit
7d112134de
|
@ -294,7 +294,7 @@ let
|
|||
# the same during and after installation.
|
||||
virtualisation.emptyDiskImages = [ 512 ];
|
||||
virtualisation.bootDevice =
|
||||
if grubVersion == 1 then "/dev/sdb" else "/dev/vdb";
|
||||
if grubVersion == 1 then "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive2" else "/dev/vdb";
|
||||
virtualisation.qemu.diskInterface =
|
||||
if grubVersion == 1 then "scsi" else "virtio";
|
||||
|
||||
|
@ -695,22 +695,23 @@ in {
|
|||
};
|
||||
|
||||
# Test a basic install using GRUB 1.
|
||||
grub1 = makeInstallerTest "grub1" {
|
||||
grub1 = makeInstallerTest "grub1" rec {
|
||||
createPartitions = ''
|
||||
machine.succeed(
|
||||
"flock /dev/sda parted --script /dev/sda -- mklabel msdos"
|
||||
"flock ${grubDevice} parted --script ${grubDevice} -- mklabel msdos"
|
||||
+ " mkpart primary linux-swap 1M 1024M"
|
||||
+ " mkpart primary ext2 1024M -1s",
|
||||
"udevadm settle",
|
||||
"mkswap /dev/sda1 -L swap",
|
||||
"mkswap ${grubDevice}-part1 -L swap",
|
||||
"swapon -L swap",
|
||||
"mkfs.ext3 -L nixos /dev/sda2",
|
||||
"mkfs.ext3 -L nixos ${grubDevice}-part2",
|
||||
"mount LABEL=nixos /mnt",
|
||||
"mkdir -p /mnt/tmp",
|
||||
)
|
||||
'';
|
||||
grubVersion = 1;
|
||||
grubDevice = "/dev/sda";
|
||||
# /dev/sda is not stable, even when the SCSI disk number is.
|
||||
grubDevice = "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive1";
|
||||
};
|
||||
|
||||
# Test using labels to identify volumes in grub
|
||||
|
|
Loading…
Reference in a new issue