at 23.11-pre 2.5 kB view raw
1import ./make-test-python.nix ({ pkgs, lib, ...} : 2 3{ 4 name = "evcc"; 5 meta.maintainers = with lib.maintainers; [ hexa ]; 6 7 nodes = { 8 machine = { config, ... }: { 9 services.evcc = { 10 enable = true; 11 settings = { 12 network = { 13 schema = "http"; 14 host = "localhost"; 15 port = 7070; 16 }; 17 18 log = "info"; 19 20 site = { 21 title = "NixOS Test"; 22 meters = { 23 grid = "grid"; 24 pv = "pv"; 25 }; 26 }; 27 28 meters = [ { 29 type = "custom"; 30 name = "grid"; 31 power = { 32 source = "script"; 33 cmd = "/bin/sh -c 'echo -4500'"; 34 }; 35 } { 36 type = "custom"; 37 name = "pv"; 38 power = { 39 source = "script"; 40 cmd = "/bin/sh -c 'echo 7500'"; 41 }; 42 } ]; 43 44 chargers = [ { 45 name = "dummy-charger"; 46 type = "custom"; 47 status = { 48 source = "script"; 49 cmd = "/bin/sh -c 'echo charger status F'"; 50 }; 51 enabled = { 52 source = "script"; 53 cmd = "/bin/sh -c 'echo charger enabled state false'"; 54 }; 55 enable = { 56 source = "script"; 57 cmd = "/bin/sh -c 'echo set charger enabled state true'"; 58 }; 59 maxcurrent = { 60 source = "script"; 61 cmd = "/bin/sh -c 'echo set charger max current 7200'"; 62 }; 63 } ]; 64 65 loadpoints = [ { 66 title = "Dummy"; 67 charger = "dummy-charger"; 68 } ]; 69 }; 70 }; 71 }; 72 }; 73 74 testScript = '' 75 start_all() 76 77 machine.wait_for_unit("evcc.service") 78 machine.wait_for_open_port(7070) 79 80 with subtest("Check package version propagates into frontend"): 81 machine.fail( 82 "curl --fail http://localhost:7070 | grep '0.0.1-alpha'" 83 ) 84 machine.succeed( 85 "curl --fail http://localhost:7070 | grep '${pkgs.evcc.version}'" 86 ) 87 88 with subtest("Check journal for errors"): 89 _, output = machine.execute("journalctl -o cat -u evcc.service") 90 assert "FATAL" not in output 91 92 with subtest("Check systemd hardening"): 93 _, output = machine.execute("systemd-analyze security evcc.service | grep -v ''") 94 machine.log(output) 95 ''; 96})