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