1import ./make-test-python.nix ({ pkgs, ... }: {
2 name = "mimir";
3 nodes = {
4 server = { ... }: {
5 environment.systemPackages = [ pkgs.jq ];
6 services.mimir.enable = true;
7 services.mimir.configuration = {
8 ingester.ring.replication_factor = 1;
9 };
10
11 services.telegraf.enable = true;
12 services.telegraf.extraConfig = {
13 agent.interval = "1s";
14 agent.flush_interval = "1s";
15 inputs.exec = {
16 commands = [
17 "${pkgs.coreutils}/bin/echo 'foo i=42i'"
18 ];
19 data_format = "influx";
20 };
21 outputs = {
22 http = {
23 # test remote write
24 url = "http://localhost:8080/api/v1/push";
25
26 # Data format to output.
27 data_format = "prometheusremotewrite";
28
29 headers = {
30 Content-Type = "application/x-protobuf";
31 Content-Encoding = "snappy";
32 X-Scope-OrgID = "nixos";
33 X-Prometheus-Remote-Write-Version = "0.1.0";
34 };
35 };
36 };
37 };
38 };
39 };
40
41 testScript = ''
42 start_all()
43 server.wait_for_unit("mimir.service")
44 server.wait_for_unit("telegraf.service")
45 server.wait_for_open_port(8080)
46 server.wait_until_succeeds(
47 "curl -H 'X-Scope-OrgID: nixos' http://127.0.0.1:8080/prometheus/api/v1/label/host/values | jq -r '.data[0]' | grep server"
48 )
49 '';
50})