From 9fdd11c6a82f1480bcd6285e55623a60ebd3e0e5 Mon Sep 17 00:00:00 2001 From: "Antoine R. Dumont (@ardumont)" Date: Sun, 19 Jul 2020 02:01:16 +0200 Subject: 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 --- nixos/tests/mediatomb.nix | 84 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 nixos/tests/mediatomb.nix (limited to 'nixos/tests/mediatomb.nix') 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() + ''; +}) -- cgit 1.4.1