at 22.05-pre 2.9 kB view raw
1import ./make-test-python.nix ({ pkgs, ... }: 2 3{ 4 name = "mediatomb"; 5 6 nodes = { 7 serverGerbera = 8 { ... }: 9 let port = 49152; 10 in { 11 imports = [ ../modules/profiles/minimal.nix ]; 12 services.mediatomb = { 13 enable = true; 14 serverName = "Gerbera"; 15 package = pkgs.gerbera; 16 interface = "eth1"; # accessible from test 17 openFirewall = true; 18 mediaDirectories = [ 19 { path = "/var/lib/gerbera/pictures"; recursive = false; hidden-files = false; } 20 { path = "/var/lib/gerbera/audio"; recursive = true; hidden-files = false; } 21 ]; 22 }; 23 }; 24 25 serverMediatomb = 26 { ... }: 27 let port = 49151; 28 in { 29 imports = [ ../modules/profiles/minimal.nix ]; 30 services.mediatomb = { 31 enable = true; 32 serverName = "Mediatomb"; 33 package = pkgs.mediatomb; 34 interface = "eth1"; 35 inherit port; 36 mediaDirectories = [ 37 { path = "/var/lib/mediatomb/pictures"; recursive = false; hidden-files = false; } 38 { path = "/var/lib/mediatomb/audio"; recursive = true; hidden-files = false; } 39 ]; 40 }; 41 networking.firewall.interfaces.eth1 = { 42 allowedUDPPorts = [ 1900 port ]; 43 allowedTCPPorts = [ port ]; 44 }; 45 }; 46 47 client = { ... }: { }; 48 }; 49 50 testScript = 51 '' 52 start_all() 53 54 port = 49151 55 serverMediatomb.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}") 56 serverMediatomb.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb") 57 serverMediatomb.wait_for_unit("mediatomb") 58 serverMediatomb.wait_for_open_port(port) 59 serverMediatomb.succeed(f"curl --fail http://serverMediatomb:{port}/") 60 page = client.succeed(f"curl --fail http://serverMediatomb:{port}/") 61 assert "MediaTomb" in page and "Gerbera" not in page 62 serverMediatomb.shutdown() 63 64 port = 49152 65 serverGerbera.succeed("mkdir -p /var/lib/mediatomb/{pictures,audio}") 66 serverGerbera.succeed("chown -R mediatomb:mediatomb /var/lib/mediatomb") 67 # service running gerbera fails the first time claiming something is already bound 68 # gerbera[715]: 2020-07-18 23:52:14 info: Please check if another instance of Gerbera or 69 # gerbera[715]: 2020-07-18 23:52:14 info: another application is running on port TCP 49152 or UDP 1900. 70 # I did not find anything so here I work around this 71 serverGerbera.succeed("sleep 2") 72 serverGerbera.wait_until_succeeds("systemctl restart mediatomb") 73 serverGerbera.wait_for_unit("mediatomb") 74 serverGerbera.succeed(f"curl --fail http://serverGerbera:{port}/") 75 page = client.succeed(f"curl --fail http://serverGerbera:{port}/") 76 assert "Gerbera" in page and "MediaTomb" not in page 77 78 serverGerbera.shutdown() 79 client.shutdown() 80 ''; 81})