at 25.11-pre 2.5 kB view raw
1import ./make-test-python.nix ( 2 { lib, pkgs, ... }: 3 { 4 name = "karma"; 5 nodes = { 6 server = 7 { ... }: 8 { 9 services.prometheus.alertmanager = { 10 enable = true; 11 logLevel = "debug"; 12 port = 9093; 13 openFirewall = true; 14 configuration = { 15 global = { 16 resolve_timeout = "1m"; 17 }; 18 route = { 19 # Root route node 20 receiver = "test"; 21 group_by = [ "..." ]; 22 continue = false; 23 group_wait = "1s"; 24 group_interval = "15s"; 25 repeat_interval = "24h"; 26 }; 27 receivers = [ 28 { 29 name = "test"; 30 webhook_configs = [ 31 { 32 url = "http://localhost:1234"; 33 send_resolved = true; 34 max_alerts = 0; 35 } 36 ]; 37 } 38 ]; 39 }; 40 }; 41 services.karma = { 42 enable = true; 43 openFirewall = true; 44 settings = { 45 listen = { 46 address = "0.0.0.0"; 47 port = 8081; 48 }; 49 alertmanager = { 50 servers = [ 51 { 52 name = "alertmanager"; 53 uri = "https://127.0.0.1:9093"; 54 } 55 ]; 56 }; 57 karma.name = "test-dashboard"; 58 log.config = true; 59 log.requests = true; 60 log.timestamp = true; 61 }; 62 }; 63 }; 64 }; 65 66 testScript = '' 67 start_all() 68 69 with subtest("Wait for server to come up"): 70 71 server.wait_for_unit("alertmanager.service") 72 server.wait_for_unit("karma.service") 73 74 server.sleep(5) # wait for both services to settle 75 76 server.wait_for_open_port(9093) 77 server.wait_for_open_port(8081) 78 79 with subtest("Test alertmanager readiness"): 80 server.succeed("curl -s http://127.0.0.1:9093/-/ready") 81 82 # Karma only starts serving the dashboard once it has established connectivity to all alertmanagers in its config 83 # Therefore, this will fail if karma isn't able to reach alertmanager 84 server.succeed("curl -s http://127.0.0.1:8081") 85 86 server.shutdown() 87 ''; 88 } 89)