tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
nixos/rkvm: add nixos test
authored by
h7x4
and committed by
ckie
2 years ago
2295751a
f3ad4def
+156
5 changed files
expand all
collapse all
unified
split
nixos
tests
all-tests.nix
rkvm
cert.pem
default.nix
key.pem
pkgs
tools
misc
rkvm
default.nix
+1
nixos/tests/all-tests.nix
···
673
673
restartByActivationScript = handleTest ./restart-by-activation-script.nix {};
674
674
restic = handleTest ./restic.nix {};
675
675
retroarch = handleTest ./retroarch.nix {};
676
676
+
rkvm = handleTest ./rkvm {};
676
677
robustirc-bridge = handleTest ./robustirc-bridge.nix {};
677
678
roundcube = handleTest ./roundcube.nix {};
678
679
rshim = handleTest ./rshim.nix {};
+18
nixos/tests/rkvm/cert.pem
···
1
1
+
-----BEGIN CERTIFICATE-----
2
2
+
MIIC3jCCAcagAwIBAgIUWW1hb9xdRtxAhA42jkS89goW9LUwDQYJKoZIhvcNAQEL
3
3
+
BQAwDzENMAsGA1UEAwwEcmt2bTAeFw0yMzA4MjIxOTI1NDlaFw0zMzA4MTkxOTI1
4
4
+
NDlaMA8xDTALBgNVBAMMBHJrdm0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
5
5
+
AoIBAQCuBsh0+LDXN4b2o/PJjzuiZ9Yv9Pz1Oho9WRiXtNIuHTRdBCcht/iu3PGF
6
6
+
ICIX+H3dqQOziGSCTAQGJD2p+1ik8d+boJbpa0oxXuHuomsMAT3mib3GpipQoBLP
7
7
+
KaEbWEsvQbr3RMx8WOtG4dmRQFzSVVtmAXyM0pNyisd4eUCplyIl9gsRJIvsO/0M
8
8
+
OkgOZW9XLfKiAWlZoyXEkBmPAshg3EkwQtmwxPA/NgWbAOW3zJKSChxnnGYiuIIu
9
9
+
R/wJ8OQXHP6boQLQGUhCWBKa1uK1gEBmV3Pj6uK8RzTkQq6/47F5sPa6VfqQYdyl
10
10
+
TCs9bSqHXZjqMBoiSp22uH6+Lh9RAgMBAAGjMjAwMA8GA1UdEQQIMAaHBAoAAAEw
11
11
+
HQYDVR0OBBYEFEh9HEsnY3dfNKVyPWDbwfR0qHopMA0GCSqGSIb3DQEBCwUAA4IB
12
12
+
AQB/r+K20JqegUZ/kepPxIU95YY81aUUoxvLbu4EAgh8o46Fgm75qrTZPg4TaIZa
13
13
+
wtVejekrF+p3QVf0ErUblh/iCjTZPSzCmKHZt8cc9OwTH7bt3bx7heknzLDyIa5z
14
14
+
szAL+6241UggQ5n5NUGn5+xZHA7TMe47xAZPaRMlCQ/tp5pWFjH6WSSQSP5t4Ag9
15
15
+
ObhY+uudFjmWi3QIBTr3iIscbWx7tD8cjus7PzM7+kszSDRV04xb6Ox8JzW9MKIN
16
16
+
GwgwVgs3zCuyqBmTGnR1og3aMk6VtlyZUYE78uuc+fMBxqoBZ0mykeOp0Tbzgtf7
17
17
+
gPkYcQ6vonoQhuTXYj/NrY+b
18
18
+
-----END CERTIFICATE-----
+104
nixos/tests/rkvm/default.nix
···
1
1
+
import ../make-test-python.nix ({ pkgs, ... }:
2
2
+
let
3
3
+
# Generated with
4
4
+
#
5
5
+
# nix shell .#rkvm --command "rkvm-certificate-gen --ip-addresses 10.0.0.1 cert.pem key.pem"
6
6
+
#
7
7
+
snakeoil-cert = ./cert.pem;
8
8
+
snakeoil-key = ./key.pem;
9
9
+
in
10
10
+
{
11
11
+
name = "rkvm";
12
12
+
13
13
+
nodes = {
14
14
+
server = { pkgs, ... }: {
15
15
+
imports = [ ../common/user-account.nix ];
16
16
+
17
17
+
virtualisation.vlans = [ 1 ];
18
18
+
19
19
+
networking = {
20
20
+
useNetworkd = true;
21
21
+
useDHCP = false;
22
22
+
firewall.enable = false;
23
23
+
};
24
24
+
25
25
+
systemd.network.networks."01-eth1" = {
26
26
+
name = "eth1";
27
27
+
networkConfig.Address = "10.0.0.1/24";
28
28
+
};
29
29
+
30
30
+
services.getty.autologinUser = "alice";
31
31
+
32
32
+
services.rkvm.server = {
33
33
+
enable = true;
34
34
+
settings = {
35
35
+
certificate = snakeoil-cert;
36
36
+
key = snakeoil-key;
37
37
+
password = "snakeoil";
38
38
+
switch-keys = [ "left-alt" "right-alt" ];
39
39
+
};
40
40
+
};
41
41
+
};
42
42
+
43
43
+
client = { pkgs, ... }: {
44
44
+
imports = [ ../common/user-account.nix ];
45
45
+
46
46
+
virtualisation.vlans = [ 1 ];
47
47
+
48
48
+
networking = {
49
49
+
useNetworkd = true;
50
50
+
useDHCP = false;
51
51
+
firewall.enable = false;
52
52
+
};
53
53
+
54
54
+
systemd.network.networks."01-eth1" = {
55
55
+
name = "eth1";
56
56
+
networkConfig.Address = "10.0.0.2/24";
57
57
+
};
58
58
+
59
59
+
services.getty.autologinUser = "alice";
60
60
+
61
61
+
services.rkvm.client = {
62
62
+
enable = true;
63
63
+
settings = {
64
64
+
server = "10.0.0.1:5258";
65
65
+
certificate = snakeoil-cert;
66
66
+
key = snakeoil-key;
67
67
+
password = "snakeoil";
68
68
+
};
69
69
+
};
70
70
+
};
71
71
+
};
72
72
+
73
73
+
testScript = ''
74
74
+
server.wait_for_unit("getty@tty1.service")
75
75
+
server.wait_until_succeeds("pgrep -f 'agetty.*tty1'")
76
76
+
server.wait_for_unit("rkvm-server")
77
77
+
server.wait_for_open_port(5258)
78
78
+
79
79
+
client.wait_for_unit("getty@tty1.service")
80
80
+
client.wait_until_succeeds("pgrep -f 'agetty.*tty1'")
81
81
+
client.wait_for_unit("rkvm-client")
82
82
+
83
83
+
server.sleep(1)
84
84
+
85
85
+
# Switch to client
86
86
+
server.send_key("alt-alt_r", delay=0.2)
87
87
+
server.send_chars("echo 'hello client' > /tmp/test.txt\n")
88
88
+
89
89
+
# Switch to server
90
90
+
server.send_key("alt-alt_r", delay=0.2)
91
91
+
server.send_chars("echo 'hello server' > /tmp/test.txt\n")
92
92
+
93
93
+
server.sleep(1)
94
94
+
95
95
+
client.systemctl("stop rkvm-client.service")
96
96
+
server.systemctl("stop rkvm-server.service")
97
97
+
98
98
+
server_file = server.succeed("cat /tmp/test.txt")
99
99
+
assert server_file.strip() == "hello server"
100
100
+
101
101
+
client_file = client.succeed("cat /tmp/test.txt")
102
102
+
assert client_file.strip() == "hello client"
103
103
+
'';
104
104
+
})
+28
nixos/tests/rkvm/key.pem
···
1
1
+
-----BEGIN PRIVATE KEY-----
2
2
+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCuBsh0+LDXN4b2
3
3
+
o/PJjzuiZ9Yv9Pz1Oho9WRiXtNIuHTRdBCcht/iu3PGFICIX+H3dqQOziGSCTAQG
4
4
+
JD2p+1ik8d+boJbpa0oxXuHuomsMAT3mib3GpipQoBLPKaEbWEsvQbr3RMx8WOtG
5
5
+
4dmRQFzSVVtmAXyM0pNyisd4eUCplyIl9gsRJIvsO/0MOkgOZW9XLfKiAWlZoyXE
6
6
+
kBmPAshg3EkwQtmwxPA/NgWbAOW3zJKSChxnnGYiuIIuR/wJ8OQXHP6boQLQGUhC
7
7
+
WBKa1uK1gEBmV3Pj6uK8RzTkQq6/47F5sPa6VfqQYdylTCs9bSqHXZjqMBoiSp22
8
8
+
uH6+Lh9RAgMBAAECggEABo2V1dBu5E51zsAiFCMdypdLZEyUNphvWC5h3oXowONz
9
9
+
pH8ICYfXyEnkma/kk2+ALy0dSRDn6/94dVIUX7Fpx0hJCcoJyhSysK+TJWfIonqX
10
10
+
ffYOMeFG8vicIgs+GFKs/hoPtB5LREbFkUqRj/EoWE6Y3aX3roaCwTZC8vaUk0OK
11
11
+
54gExcNXRwQtFmfM9BiPT76F2J641NVsddgKumrryMi605CgZ57OFfSYEena6T3t
12
12
+
JbQ1TKB3SH1LvSQIspyp56E3bjh8bcwSh72g88YxWZI9yarOesmyU+fXnmVqcBc+
13
13
+
CiJDX3Te1C2GIkBiH3HZJo4P88aXrkJ7J8nub/812QKBgQDfCHjBy5uWzzbDnqZc
14
14
+
cllIyUqMHq1iY2/btdZQbz83maZhQhH2UL4Zvoa7qgMX7Ou5jn1xpDaMeXNaajGK
15
15
+
Fz66nmqQEUFX1i+2md2J8TeKD37yUJRdlrMiAc+RNp5wiOH9EI18g2m6h/nj3s/P
16
16
+
MdNyxsz+wqOiJT0sZatarKiFhQKBgQDHv+lPy4OPH1MeSv5vmv3Pa41O/CeiPy+T
17
17
+
gi6nEZayVRVog3zF9T6gNIHrZ1fdIppWPiPXv9fmC3s/IVEftLG6YC+MAfigYhiz
18
18
+
Iceoal0iJJ8DglzOhlKgHEnxEwENCz8aJxjpvbxHHcpvgXdBSEVfHvVqDkAFTsvF
19
19
+
JA5YTmqGXQKBgQCL6uqm2S7gq1o12p+PO4VbrjwAL3aiVLNl6Gtsxn2oSdIhDavr
20
20
+
FLhNukMYFA4gwlcXb5au5k/6TG7bd+dgNDj8Jkm/27NcgVgpe9mJojQvfo0rQvXw
21
21
+
yIvUd8JZ3SQEgTsU4X+Bb4eyp39TPwKrfxyh0qnj4QN6w1XfNmELX2nRaQKBgEq6
22
22
+
a0ik9JTovSnKGKIcM/QTYow4HYO/a8cdnuJ13BDfb+DnwBg3BbTdr/UndmGOfnrh
23
23
+
SHuAk/7GMNePWVApQ4xcS61vV1p5GJB7hLxm/my1kp+3d4z0B5lKvAbqeywsFvFr
24
24
+
yxA3IWbhqEhLARh1Ny684EdLCXxy3Bzmvk8fFw8pAoGAGkt9pJC2wkk9fnJIHq+f
25
25
+
h/WnEO0YrGzYnVA+RyCNKrimRd+GylGHJ/Ev6PRZvMwyGE7RCB+fHVrrEcEJAcxL
26
26
+
SaOg5NA8cwrG+UpTQqi4gt6tCW87afVCyL6dC/E8giJlzI0LY9DnFGoVqYL0qJvm
27
27
+
Sj4SU0fyLsW/csOLd5T+Bf8=
28
28
+
-----END PRIVATE KEY-----
+5
pkgs/tools/misc/rkvm/default.nix
···
5
5
, libevdev
6
6
, openssl
7
7
, makeWrapper
8
8
+
, nixosTests
8
9
}:
9
10
10
11
rustPlatform.buildRustPackage rec {
···
30
31
31
32
wrapProgram $out/bin/rkvm-certificate-gen --prefix PATH : ${lib.makeBinPath [ openssl ]}
32
33
'';
34
34
+
35
35
+
passthru.tests = {
36
36
+
inherit (nixosTests) rkvm;
37
37
+
};
33
38
34
39
meta = with lib; {
35
40
description = "Virtual KVM switch for Linux machines";