From 786a52d7e1ab6414bc0d0ec96ae47c46384948e4 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Tue, 20 Jun 2023 09:37:52 +0200 Subject: [PATCH 1/5] Update Erlang and Elixir in CI --- .github/workflows/ci.yml | 49 ++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 04febb9..09a691a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,48 +17,59 @@ jobs: matrix: include: - pair: - elixir: 1.8.2 - otp: 21.3.8.17 + elixir: "1.8.2" + otp: "21.3.8.17" - pair: - elixir: 1.14.3 - otp: 24.3 + elixir: "1.15.0" + otp: "26.0" lint: lint coverage: coverage steps: - name: Clone the repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Start Docker run: docker-compose up --detach - - uses: erlef/setup-beam@v1 + - name: Install Erlang/OTP and Elixir + uses: erlef/setup-beam@v1 with: - otp-version: ${{matrix.pair.otp}} - elixir-version: ${{matrix.pair.elixir}} + otp-version: ${{ matrix.pair.otp }} + elixir-version: ${{ matrix.pair.elixir }} - - uses: actions/cache@v2 + - name: Cache Mix dependencies + uses: actions/cache@v3 with: path: | deps _build - key: ${{ runner.os }}-mix-${{matrix.pair.elixir}}-${{matrix.pair.otp}}-${{ hashFiles('**/mix.lock') }} + key: | + ${{ runner.os }}-mix-${{ matrix.pair.elixir }}-${{ matrix.pair.otp }}-${{ hashFiles('**/mix.lock') }} restore-keys: | - ${{ runner.os }}-mix-${{matrix.pair.elixir}}-${{matrix.pair.otp}}- + ${{ runner.os }}-mix-${{ matrix.pair.elixir }}-${{ matrix.pair.otp }}- - - run: mix deps.get + - name: Fetch Mix dependencies + run: mix deps.get - - run: mix format --check-formatted + - name: Run the formatter + run: mix format --check-formatted if: ${{ matrix.lint }} - - run: mix deps.unlock --check-unused + - name: Check for unused dependencies + run: mix deps.unlock --check-unused if: ${{ matrix.lint }} - - run: mix deps.compile + - name: Compile Mix dependencies + run: mix deps.compile - - run: mix compile --warnings-as-errors + - name: Compile code and check for warnings + run: mix compile --warnings-as-errors if: ${{ matrix.lint }} - - run: mix test + - name: Run tests + run: mix test + if: ${{ !matrix.coverage }} - - run: mix coveralls.github - if: ${{matrix.coverage}} + - name: Run tests with coverage + run: mix coveralls.github + if: ${{ matrix.coverage }} From e2c6442654486ee0e9f2d18f05f592f15e3fc7d0 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Tue, 20 Jun 2023 09:39:56 +0200 Subject: [PATCH 2/5] Update formatting --- lib/broadway_rabbitmq/producer.ex | 2 +- test/broadway_rabbitmq/producer_test.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/broadway_rabbitmq/producer.ex b/lib/broadway_rabbitmq/producer.ex index b2523fc..8754489 100644 --- a/lib/broadway_rabbitmq/producer.ex +++ b/lib/broadway_rabbitmq/producer.ex @@ -718,7 +718,7 @@ defmodule BroadwayRabbitMQ.Producer do ) case reason do - {:auth_failure, 'Disconnected'} -> + {:auth_failure, ~c"Disconnected"} -> handle_backoff(state) {:socket_closed_unexpectedly, :"connection.start"} -> diff --git a/test/broadway_rabbitmq/producer_test.exs b/test/broadway_rabbitmq/producer_test.exs index d88dee1..87411a3 100644 --- a/test/broadway_rabbitmq/producer_test.exs +++ b/test/broadway_rabbitmq/producer_test.exs @@ -670,7 +670,7 @@ defmodule BroadwayRabbitMQ.ProducerTest do test "with auth_failure 'Disconnected'" do assert capture_log(fn -> - broadway = start_broadway(connect_responses: [{:auth_failure, 'Disconnected'}]) + broadway = start_broadway(connect_responses: [{:auth_failure, ~c"Disconnected"}]) assert_receive {:setup_channel, :error, _} assert_receive {:setup_channel, :ok, _} stop_broadway(broadway) From 63dee8bd1496d86f8600f656348e6c614e4c221e Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Tue, 20 Jun 2023 09:43:22 +0200 Subject: [PATCH 3/5] Deps --- mix.exs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index bae67ba..7f7e17a 100644 --- a/mix.exs +++ b/mix.exs @@ -36,8 +36,11 @@ defmodule BroadwayRabbitMQ.MixProject do {:amqp, "~> 1.3 or ~> 2.0 or ~> 3.0"}, {:nimble_options, "~> 0.3.5 or ~> 0.4.0 or ~> 1.0"}, {:telemetry, "~> 0.4.3 or ~> 1.0"}, + + # Dev and test dependencies {:ex_doc, ">= 0.25.0", only: :docs}, - {:excoveralls, "~> 0.14.4", only: :test} + {:excoveralls, "~> 0.14.4", only: :test}, + {:ssl_verify_fun, "~> 1.1.0", manager: :rebar3, override: true} ] end From 07f49e3cf919015e18171a473545fbc91a6c8f2d Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Tue, 20 Jun 2023 09:52:31 +0200 Subject: [PATCH 4/5] Fix test --- test/broadway_rabbitmq/producer_test.exs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/test/broadway_rabbitmq/producer_test.exs b/test/broadway_rabbitmq/producer_test.exs index 87411a3..b243f35 100644 --- a/test/broadway_rabbitmq/producer_test.exs +++ b/test/broadway_rabbitmq/producer_test.exs @@ -669,12 +669,16 @@ defmodule BroadwayRabbitMQ.ProducerTest do end test "with auth_failure 'Disconnected'" do - assert capture_log(fn -> - broadway = start_broadway(connect_responses: [{:auth_failure, ~c"Disconnected"}]) - assert_receive {:setup_channel, :error, _} - assert_receive {:setup_channel, :ok, _} - stop_broadway(broadway) - end) =~ "Cannot connect to RabbitMQ broker: {:auth_failure, 'Disconnected'}" + log = + capture_log(fn -> + broadway = start_broadway(connect_responses: [{:auth_failure, ~c"Disconnected"}]) + assert_receive {:setup_channel, :error, _} + assert_receive {:setup_channel, :ok, _} + stop_broadway(broadway) + end) + + assert log =~ "Cannot connect to RabbitMQ broker: {:auth_failure, 'Disconnected'}" or + log =~ "Cannot connect to RabbitMQ broker: {:auth_failure, ~c\"Disconnected\"}" end test "with socket_closed_unexpectedly" do From 6d63deb2c88ee77ea0b9cb5ced0948b543e9ba41 Mon Sep 17 00:00:00 2001 From: Andrea Leopardi Date: Tue, 20 Jun 2023 10:00:55 +0200 Subject: [PATCH 5/5] Fixes --- .github/workflows/ci.yml | 4 ++-- test/broadway_rabbitmq/producer_test.exs | 19 +------------------ 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 09a691a..0c4423b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-20.04 env: MIX_ENV: test - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} strategy: fail-fast: false matrix: @@ -21,7 +21,7 @@ jobs: otp: "21.3.8.17" - pair: elixir: "1.15.0" - otp: "26.0" + otp: "25.3" lint: lint coverage: coverage steps: diff --git a/test/broadway_rabbitmq/producer_test.exs b/test/broadway_rabbitmq/producer_test.exs index b243f35..12d62ee 100644 --- a/test/broadway_rabbitmq/producer_test.exs +++ b/test/broadway_rabbitmq/producer_test.exs @@ -697,15 +697,6 @@ defmodule BroadwayRabbitMQ.ProducerTest do describe "unsuccessful acknowledgement" do test "raise when an error is thrown acknowledging" do - broadway = - start_broadway( - client: FlakyRabbitmqClient, - on_success: :ack, - on_failure: :reject - ) - - deliver_messages(broadway, [:fail_to_ack]) - assert_raise(RuntimeError, fn -> Message.ack_immediately(%Message{ data: :fail_to_ack, @@ -722,15 +713,6 @@ defmodule BroadwayRabbitMQ.ProducerTest do end test "raise when an error is returned from amqp" do - broadway = - start_broadway( - client: FlakyRabbitmqClient, - on_success: :ack, - on_failure: :reject - ) - - deliver_messages(broadway, [:fail_to_ack]) - msgs = Enum.map(["failure one", "failure two"], fn data -> %Message{ @@ -759,6 +741,7 @@ defmodule BroadwayRabbitMQ.ProducerTest do end test "close connection on terminate" do + Process.flag(:trap_exit, true) broadway = start_broadway() assert_receive {:setup_channel, :ok, _channel} Process.exit(Process.whereis(broadway), :shutdown)