anchor.diff:  
     testScript = let
       file = "/tmp/msg";
  -    sub = args:
  -      "(${cmd "sub"} -C 1 ${args} | tee ${file} &)";
     in ''
  +    def mosquitto_cmd(binary):
  +        return (
  +            "${pkgs.mosquitto}/bin/mosquitto_{} "
  +            "-V mqttv311 "
  +            "-h server "
  +            "-p ${toString port} "
  +            "-u ${username} "
  +            "-P '${password}' "
  +            "-t ${topic}"
  +        ).format(binary)
  +
  +
  +    def publish(args):
  +        return "{} {}".format(mosquitto_cmd("pub"), args)
  +
  +
  +    def subscribe(args):
  +        return "({} -C 1 {} | tee ${file} &)".format(mosquitto_cmd("sub"), args)
  +
  +
       start_all()
       server.wait_for_unit("mosquitto.service")
   
  
positive.code:         machine.fail("test -f ${file}")
  
      # QoS = 0, so only one subscribers should get it
      server.execute(
          "${sub "-q 0"}"
      )
  
      # we need to give the subscribers some time to connect
      client2.execute("sleep 5")
      client2.succeed(
          "${cmd "pub"} -m FOO -q 0"
      )
  
      server.wait_until_succeeds("grep -q FOO ${file}")
      server.execute("rm ${file}")
  
      # QoS = 1, so both subscribers should get it
      server.execute(
          "${sub "-q 1"}"
      )
      client1.execute(
          "${sub "-q 1"}"
      )
  
      # we need to give the subscribers some time to connect
      client2.execute("sleep 5")
      client2.succeed(
          "${cmd "pub"} -m BAR -q 1"
      )
  
      server.wait_until_succeeds("grep -q BAR ${file}")
      server.execute("rm ${file}")
  
      client1.wait_until_succeeds("grep -q BAR ${file}")
      client1.execute("rm ${file}")
    '';
  })
  
negative.code:   username = "mqtt";
    password = "VERY_secret";
    topic = "test/foo";
  in {
    name = "mosquitto";
    meta = with pkgs.stdenv.lib; {
  