Sha256: c8ad84a0692bba89d0d01b913b12177ae3152573da8a0351ad8f13fb7cdb331b

Contents?: true

Size: 1.85 KB

Versions: 55

Compression:

Stored size: 1.85 KB

Contents

require "spec_helper"

describe "A message that is proxied by multiple intermediate consumers" do
  let(:c1) do
    c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
    c.start
    c
  end

  let(:c2) do
    c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
    c.start
    c
  end

  let(:c3) do
    c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
    c.start
    c
  end

  let(:c4) do
    c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
    c.start
    c
  end

  let(:c5) do
    c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
    c.start
    c
  end

  after :each do
    [c1, c2, c3, c4, c5].each do |c|
      c.close if c.open?
    end
  end

  # message flow is as follows:
  #
  # x => q4 => q3 => q2 => q1 => xs (results)
  it "reaches its final destination" do
    n   = 10000
    xs  = []

    ch1 = c1.create_channel
    q1  = ch1.queue("", :exclusive => true)
    q1.subscribe do |_, _, payload|
      xs << payload
    end

    ch2 = c2.create_channel
    q2  = ch2.queue("", :exclusive => true)
    q2.subscribe do |_, _, payload|
      q1.publish(payload)
    end

    ch3 = c3.create_channel
    q3  = ch2.queue("", :exclusive => true)
    q3.subscribe do |_, _, payload|
      q2.publish(payload)
    end

    ch4 = c4.create_channel
    q4  = ch2.queue("", :exclusive => true)
    q4.subscribe do |_, _, payload|
      q3.publish(payload)
    end

    ch5 = c5.create_channel
    x   = ch5.default_exchange

    n.times do |i|
      x.publish("msg #{i}", :routing_key => q4.name)
    end

    t = n / 1000 * 3.0
    puts "About to sleep for #{t} seconds..."
    sleep(t)

    xs.size.should == n
    xs.last.should == "msg #{n - 1}"
  end
end

Version data entries

55 entries across 55 versions & 1 rubygems

Version Path
bunny-1.7.1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.7.0 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.6.3 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.6.2 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.6.1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.6.0 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.5.1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.6.0.rc2 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.6.0.rc1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.6.0.pre1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.5.0 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.5.0.pre2 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.5.0.pre1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.4.1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.4.0 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.3.1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.3.0 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.2.2 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.2.1 spec/higher_level_api/integration/merry_go_round_spec.rb
bunny-1.2.0 spec/higher_level_api/integration/merry_go_round_spec.rb