Nix Packages collection & NixOS
Go to file
aszlig 1f34503010
nixos/tests/installer: Add test for LUKS rootfs.
This serves as a regression test for #7859.

It's pretty straightforward, except from the fact that nixos-generate-
config doesn't detect LUKS devices and the "sleep 60".

As for the former, I have tried to add support for LUKS devices for
nixos-generate-config, but it's not so easy as it sounds, because we
need to create a device tree across all possible mappers and/or LVM up
to the "real" device and then decide whether it is relevant to what is
currently mounted. So I guess this is something for the nixpart branch
(see #2079).

And the latter isn't very trivial as well, because the LUKS passphrase
prompt is issued on /dev/console, which is the last "console=..." kernel
parameter (thus the `mkAfter`). So we can't simply grep the log, because
the prompt ends up being on one terminal only (tty0) and using select()
on $machine->{socket} doesn't work very well, because the FD is always
"ready for read". If we would read the FD, we would conflict with
$machine->connect and end up having an inconsistent state. Another idea
would be to use multithreading to do $machine->connect while feeding the
passphrase prompt in a loop and stop the thread once $machine->connect
is done. Turns out that this is not so easy as well, because the threads
need to share the $machine object and of course need to do properly
locking.

In the end I decided to use the "blindly hope that 60 seconds is enough"
approach for now and come up with a better solution later. Other VM
tests surely use sleep as well, but it's $machine->sleep, which is bound
to the clock of the VM, so if the build machine is on high load, a
$machine->sleep gets properly delayed but the timer outside the VM won't
get that delay, so the test is not deterministic.

Tested against the following revisions:

5e3fe39: Before the libgcrypt cleanup (a71f78a) that broke cryptsetup.
69a6848: While cryptsetup was broken (obviously the test failed).
15faa43: After cryptsetup has been switched to OpenSSL (fd588f9).

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
2015-05-21 13:21:41 +02:00
doc go: document disabled flag 2015-05-18 12:55:02 +02:00
lib Add Thrust 0.7.6 2015-05-20 20:58:03 +02:00
maintainers Travis: disable tarball creating check, because travis can't handle it 2015-03-04 15:28:09 +01:00
nixos nixos/tests/installer: Add test for LUKS rootfs. 2015-05-21 13:21:41 +02:00
pkgs vanubi: use vte 2.90 2015-05-21 12:58:01 +02:00
.gitignore gitignore: pkgs/development/libraries/qt-5/*/tmp/ 2015-02-21 11:39:20 -06:00
.travis.yml .travis.yml: add "sudo: required" to opt out of containers 2015-04-07 15:45:00 +02:00
.version 15.05 release is now 15.06 2015-05-14 20:30:18 +02:00
COPYING * Applying an MIT-style license to Nixpkgs. 2006-04-25 16:50:34 +00:00
default.nix if we abort with too old Nix, hint docs 2015-01-21 21:41:40 +01:00
README.md add: logo 2015-04-06 20:10:25 +03:00