diff options
author | Antoine R. Dumont (@ardumont) <antoine.romain.dumont@gmail.com> | 2020-07-19 02:01:16 +0200 |
---|---|---|
committer | Antoine R. Dumont (@ardumont) <ardumont@softwareheritage.org> | 2020-10-08 08:59:49 +0200 |
commit | 9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5 (patch) | |
tree | dbf17a9811206131729ece0c7619616d3ea15bc0 /nixos/tests/mediatomb.nix | |
parent | 86e56d5322c527f75cb9570abb9fb56c22c2268c (diff) | |
download | nixpkgs-9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5.tar nixpkgs-9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5.tar.gz nixpkgs-9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5.tar.bz2 nixpkgs-9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5.tar.lz nixpkgs-9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5.tar.xz nixpkgs-9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5.tar.zst nixpkgs-9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5.zip |
mediatomb/gerbera: Bootstrap tests on service
This exposes 2 scenario running the mediatomb service: - one running with the unmaintained mediatomb package - one running with the new maintained gerbera package
Diffstat (limited to 'nixos/tests/mediatomb.nix')
-rw-r--r-- | nixos/tests/mediatomb.nix | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/nixos/tests/mediatomb.nix b/nixos/tests/mediatomb.nix new file mode 100644 index 00000000000..f07e453aadc --- /dev/null +++ b/nixos/tests/mediatomb.nix @@ -0,0 +1,84 @@ +import ./make-test-python.nix ({ pkgs, ... }: + +{ + name = "mediatomb"; + + nodes = { + serverGerbera = + { ... }: + let port = 49152; + in { + imports = [ ../modules/profiles/minimal.nix ]; + services.mediatomb = { + enable = true; + serverName = "Gerbera"; + package = pkgs.gerbera; + interface = "eth1"; # accessible from test + mediaDirectories = [ + { path = "/var/lib/gerbera/pictures"; recursive = false; hidden-files = false; } + { path = "/var/lib/gerbera/audio"; recursive = true; hidden-files = false; } + ]; + }; + networking.firewall = { + allowedUDPPorts = [ 1900 port ]; + allowedTCPPorts = [ port ]; + }; + }; + + serverMediatomb = + { ... }: + let port = 49151; + in { + imports = [ ../modules/profiles/minimal.nix ]; + services.mediatomb = { + enable = true; + serverName = "Mediatomb"; + package = pkgs.mediatomb; + interface = "eth1"; + inherit port; + mediaDirectories = [ + { path = "/var/lib/mediatomb/pictures"; recursive = false; hidden-files = false; } + { path = "/var/lib/mediatomb/audio"; recursive = true; hidden-files = false; } + ]; + }; + networking.firewall = { + allowedUDPPorts = [ 1900 port ]; + allowedTCPPorts = [ port ]; + }; + }; + + client = { ... }: { }; + }; + + testScript = + '' + start_all() + + port = 49151 + serverMediatomb.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}") + serverMediatomb.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb") + serverMediatomb.wait_for_unit("mediatomb") + serverMediatomb.wait_for_open_port(port) + serverMediatomb.succeed(f"curl --fail http://serverMediatomb:{port}/") + page = client.succeed(f"curl --fail http://serverMediatomb:{port}/") + assert "MediaTomb" in page and "Gerbera" not in page + serverMediatomb.shutdown() + + port = 49152 + serverGerbera.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}") + serverGerbera.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb") + # service running gerbera fails the first time claiming something is already bound + # gerbera[715]: 2020-07-18 23:52:14 info: Please check if another instance of Gerbera or + # gerbera[715]: 2020-07-18 23:52:14 info: another application is running on port TCP 49152 or UDP 1900. + # I did not find anything so here I work around this + serverGerbera.succeed("sleep 2") + serverGerbera.wait_until_succeeds("systemctl restart mediatomb") + serverGerbera.wait_for_unit("mediatomb") + serverGerbera.succeed(f"curl --fail http://serverGerbera:{port}/") + page = client.succeed(f"curl --fail http://serverGerbera:{port}/") + assert "Gerbera" in page and "MediaTomb" not in page + + serverGerbera.shutdown() + client.shutdown() + ''; +}) |