1import ./make-test.nix ({ pkgs, ... } :
2{
3 name = "graphite";
4 nodes = {
5 one =
6 { ... }: {
7 virtualisation.memorySize = 1024;
8 time.timeZone = "UTC";
9 services.graphite = {
10 web.enable = true;
11 api = {
12 enable = true;
13 port = 8082;
14 finders = [ pkgs.python27Packages.influxgraph ];
15 };
16 carbon.enableCache = true;
17 seyren.enable = true;
18 pager.enable = true;
19 beacon.enable = true;
20 };
21 };
22 };
23
24 testScript = ''
25 startAll;
26 $one->waitForUnit("default.target");
27 $one->waitForUnit("graphiteWeb.service");
28 $one->waitForUnit("graphiteApi.service");
29 $one->waitForUnit("graphitePager.service");
30 $one->waitForUnit("graphite-beacon.service");
31 $one->waitForUnit("carbonCache.service");
32 $one->waitForUnit("seyren.service");
33 # The services above are of type "simple". systemd considers them active immediately
34 # even if they're still in preStart (which takes quite long for graphiteWeb).
35 # Wait for ports to open so we're sure the services are up and listening.
36 $one->waitForOpenPort(8080);
37 $one->waitForOpenPort(2003);
38 $one->succeed("echo \"foo 1 `date +%s`\" | nc -N localhost 2003");
39 $one->waitUntilSucceeds("curl 'http://localhost:8080/metrics/find/?query=foo&format=treejson' --silent | grep foo >&2");
40 '';
41})