diff --git a/.circleci/config.yml b/.circleci/config.yml index 7f6a53d..d88ae35 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,7 +5,7 @@ jobs: # basic units of work in a run docker: # run the steps with Docker - image: cimg/elixir:1.15.5-erlang-26.0.2 # ...with this image as the primary container; this is where all `steps` will run environment: # environment variables for primary container - MIX_ENV: test + MIX_ENV: circleci working_directory: ~/app # directory where steps will run diff --git a/lib/speedtest.ex b/lib/speedtest.ex index 4f086a0..465b496 100644 --- a/lib/speedtest.ex +++ b/lib/speedtest.ex @@ -248,47 +248,54 @@ defmodule Speedtest do selected_server = choose_best_server(closest_servers) - {_, _, ping} = selected_server.ping + {status, _, response} = selected_server.ping - ping = to_string(ping) + reply = + case status do + :ok -> + ping = to_string(response) - elapsed_time = ping <> " ms" + elapsed_time = ping <> " ms" - Logger.info( - "Hosted by " <> - selected_server.sponsor <> - " (" <> - selected_server.name <> - ") " <> - "[" <> - to_string(Float.round(selected_server.distance / 1000)) <> " km]: " <> elapsed_time - ) + Logger.info( + "Hosted by " <> + selected_server.sponsor <> + " (" <> + selected_server.name <> + ") " <> + "[" <> + to_string(Float.round(selected_server.distance / 1000)) <> " km]: " <> elapsed_time + ) - speedtest = %{result | selected_server: selected_server} + speedtest = %{result | selected_server: selected_server} - {_, download_reply} = download(speedtest) + {_, download_reply} = download(speedtest) - {_, upload_reply} = upload(speedtest) + {_, upload_reply} = upload(speedtest) - replys = {upload_reply, download_reply} + replys = {upload_reply, download_reply} - {_, reply} = Result.create(speedtest, replys) + {_, reply} = Result.create(speedtest, replys) - speed = to_string(reply.result.download) <> " Mbit/s" - Logger.info("Download: " <> speed) + speed = to_string(reply.result.download) <> " Mbit/s" + Logger.info("Download: " <> speed) - speed = to_string(reply.result.upload) <> " Mbit/s" - Logger.info("Upload: " <> speed) + speed = to_string(reply.result.upload) <> " Mbit/s" + Logger.info("Upload: " <> speed) - config = reply.config + config = reply.config - client = reply.result.client + client = reply.result.client - config = %{config | client: client} + config = %{config | client: client} - reply = %{reply | config: config} + %{reply | config: config} - {:ok, reply} + _ -> + response + end + + {status, reply} end @doc """ diff --git a/test/speedtest_test.exs b/test/speedtest_test.exs index 71c75b1..e2a31e3 100644 --- a/test/speedtest_test.exs +++ b/test/speedtest_test.exs @@ -8,6 +8,13 @@ defmodule SpeedtestTest do test "Run the Speedtest" do {status, _} = Speedtest.run() - assert status == :ok + + case Mix.env() do + :test -> + assert status == :ok + + :circleci -> + assert status == :error + end end end