vuls: init at 0.27.0
[NixPkgs.git] / nixos / tests / osrm-backend.nix
blobb0e65a2ae1c1083b7536628a8da1d2a3e28db908
1 import ./make-test-python.nix ({ pkgs, lib, ... }:
2 let
3   port = 5000;
4 in {
5   name = "osrm-backend";
6   meta.maintainers = [ lib.maintainers.erictapen ];
8   nodes.machine = { config, pkgs, ... }:{
10     services.osrm = {
11       enable = true;
12       inherit port;
13       dataFile = let
14         filename = "monaco";
15         osrm-data = pkgs.stdenv.mkDerivation {
16           name = "osrm-data";
18           buildInputs = [ pkgs.osrm-backend ];
20           # This is a pbf file of monaco, downloaded at 2019-01-04 from
21           # http://download.geofabrik.de/europe/monaco-latest.osm.pbf
22           # as apparently no provider of OSM files guarantees immutability,
23           # this is hosted as a gist on GitHub.
24           src = pkgs.fetchgit {
25             url = "https://gist.github.com/erictapen/01e39f73a6c856eac53ba809a94cdb83";
26             rev = "9b1ff0f24deb40e5cf7df51f843dbe860637b8ce";
27             sha256 = "1scqhmrfnpwsy5i2a9jpggqnvfgj4hv9p4qyvc79321pzkbv59nx";
28           };
30           buildCommand = ''
31             cp $src/${filename}.osm.pbf .
32             ${pkgs.osrm-backend}/bin/osrm-extract -p ${pkgs.osrm-backend}/share/osrm/profiles/car.lua ${filename}.osm.pbf
33             ${pkgs.osrm-backend}/bin/osrm-partition ${filename}.osrm
34             ${pkgs.osrm-backend}/bin/osrm-customize ${filename}.osrm
35             mkdir -p $out
36             cp ${filename}* $out/
37           '';
38         };
39       in "${osrm-data}/${filename}.osrm";
40     };
42     environment.systemPackages = [ pkgs.jq ];
43   };
45   testScript = let
46     query = "http://localhost:${toString port}/route/v1/driving/7.41720,43.73304;7.42463,43.73886?steps=true";
47   in ''
48     machine.wait_for_unit("osrm.service")
49     machine.wait_for_open_port(${toString port})
50     assert "Boulevard Rainier III" in machine.succeed(
51         "curl --fail --silent '${query}' | jq .waypoints[0].name"
52     )
53     assert "Avenue de la Costa" in machine.succeed(
54         "curl --fail --silent '${query}' | jq .waypoints[1].name"
55     )
56   '';