diff --git a/CHANGELOG.md b/CHANGELOG.md index cb5317d..bfdaec6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ All notable changes to this project will be documented in this file. This change ### Added - Added CHANGELOG.md +### Updated +- Parameterize `timeout` for mqtt TCP connection, so it's not hardcoded + ## [0.0.3] - 2016-06-16 ### Added - Add Docker support for development environment. diff --git a/lib/hulaaki/client.ex b/lib/hulaaki/client.ex index 5b18727..b72ba4b 100644 --- a/lib/hulaaki/client.ex +++ b/lib/hulaaki/client.ex @@ -57,6 +57,7 @@ defmodule Hulaaki.Client do def handle_call({:connect, opts, conn_pid}, _from, state) do host = opts |> Keyword.fetch!(:host) port = opts |> Keyword.fetch!(:port) + timeout = opts |> Keyword.get(:timeout, 100) client_id = opts |> Keyword.fetch!(:client_id) username = opts |> Keyword.get(:username, "") @@ -74,7 +75,7 @@ defmodule Hulaaki.Client do state = Map.merge(%{connection: conn_pid}, state) - connect_opts = [host: host, port: port] + connect_opts = [host: host, port: port, timeout: timeout] :ok = state.connection |> Connection.connect(message, connect_opts) {:reply, :ok, state} end diff --git a/lib/hulaaki/connection.ex b/lib/hulaaki/connection.ex index 3ad5d70..4df9bc0 100644 --- a/lib/hulaaki/connection.ex +++ b/lib/hulaaki/connection.ex @@ -138,7 +138,7 @@ defmodule Hulaaki.Connection do end defp open_tcp_socket(opts) do - timeout = 100 + timeout = opts |> Keyword.fetch!(:timeout) host = opts |> Keyword.fetch!(:host) host = if is_binary(host), do: String.to_char_list(host), else: host port = opts |> Keyword.fetch!(:port) diff --git a/test/hulaaki/client_test.exs b/test/hulaaki/client_test.exs index 7aac524..b8a7872 100644 --- a/test/hulaaki/client_test.exs +++ b/test/hulaaki/client_test.exs @@ -76,7 +76,7 @@ defmodule Hulaaki.ClientTest do end defp pre_connect(pid) do - options = [client_id: "some-name", host: TestConfig.mqtt_host, port: TestConfig.mqtt_port] + options = [client_id: "some-name", host: TestConfig.mqtt_host, port: TestConfig.mqtt_port, timeout: 200] SampleClient.connect(pid, options) end diff --git a/test/hulaaki/connection_test.exs b/test/hulaaki/connection_test.exs index 247208d..2955b61 100644 --- a/test/hulaaki/connection_test.exs +++ b/test/hulaaki/connection_test.exs @@ -24,7 +24,7 @@ defmodule Hulaaki.ConnectionTest do defp pre_connect(pid) do message = Message.connect(client_name, "", "", "", "", 0, 0, 0, 100) - Connection.connect(pid, message, [host: TestConfig.mqtt_host, port: TestConfig.mqtt_port]) + Connection.connect(pid, message, [host: TestConfig.mqtt_host, port: TestConfig.mqtt_port, timeout: TestConfig.mqtt_timeout]) end defp post_disconnect(pid) do diff --git a/test/test_helper.exs b/test/test_helper.exs index 628716a..011e9f6 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -10,4 +10,8 @@ defmodule TestConfig do {port, _} = ( System.get_env("MQTT_PORT") || "1883" ) |> Integer.parse port end + + def mqtt_timeout do + 500 + end end