Sha256: 0518d0f0020001426247eb6b5bd30f62e025fcd0281d458253e06c4f59573e39

Contents?: true

Size: 1.56 KB

Versions: 13

Compression:

Stored size: 1.56 KB

Contents

require 'spec_helper'
require 'hamster/experimental/mutable_set'

describe 'Tapping into with group identifier' do
  let(:deliverer) { Freddy.build(logger, config) }
  let(:responder1) { Freddy.build(logger, config) }
  let(:responder2) { Freddy.build(logger, config) }

  let(:destination)  { random_destination }

  after { [deliverer, responder1, responder2].each(&:close) }

  it 'raises an exception if option :durable is provided without group' do
    expect { responder1.tap_into(destination, durable: true) }
      .to raise_error(RuntimeError)
  end

  it 'receives a message once' do
    msg_counter = Hamster::MutableSet[]

    group_id = arbitrary_id
    responder1.tap_into(destination, group: group_id) { |_msg| msg_counter << 'r1' }
    responder2.tap_into(destination, group: group_id) { |_msg| msg_counter << 'r2' }
    deliverer.deliver(destination, {})

    default_sleep
    expect(msg_counter.count).to eq(1)
  end

  it 'can requeue message on exception' do
    counter = 0

    responder1.tap_into(destination, group: arbitrary_id, on_exception: :requeue) do
      counter += 1
      raise 'error' if counter == 1
    end

    deliverer.deliver(destination, {})

    wait_for { counter == 2 }
    expect(counter).to eq(2)
  end

  it 'taps into multiple topics' do
    destination2 = random_destination
    counter = 0

    responder1.tap_into([destination, destination2], group: arbitrary_id) do
      counter += 1
    end

    deliverer.deliver(destination, {})
    deliverer.deliver(destination2, {})

    wait_for { counter == 2 }
    expect(counter).to eq(2)
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
freddy-2.5.1 spec/integration/tap_into_with_group_spec.rb
freddy-2.5.0 spec/integration/tap_into_with_group_spec.rb
freddy-2.5.0.pre.rc.1 spec/integration/tap_into_with_group_spec.rb
freddy-2.4.0 spec/integration/tap_into_with_group_spec.rb
freddy-2.3.0 spec/integration/tap_into_with_group_spec.rb
freddy-2.2.4 spec/integration/tap_into_with_group_spec.rb
freddy-2.2.3 spec/integration/tap_into_with_group_spec.rb
freddy-2.2.2 spec/integration/tap_into_with_group_spec.rb
freddy-2.2.1 spec/integration/tap_into_with_group_spec.rb
freddy-2.2.0 spec/integration/tap_into_with_group_spec.rb
freddy-2.1.0 spec/integration/tap_into_with_group_spec.rb
freddy-2.0.0 spec/integration/tap_into_with_group_spec.rb
freddy-1.7.0 spec/integration/tap_into_with_group_spec.rb