48 lines
1.6 KiB
Nix
48 lines
1.6 KiB
Nix
{ pkgs, lib, ... }:
|
|
let
|
|
pkgs' = pkgs;
|
|
in
|
|
{
|
|
# This test, although simple, makes sure all provisioning went fine.
|
|
auth = pkgs.testers.runNixOSTest {
|
|
name = "monitoring-basic";
|
|
|
|
nodes.machine = { config, pkgs, ... }: {
|
|
imports = [
|
|
(pkgs'.path + "/nixos/modules/profiles/headless.nix")
|
|
(pkgs'.path + "/nixos/modules/profiles/qemu-guest.nix")
|
|
{
|
|
options = {
|
|
shb.ssl.enable = lib.mkEnableOption "ssl";
|
|
};
|
|
}
|
|
../../modules/blocks/postgresql.nix
|
|
../../modules/blocks/monitoring.nix
|
|
];
|
|
|
|
shb.monitoring = {
|
|
enable = true;
|
|
subdomain = "grafana";
|
|
domain = "example.com";
|
|
grafanaPort = 3000;
|
|
adminPasswordFile = pkgs.writeText "admin_password" "securepw";
|
|
secretKeyFile = pkgs.writeText "secret_key" "secret_key";
|
|
};
|
|
};
|
|
|
|
testScript = { nodes, ... }: ''
|
|
start_all()
|
|
machine.wait_for_unit("grafana.service")
|
|
machine.wait_for_open_port(${toString nodes.machine.services.grafana.settings.server.http_port})
|
|
|
|
def curl_req(password, wantStatus, endpoint):
|
|
response = machine.wait_until_succeeds("curl -i http://admin:{password}@localhost:3000{endpoint}".format(password=password, endpoint=endpoint), timeout=10)
|
|
if not response.startswith("HTTP/1.1 {wantStatus}".format(wantStatus=wantStatus)):
|
|
raise Exception("Wrong status, expected {}, got {}".format(wantStatus, response[9:12]))
|
|
return response
|
|
|
|
curl_req("securepw", 200, "/api/org")
|
|
curl_req("wrong", 401, "/api/org")
|
|
'';
|
|
};
|
|
}
|