1import ./make-test-python.nix (
2 { pkgs, lib, ... }:
3 let
4 user = "alice";
5 in
6 {
7 name = "benchexec";
8
9 nodes.benchexec = {
10 imports = [ ./common/user-account.nix ];
11
12 programs.benchexec = {
13 enable = true;
14 users = [ user ];
15 };
16 };
17
18 testScript =
19 { ... }:
20 let
21 runexec = lib.getExe' pkgs.benchexec "runexec";
22 echo = builtins.toString pkgs.benchexec;
23 test = lib.getExe (
24 pkgs.writeShellApplication rec {
25 name = "test";
26 meta.mainProgram = name;
27 text = "echo '${echo}'";
28 }
29 );
30 wd = "/tmp";
31 stdout = "${wd}/runexec.out";
32 stderr = "${wd}/runexec.err";
33 in
34 ''
35 start_all()
36 machine.wait_for_unit("multi-user.target")
37 benchexec.succeed(''''\
38 systemd-run \
39 --property='StandardOutput=file:${stdout}' \
40 --property='StandardError=file:${stderr}' \
41 --unit=runexec --wait --user --machine='${user}@' \
42 --working-directory ${wd} \
43 '${runexec}' \
44 --debug \
45 --read-only-dir / \
46 --hidden-dir /home \
47 '${test}' \
48 '''')
49 benchexec.succeed("grep -s '${echo}' ${wd}/output.log")
50 benchexec.succeed("test \"$(grep -Ec '((start|wall|cpu)time|memory)=' ${stdout})\" = 4")
51 benchexec.succeed("! grep -E '(WARNING|ERROR)' ${stderr}")
52 '';
53
54 interactive.nodes.benchexec.services.kmscon = {
55 enable = true;
56 fonts = [
57 {
58 name = "Fira Code";
59 package = pkgs.fira-code;
60 }
61 ];
62 };
63 }
64)