Sha256: e6cab6e17b9982133d7bca8de411e7e17f0f0107f7e2c6461fede0710b36ffcd

Contents?: true

Size: 1.49 KB

Versions: 31

Compression:

Stored size: 1.49 KB

Contents

require_relative '../../lib/bunny/channel'
require_relative '../../lib/bunny/exchange'

module Bunny
  describe Exchange do
    context "recovery" do
      it "recovers exchange bindings, unless already unbound" do
        ch = instance_double(Bunny::Channel,
                             exchange_declare: nil,
                             register_exchange: nil)
        src1 = Exchange.new(ch, "direct", "src1")
        src2 = Exchange.new(ch, "direct", "src2")
        src3 = Exchange.new(ch, "direct", "src3")
        dst = Exchange.new(ch, "direct", "dst")

        original_binds_count = 5
        expected_rebinds_count = 3
        expected_total_binds = original_binds_count + expected_rebinds_count
        allow(ch).to receive(:exchange_bind).exactly(expected_total_binds).times

        dst.bind(src1, routing_key: "abc")
        dst.bind(src2, routing_key: "def")
        dst.bind(src2, routing_key: "ghi")
        dst.bind(src3, routing_key: "jkl")
        dst.bind(src3, routing_key: "jkl", arguments: {"key" => "value"})

        allow(ch).to receive(:exchange_unbind).twice
        dst.unbind(src2, routing_key: "def")
        dst.unbind(src3, routing_key: "jkl", arguments: {"key" => "value"})

        expect(ch).to receive(:exchange_bind).with(src1, dst, routing_key: "abc")
        expect(ch).to receive(:exchange_bind).with(src2, dst, routing_key: "ghi")
        expect(ch).to receive(:exchange_bind).with(src3, dst, routing_key: "jkl")

        dst.recover_from_network_failure
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
bunny-2.14.4 spec/unit/exchange_recovery_spec.rb
bunny-2.14.3 spec/unit/exchange_recovery_spec.rb
bunny-2.14.2 spec/unit/exchange_recovery_spec.rb
bunny-2.14.1 spec/unit/exchange_recovery_spec.rb
bunny-2.13.0 spec/unit/exchange_recovery_spec.rb
bunny-2.12.1 spec/unit/exchange_recovery_spec.rb
bunny-2.12.0 spec/unit/exchange_recovery_spec.rb
bunny-2.12.0.rc1 spec/unit/exchange_recovery_spec.rb
bunny-2.11.0 spec/unit/exchange_recovery_spec.rb
bunny-2.11.0.pre1 spec/unit/exchange_recovery_spec.rb
bunny-2.10.0 spec/unit/exchange_recovery_spec.rb
bunny-2.9.2 spec/unit/exchange_recovery_spec.rb
bunny-2.9.1 spec/unit/exchange_recovery_spec.rb
bunny-2.6.7 spec/unit/exchange_recovery_spec.rb
bunny-2.7.4 spec/unit/exchange_recovery_spec.rb
bunny-2.8.1 spec/unit/exchange_recovery_spec.rb
bunny-2.9.0 spec/unit/exchange_recovery_spec.rb
bunny-2.7.3 spec/unit/exchange_recovery_spec.rb
bunny-2.8.0 spec/unit/exchange_recovery_spec.rb
bunny-2.7.2 spec/unit/exchange_recovery_spec.rb