96 lines
2.4 KiB
Nix
96 lines
2.4 KiB
Nix
import ./make-test-python.nix ({ pkgs, lib, ...} :
|
|
|
|
{
|
|
name = "evcc";
|
|
meta.maintainers = with lib.maintainers; [ hexa ];
|
|
|
|
nodes = {
|
|
machine = { config, ... }: {
|
|
services.evcc = {
|
|
enable = true;
|
|
settings = {
|
|
network = {
|
|
schema = "http";
|
|
host = "localhost";
|
|
port = 7070;
|
|
};
|
|
|
|
log = "info";
|
|
|
|
site = {
|
|
title = "NixOS Test";
|
|
meters = {
|
|
grid = "grid";
|
|
pv = "pv";
|
|
};
|
|
};
|
|
|
|
meters = [ {
|
|
type = "custom";
|
|
name = "grid";
|
|
power = {
|
|
source = "script";
|
|
cmd = "/bin/sh -c 'echo -4500'";
|
|
};
|
|
} {
|
|
type = "custom";
|
|
name = "pv";
|
|
power = {
|
|
source = "script";
|
|
cmd = "/bin/sh -c 'echo 7500'";
|
|
};
|
|
} ];
|
|
|
|
chargers = [ {
|
|
name = "dummy-charger";
|
|
type = "custom";
|
|
status = {
|
|
source = "script";
|
|
cmd = "/bin/sh -c 'echo charger status A'";
|
|
};
|
|
enabled = {
|
|
source = "script";
|
|
cmd = "/bin/sh -c 'echo charger enabled state false'";
|
|
};
|
|
enable = {
|
|
source = "script";
|
|
cmd = "/bin/sh -c 'echo set charger enabled state true'";
|
|
};
|
|
maxcurrent = {
|
|
source = "script";
|
|
cmd = "/bin/sh -c 'echo set charger max current 7200'";
|
|
};
|
|
} ];
|
|
|
|
loadpoints = [ {
|
|
title = "Dummy";
|
|
charger = "dummy-charger";
|
|
} ];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
testScript = ''
|
|
start_all()
|
|
|
|
machine.wait_for_unit("evcc.service")
|
|
machine.wait_for_open_port(7070)
|
|
|
|
with subtest("Check package version propagates into frontend"):
|
|
machine.fail(
|
|
"curl --fail http://localhost:7070 | grep '0.0.1-alpha'"
|
|
)
|
|
machine.succeed(
|
|
"curl --fail http://localhost:7070 | grep '${pkgs.evcc.version}'"
|
|
)
|
|
|
|
with subtest("Check journal for errors"):
|
|
_, output = machine.execute("journalctl -o cat -u evcc.service")
|
|
assert "FATAL" not in output
|
|
|
|
with subtest("Check systemd hardening"):
|
|
_, output = machine.execute("systemd-analyze security evcc.service | grep -v '✓'")
|
|
machine.log(output)
|
|
'';
|
|
})
|