diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index bf6fd60b144..a1871ee5f90 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -144,6 +144,7 @@ in misc = handleTest ./misc.nix {}; mongodb = handleTest ./mongodb.nix {}; morty = handleTest ./morty.nix {}; + mosquitto = handleTest ./mosquitto.nix {}; mpd = handleTest ./mpd.nix {}; mumble = handleTest ./mumble.nix {}; munin = handleTest ./munin.nix {}; diff --git a/nixos/tests/mosquitto.nix b/nixos/tests/mosquitto.nix new file mode 100644 index 00000000000..86b7f9c044d --- /dev/null +++ b/nixos/tests/mosquitto.nix @@ -0,0 +1,69 @@ +import ./make-test.nix ({ pkgs, ... }: + +let + port = 1888; + username = "mqtt"; + password = "VERY_secret"; + topic = "test/foo"; + + cmd = bin: pkgs.lib.concatStringsSep " " [ + "${pkgs.mosquitto}/bin/mosquitto_${bin}" + "-V mqttv311" + "-h server" + "-p ${toString port}" + "-u ${username}" + "-P '${password}'" + "-t ${topic}" + ]; + +in rec { + name = "mosquitto"; + meta = with pkgs.stdenv.lib; { + maintainers = with maintainers; [ peterhoeg ]; + }; + + nodes = let + client = { pkgs, ... }: { + environment.systemPackages = with pkgs; [ mosquitto ]; + }; + in { + server = { pkgs, ... }: { + networking.firewall.allowedTCPPorts = [ port ]; + services.mosquitto = { + inherit port; + enable = true; + host = "0.0.0.0"; + checkPasswords = true; + users."${username}" = { + inherit password; + acl = [ + "topic readwrite ${topic}" + ]; + }; + }; + }; + + client1 = client; + client2 = client; + }; + + testScript = let + file = "/tmp/msg"; + payload = "wootWOOT"; + in '' + startAll; + $server->waitForUnit("mosquitto.service"); + + $server->fail("test -f ${file}"); + $server->execute("(${cmd "sub"} -C 1 | tee ${file} &)"); + + $client1->fail("test -f ${file}"); + $client1->execute("(${cmd "sub"} -C 1 | tee ${file} &)"); + + $client2->succeed("${cmd "pub"} -m ${payload}"); + + $server->succeed("grep -q ${payload} ${file}"); + + $client1->succeed("grep -q ${payload} ${file}"); + ''; +}) diff --git a/pkgs/servers/mqtt/mosquitto/default.nix b/pkgs/servers/mqtt/mosquitto/default.nix index 75a0498dd3f..ee127729276 100644 --- a/pkgs/servers/mqtt/mosquitto/default.nix +++ b/pkgs/servers/mqtt/mosquitto/default.nix @@ -1,19 +1,16 @@ { stdenv, lib, fetchFromGitHub, fetchpatch, cmake, docbook_xsl, libxslt , openssl, libuuid, libwebsockets, c-ares, libuv -, systemd ? null }: +, systemd ? null, withSystemd ? stdenv.isLinux }: -let - withSystemd = stdenv.isLinux; - -in stdenv.mkDerivation rec { +stdenv.mkDerivation rec { name = "mosquitto-${version}"; - version = "1.5.8"; + version = "1.6"; src = fetchFromGitHub { owner = "eclipse"; repo = "mosquitto"; rev = "v${version}"; - sha256 = "1rf8g6fq7g1mhwsajsgvvlynasybgc51v0qg5j6ynsxfh8yi7s6r"; + sha256 = "1yvn0yj9hb502lvk2yrshpvrnq2fddjyarnw37ip34mhxynnz5gb"; }; postPatch = '' @@ -38,8 +35,6 @@ in stdenv.mkDerivation rec { nativeBuildInputs = [ cmake docbook_xsl libxslt ]; - enableParallelBuilding = true; - cmakeFlags = [ "-DWITH_THREADING=ON" "-DWITH_WEBSOCKETS=ON"