1import ../make-test-python.nix (
2 { pkgs, lib, ... }:
3 let
4 inherit (pkgs) writeTextDir python3 curl;
5 webroot = writeTextDir "index.html" "<h1>Hi</h1>";
6 in
7 {
8 name = "podman-dnsname";
9 meta = {
10 maintainers = with lib.maintainers; [ roberth ] ++ lib.teams.podman.members;
11 };
12
13 nodes = {
14 podman = { pkgs, ... }: {
15 virtualisation.podman.enable = true;
16 virtualisation.podman.defaultNetwork.dnsname.enable = true;
17 };
18 };
19
20 testScript = ''
21 podman.wait_for_unit("sockets.target")
22
23 with subtest("DNS works"): # also tests inter-container tcp routing
24 podman.succeed("tar cv --files-from /dev/null | podman import - scratchimg")
25 podman.succeed(
26 "podman run -d --name=webserver -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin -w ${webroot} scratchimg ${python3}/bin/python -m http.server 8000"
27 )
28 podman.succeed("podman ps | grep webserver")
29 podman.succeed("""
30 for i in `seq 0 120`; do
31 podman run --rm --name=client -v /nix/store:/nix/store -v /run/current-system/sw/bin:/bin scratchimg ${curl}/bin/curl http://webserver:8000 >/dev/console \
32 && exit 0
33 sleep 0.5
34 done
35 exit 1
36 """)
37 podman.succeed("podman stop webserver")
38 podman.succeed("podman rm webserver")
39
40 '';
41 }
42)