diff --git a/.travis.yml b/.travis.yml index 3bf7c510..a1fe441d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,10 +9,11 @@ services: - docker before_install: - - docker run -d -p 2197:2197 mobify/apns-http2-mock-server - - docker run -d -p 443:443 roxeon/fcm-http2-mock-server + - tools/travis-setup.sh env: - - MIX_ENV=test + - PRESET=exunit MIX_ENV=test + - PRESET=credo MIX_ENV=test + - PRESET=dialyzer MIX=test -script: mix coveralls.travis +script: tools/travis-test.sh diff --git a/Makefile b/Makefile index 1fff41d2..b5059fa1 100644 --- a/Makefile +++ b/Makefile @@ -11,14 +11,21 @@ compile: mix compile certs: priv/ssl/fake_cert.pem priv/ssl/fake_server.pem priv/ssl/fake_dh_server.pem \ - priv/apns/app_cert.pem + priv/apns/dev_cert.pem priv/apns/prod_cert.pem -priv/apns/app_cert.pem: +priv/apns/prod_cert.pem: @mkdir -p $(@D) openssl req \ -x509 -nodes -days 365 \ - -subj '/C=PL/ST=ML/L=Krakow/CN=mongoose-push-apns' \ - -newkey rsa:2048 -keyout priv/apns/app_key.pem -out priv/apns/app_cert.pem + -subj '/C=PL/ST=ML/L=Krakow/CN=mongoose-push-apns-prod' \ + -newkey rsa:2048 -keyout priv/apns/prod_key.pem -out priv/apns/prod_cert.pem + +priv/apns/dev_cert.pem: + @mkdir -p $(@D) + openssl req \ + -x509 -nodes -days 365 \ + -subj '/C=PL/ST=ML/L=Krakow/CN=mongoose-push-apns-dev' \ + -newkey rsa:2048 -keyout priv/apns/dev_key.pem -out priv/apns/dev_cert.pem priv/ssl/fake_cert.pem: @mkdir -p $(@D) diff --git a/lib/mongoose_push/application.ex b/lib/mongoose_push/application.ex index 823d8d03..b3b933a5 100644 --- a/lib/mongoose_push/application.ex +++ b/lib/mongoose_push/application.ex @@ -49,16 +49,16 @@ defmodule MongoosePush.Application do def pool_size(type, name), do: env(type)[name][:pool_size] def worker_name(type, name, num), do: String.to_atom(~s"#{type}_#{name}_#{num}") - def pools_by_mode(service, mode) when is_atom(service) do - pools_by_mode(env(service), mode) - end + def pools_by_mode(:fcm = service, _mode) do + config = env(service) - def pools_by_mode(config, _mode) do config |> Enum.map(&(elem(&1, 0))) end - def pools_by_mode(config, mode) do + def pools_by_mode(:apns = service, mode) do + config = env(service) + config |> Enum.group_by(&(elem(&1, 1)[:mode]), &(elem &1, 0)) |> Map.get(mode) diff --git a/mix.exs b/mix.exs index 89ce3086..d78b8b8e 100644 --- a/mix.exs +++ b/mix.exs @@ -38,7 +38,7 @@ defmodule MongoosePush.Mixfile do {:httpoison, "~> 0.10.0"}, {:mock, "~> 0.2.0", only: :test}, {:excoveralls, "~> 0.6", only: :test}, - {:dialyxir, "~> 0.4", only: [:dev], runtime: false}, + {:dialyxir, "~> 0.4", only: [:dev, :test], runtime: false}, {:credo, "~> 0.5", only: [:dev, :test]} ] end diff --git a/tools/travis-setup.sh b/tools/travis-setup.sh new file mode 100755 index 00000000..75f23236 --- /dev/null +++ b/tools/travis-setup.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +set -e + +# Skip this setup for jobs that don't run exunit +test "${PRESET}" == "exunit" || exit 0 + +docker run -d -p 2197:2197 mobify/apns-http2-mock-server +docker run -d -p 443:443 roxeon/fcm-http2-mock-server diff --git a/tools/travis-test.sh b/tools/travis-test.sh new file mode 100755 index 00000000..07a0a9f6 --- /dev/null +++ b/tools/travis-test.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -e + +case "${PRESET}" in + "exunit" ) + mix coveralls.travis + ;; + "dialyzer" ) + mix dialyzer + ;; + "credo" ) + mix credo --ignore design + ;; + * ) + echo "Unknown PRESET value" || exit 1 +esac