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
..
2015-05-13 16:23:57 +02:00
2014-06-28 16:05:47 +02:00
2014-12-28 20:21:41 +01:00
2014-12-18 14:18:53 +01:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2014-08-10 14:51:23 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2014-04-14 21:03:43 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2015-04-02 17:44:48 +02:00
2014-06-28 16:05:47 +02:00
2014-12-01 16:42:40 +01:00
2014-11-06 14:55:44 +01:00
2014-12-14 13:47:19 +01:00
2014-06-28 16:05:47 +02:00
2014-07-01 16:28:34 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00
2014-06-28 16:05:47 +02:00