bunny 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog.md +46 -2
- data/Gemfile +1 -1
- data/lib/bunny/get_response.rb +83 -0
- data/lib/bunny/queue.rb +17 -20
- data/lib/bunny/session.rb +5 -1
- data/lib/bunny/transport.rb +3 -1
- data/lib/bunny/version.rb +1 -1
- data/spec/higher_level_api/integration/basic_get_spec.rb +13 -5
- data/spec/higher_level_api/integration/connection_recovery_spec.rb +48 -2
- data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +22 -0
- data/spec/stress/connection_open_close_spec.rb +0 -18
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 972f0f0055bbc831144da54e6805c4d5f5e2262c
         | 
| 4 | 
            +
              data.tar.gz: ad2f3539fb6946771238e6451b17d33cfdba692b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ad93a02f5623437589eb2027259de36a2269df8ab06d251b00e6b28b265f8f562068a1c7e473b2513eff18bdde77902b46a24c114a9a1c9dbe29426c93f67085
         | 
| 7 | 
            +
              data.tar.gz: da94e1d8349674cf2819678f2fb18a1fd911017fb7c99104d64d755c9d7f9622068db60a5502411c6442d04fe341372d09d31c6e5885c0cda18293ea04db3e81
         | 
    
        data/ChangeLog.md
    CHANGED
    
    | @@ -1,4 +1,25 @@ | |
| 1 | 
            -
            ## Changes between Bunny 1.2. | 
| 1 | 
            +
            ## Changes between Bunny 1.2.0 and 1.3.0
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            ### TLS Can Be Explicitly Disabled
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            TLS now can be explicitly disabled even when connecting (without TLS)
         | 
| 6 | 
            +
            to the default RabbitMQ TLS/amqps port (5671):
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            ``` ruby
         | 
| 9 | 
            +
            conn = Bunny.new(:port => 5671, :tls => false)
         | 
| 10 | 
            +
            ```
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            Contributed by Muhan Zou.
         | 
| 13 | 
            +
             | 
| 14 | 
            +
             | 
| 15 | 
            +
            ### Single Threaded Connections Raise Shutdown Exceptions
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            Single threaded Bunny connections will now raise exceptions
         | 
| 18 | 
            +
            that occur during shutdown as is (instead of trying to shut down
         | 
| 19 | 
            +
            I/O loop which only threaded ones have).
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            Contributed by Carl Hörberg.
         | 
| 22 | 
            +
             | 
| 2 23 |  | 
| 3 24 | 
             
            ### Synchronization Improvements for Session#close
         | 
| 4 25 |  | 
| @@ -6,7 +27,29 @@ | |
| 6 27 | 
             
            eliminating a few race condition scenarios with I/O reader thread.
         | 
| 7 28 |  | 
| 8 29 |  | 
| 9 | 
            -
             | 
| 30 | 
            +
            ### Bunny::Exchange.default Fix
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            `Bunny::Exchange.default` no longer raises an exception.
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            Note that it is a legacy compatibility method. Please use
         | 
| 35 | 
            +
            `Bunny::Channel#default_exchange` instead.
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            Contributed by Justin Litchfield.
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            GH issue [#211](https://github.com/ruby-amqp/bunny/pull/211).
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            ### Bunny::Queue#pop_as_hash Removed
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            `Bunny::Queue#pop_as_hash`, which was added to ease migration
         | 
| 44 | 
            +
            to Bunny 0.9, was removed.
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            ### Bunny::Queue#pop Wraps Metadata
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            `Bunny::Queue#pop` now wraps `basic.get-ok` and message properties
         | 
| 49 | 
            +
            into `Bunny::GetResponse` and `Bunny::MessageProperties`, just like
         | 
| 50 | 
            +
            `basic.consume` deliveries.
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            GH issue: [#212](https://github.com/ruby-amqp/bunny/issues/212).
         | 
| 10 53 |  | 
| 11 54 | 
             
            ### Better Synchronization for Publisher Confirms
         | 
| 12 55 |  | 
| @@ -23,6 +66,7 @@ on a recovered connection (in addition to the channels | |
| 23 66 | 
             
            it already had).
         | 
| 24 67 |  | 
| 25 68 |  | 
| 69 | 
            +
             | 
| 26 70 | 
             
            ## Changes between Bunny 1.1.0 and 1.2.0
         | 
| 27 71 |  | 
| 28 72 | 
             
            ### :key Supported in Bunny::Channel#queue_bind
         | 
    
        data/Gemfile
    CHANGED
    
    
| @@ -0,0 +1,83 @@ | |
| 1 | 
            +
            require "bunny/versioned_delivery_tag"
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Bunny
         | 
| 4 | 
            +
              # Wraps {AMQ::Protocol::Basic::GetOk} to
         | 
| 5 | 
            +
              # provide access to the delivery properties as immutable hash as
         | 
| 6 | 
            +
              # well as methods.
         | 
| 7 | 
            +
              class GetResponse
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                #
         | 
| 10 | 
            +
                # Behaviors
         | 
| 11 | 
            +
                #
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                include Enumerable
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                #
         | 
| 16 | 
            +
                # API
         | 
| 17 | 
            +
                #
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                # @return [Bunny::Channel] Channel this basic.get-ok response is on
         | 
| 20 | 
            +
                attr_reader :channel
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                # @private
         | 
| 23 | 
            +
                def initialize(get_ok, consumer, channel)
         | 
| 24 | 
            +
                  @get_ok = get_ok
         | 
| 25 | 
            +
                  @hash          = {
         | 
| 26 | 
            +
                    :delivery_tag => @get_ok.delivery_tag,
         | 
| 27 | 
            +
                    :redelivered  => @get_ok.redelivered,
         | 
| 28 | 
            +
                    :exchange     => @get_ok.exchange,
         | 
| 29 | 
            +
                    :routing_key  => @get_ok.routing_key,
         | 
| 30 | 
            +
                    :channel      => channel
         | 
| 31 | 
            +
                  }
         | 
| 32 | 
            +
                  @channel       = channel
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                # Iterates over the delivery properties
         | 
| 36 | 
            +
                # @see Enumerable#each
         | 
| 37 | 
            +
                def each(*args, &block)
         | 
| 38 | 
            +
                  @hash.each(*args, &block)
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                # Accesses delivery properties by key
         | 
| 42 | 
            +
                # @see Hash#[]
         | 
| 43 | 
            +
                def [](k)
         | 
| 44 | 
            +
                  @hash[k]
         | 
| 45 | 
            +
                end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                # @return [Hash] Hash representation of this delivery info
         | 
| 48 | 
            +
                def to_hash
         | 
| 49 | 
            +
                  @hash
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                # @private
         | 
| 53 | 
            +
                def to_s
         | 
| 54 | 
            +
                  to_hash.to_s
         | 
| 55 | 
            +
                end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                # @private
         | 
| 58 | 
            +
                def inspect
         | 
| 59 | 
            +
                  to_hash.inspect
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                # @return [String] Delivery identifier that is used to acknowledge, reject and nack deliveries
         | 
| 63 | 
            +
                def delivery_tag
         | 
| 64 | 
            +
                  @get_ok.delivery_tag
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                # @return [Boolean] true if this delivery is a redelivery (the message was requeued at least once)
         | 
| 68 | 
            +
                def redelivered
         | 
| 69 | 
            +
                  @get_ok.redelivered
         | 
| 70 | 
            +
                end
         | 
| 71 | 
            +
                alias redelivered? redelivered
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                # @return [String] Name of the exchange this message was published to
         | 
| 74 | 
            +
                def exchange
         | 
| 75 | 
            +
                  @get_ok.exchange
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                # @return [String] Routing key this message was published with
         | 
| 79 | 
            +
                def routing_key
         | 
| 80 | 
            +
                  @get_ok.routing_key
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
            end
         | 
    
        data/lib/bunny/queue.rb
    CHANGED
    
    | @@ -1,4 +1,5 @@ | |
| 1 1 | 
             
            require "bunny/compatibility"
         | 
| 2 | 
            +
            require "bunny/get_response"
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Bunny
         | 
| 4 5 | 
             
              # Represents AMQP 0.9.1 queue.
         | 
| @@ -229,33 +230,29 @@ module Bunny | |
| 229 230 | 
             
                #   puts "This is the message: " + payload + "\n\n"
         | 
| 230 231 | 
             
                #   conn.close
         | 
| 231 232 | 
             
                def pop(opts = {:ack => false}, &block)
         | 
| 232 | 
            -
                   | 
| 233 | 
            +
                  get_response, properties, content = @channel.basic_get(@name, opts)
         | 
| 233 234 |  | 
| 234 235 | 
             
                  if block
         | 
| 235 | 
            -
                     | 
| 236 | 
            +
                    if properties
         | 
| 237 | 
            +
                      di = GetResponse.new(get_response, properties, @channel)
         | 
| 238 | 
            +
                      mp = MessageProperties.new(properties)
         | 
| 239 | 
            +
             | 
| 240 | 
            +
                      block.call(di, mp, content)
         | 
| 241 | 
            +
                    else
         | 
| 242 | 
            +
                      block.call(nil, nil, nil)
         | 
| 243 | 
            +
                    end
         | 
| 236 244 | 
             
                  else
         | 
| 237 | 
            -
                     | 
| 245 | 
            +
                    if properties
         | 
| 246 | 
            +
                      di = GetResponse.new(get_response, properties, @channel)
         | 
| 247 | 
            +
                      mp = MessageProperties.new(properties)
         | 
| 248 | 
            +
                      [di, mp, content]
         | 
| 249 | 
            +
                    else
         | 
| 250 | 
            +
                      [nil, nil, nil]
         | 
| 251 | 
            +
                    end
         | 
| 238 252 | 
             
                  end
         | 
| 239 253 | 
             
                end
         | 
| 240 254 | 
             
                alias get pop
         | 
| 241 255 |  | 
| 242 | 
            -
                # Version of {Bunny::Queue#pop} that returns data in legacy format
         | 
| 243 | 
            -
                # (as a hash).
         | 
| 244 | 
            -
                # @return [Hash]
         | 
| 245 | 
            -
                # @deprecated
         | 
| 246 | 
            -
                def pop_as_hash(opts = {:ack => false}, &block)
         | 
| 247 | 
            -
                  delivery_info, properties, content = @channel.basic_get(@name, opts)
         | 
| 248 | 
            -
             | 
| 249 | 
            -
                  result = {:header => properties, :payload => content, :delivery_details => delivery_info}
         | 
| 250 | 
            -
             | 
| 251 | 
            -
                  if block
         | 
| 252 | 
            -
                    block.call(result)
         | 
| 253 | 
            -
                  else
         | 
| 254 | 
            -
                    result
         | 
| 255 | 
            -
                  end
         | 
| 256 | 
            -
                end
         | 
| 257 | 
            -
             | 
| 258 | 
            -
             | 
| 259 256 | 
             
                # Publishes a message to the queue via default exchange. Takes the same arguments
         | 
| 260 257 | 
             
                # as {Bunny::Exchange#publish}
         | 
| 261 258 | 
             
                #
         | 
    
        data/lib/bunny/session.rb
    CHANGED
    
    | @@ -707,7 +707,11 @@ module Bunny | |
| 707 707 | 
             
                  @continuations.push(method)
         | 
| 708 708 |  | 
| 709 709 | 
             
                  clean_up_on_shutdown
         | 
| 710 | 
            -
                   | 
| 710 | 
            +
                  if threaded?
         | 
| 711 | 
            +
                    @origin_thread.terminate_with(@last_connection_error)
         | 
| 712 | 
            +
                  else
         | 
| 713 | 
            +
                    raise @last_connection_error
         | 
| 714 | 
            +
                  end
         | 
| 711 715 | 
             
                end
         | 
| 712 716 |  | 
| 713 717 | 
             
                def clean_up_on_shutdown
         | 
    
        data/lib/bunny/transport.rb
    CHANGED
    
    | @@ -265,7 +265,9 @@ module Bunny | |
| 265 265 | 
             
                protected
         | 
| 266 266 |  | 
| 267 267 | 
             
                def tls_enabled?(opts)
         | 
| 268 | 
            -
                  opts[:tls]  | 
| 268 | 
            +
                  return opts[:tls] unless opts[:tls].nil?
         | 
| 269 | 
            +
                  return opts[:ssl] unless opts[:ssl].nil?
         | 
| 270 | 
            +
                  (opts[:port] == AMQ::Protocol::TLS_PORT) || false
         | 
| 269 271 | 
             
                end
         | 
| 270 272 |  | 
| 271 273 | 
             
                def tls_certificate_path_from(opts)
         | 
    
        data/lib/bunny/version.rb
    CHANGED
    
    
| @@ -19,11 +19,17 @@ describe Bunny::Queue, "#pop" do | |
| 19 19 | 
             
                  q  = ch.queue("", :exclusive => true)
         | 
| 20 20 | 
             
                  x  = ch.default_exchange
         | 
| 21 21 |  | 
| 22 | 
            -
                   | 
| 22 | 
            +
                  msg = "xyzzy"
         | 
| 23 | 
            +
                  x.publish(msg, :routing_key => q.name)
         | 
| 23 24 |  | 
| 24 25 | 
             
                  sleep(0.5)
         | 
| 25 | 
            -
                   | 
| 26 | 
            -
                   | 
| 26 | 
            +
                  get_ok, properties, content = q.pop
         | 
| 27 | 
            +
                  expect(get_ok).to be_kind_of(Bunny::GetResponse)
         | 
| 28 | 
            +
                  expect(properties).to be_kind_of(Bunny::MessageProperties)
         | 
| 29 | 
            +
                  expect(properties.content_type).to eq("application/octet-stream")
         | 
| 30 | 
            +
                  expect(get_ok.routing_key).to eq(q.name)
         | 
| 31 | 
            +
                  expect(get_ok.delivery_tag).to be_kind_of(Bunny::VersionedDeliveryTag)
         | 
| 32 | 
            +
                  expect(content).to eq(msg)
         | 
| 27 33 | 
             
                  q.message_count.should == 0
         | 
| 28 34 |  | 
| 29 35 | 
             
                  ch.close
         | 
| @@ -38,8 +44,10 @@ describe Bunny::Queue, "#pop" do | |
| 38 44 | 
             
                  q  = ch.queue("", :exclusive => true)
         | 
| 39 45 | 
             
                  q.purge
         | 
| 40 46 |  | 
| 41 | 
            -
                   | 
| 42 | 
            -
                   | 
| 47 | 
            +
                  get_empty, properties, content = q.pop
         | 
| 48 | 
            +
                  expect(get_empty).to eq(nil)
         | 
| 49 | 
            +
                  expect(properties).to eq(nil)
         | 
| 50 | 
            +
                  expect(content).to eq(nil)
         | 
| 43 51 | 
             
                  q.message_count.should == 0
         | 
| 44 52 |  | 
| 45 53 | 
             
                  ch.close
         | 
| @@ -13,7 +13,7 @@ unless ENV["CI"] | |
| 13 13 | 
             
                end
         | 
| 14 14 |  | 
| 15 15 | 
             
                def wait_for_recovery
         | 
| 16 | 
            -
                  sleep  | 
| 16 | 
            +
                  sleep 1.5
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 19 | 
             
                def with_open(c = Bunny.new(:network_recovery_interval => 0.2, :recover_from_connection_close => true), &block)
         | 
| @@ -209,7 +209,7 @@ unless ENV["CI"] | |
| 209 209 | 
             
                  end
         | 
| 210 210 | 
             
                end
         | 
| 211 211 |  | 
| 212 | 
            -
                it "recovers  | 
| 212 | 
            +
                it "recovers consumers" do
         | 
| 213 213 | 
             
                  with_open do |c|
         | 
| 214 214 | 
             
                    delivered = false
         | 
| 215 215 |  | 
| @@ -230,5 +230,51 @@ unless ENV["CI"] | |
| 230 230 | 
             
                    expect(delivered).to be_true
         | 
| 231 231 | 
             
                  end
         | 
| 232 232 | 
             
                end
         | 
| 233 | 
            +
             | 
| 234 | 
            +
                it "recovers all consumers" do
         | 
| 235 | 
            +
                  n = 1024
         | 
| 236 | 
            +
             | 
| 237 | 
            +
                  with_open do |c|
         | 
| 238 | 
            +
                    ch = c.create_channel
         | 
| 239 | 
            +
                    q  = ch.queue("", :exclusive => true)
         | 
| 240 | 
            +
                    n.times do
         | 
| 241 | 
            +
                      q.subscribe do |_, _, _|
         | 
| 242 | 
            +
                        delivered = true
         | 
| 243 | 
            +
                      end
         | 
| 244 | 
            +
                    end
         | 
| 245 | 
            +
                    close_all_connections!
         | 
| 246 | 
            +
                    sleep 0.1
         | 
| 247 | 
            +
                    c.should_not be_open
         | 
| 248 | 
            +
             | 
| 249 | 
            +
                    wait_for_recovery
         | 
| 250 | 
            +
                    ch.should be_open
         | 
| 251 | 
            +
             | 
| 252 | 
            +
                    q.consumer_count.should == n
         | 
| 253 | 
            +
                  end
         | 
| 254 | 
            +
                end
         | 
| 255 | 
            +
             | 
| 256 | 
            +
                it "recovers all queues" do
         | 
| 257 | 
            +
                  n = 256
         | 
| 258 | 
            +
             | 
| 259 | 
            +
                  qs = []
         | 
| 260 | 
            +
             | 
| 261 | 
            +
                  with_open do |c|
         | 
| 262 | 
            +
                    ch = c.create_channel
         | 
| 263 | 
            +
             | 
| 264 | 
            +
                    n.times do
         | 
| 265 | 
            +
                      qs << ch.queue("", :exclusive => true)
         | 
| 266 | 
            +
                    end
         | 
| 267 | 
            +
                    close_all_connections!
         | 
| 268 | 
            +
                    sleep 0.1
         | 
| 269 | 
            +
                    c.should_not be_open
         | 
| 270 | 
            +
             | 
| 271 | 
            +
                    wait_for_recovery
         | 
| 272 | 
            +
                    ch.should be_open
         | 
| 273 | 
            +
             | 
| 274 | 
            +
                    qs.each do |q|
         | 
| 275 | 
            +
                      ch.queue_declare(q.name, :passive => true)
         | 
| 276 | 
            +
                    end
         | 
| 277 | 
            +
                  end
         | 
| 278 | 
            +
                end
         | 
| 233 279 | 
             
              end
         | 
| 234 280 | 
             
            end
         | 
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # -*- coding: utf-8 -*-
         | 
| 1 2 | 
             
            require "spec_helper"
         | 
| 2 3 |  | 
| 3 4 | 
             
            unless ENV["CI"]
         | 
| @@ -37,6 +38,27 @@ unless ENV["CI"] | |
| 37 38 | 
             
                end
         | 
| 38 39 |  | 
| 39 40 |  | 
| 41 | 
            +
                context "with payload of several MBs of non-ASCII characters" do
         | 
| 42 | 
            +
                  it "successfully frames the message" do
         | 
| 43 | 
            +
                    ch = connection.create_channel
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    q  = ch.queue("", :exclusive => true)
         | 
| 46 | 
            +
                    x  = ch.default_exchange
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                    as = "кириллца, йо" * (1024 * 1024)
         | 
| 49 | 
            +
                    x.publish(as, :routing_key => q.name, :persistent => true)
         | 
| 50 | 
            +
             | 
| 51 | 
            +
                    sleep(1)
         | 
| 52 | 
            +
                    q.message_count.should == 1
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    _, _, payload      = q.pop
         | 
| 55 | 
            +
                    payload.bytesize.should == as.bytesize
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                    ch.close
         | 
| 58 | 
            +
                  end
         | 
| 59 | 
            +
                end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
             | 
| 40 62 |  | 
| 41 63 | 
             
                context "with empty message body" do
         | 
| 42 64 | 
             
                  it "successfully publishes the message" do
         | 
| @@ -23,24 +23,6 @@ unless defined?(JRUBY_VERSION) && !ENV["FORCE_JRUBY_RUN"] | |
| 23 23 | 
             
                  end
         | 
| 24 24 | 
             
                end
         | 
| 25 25 |  | 
| 26 | 
            -
                n.times do |i|
         | 
| 27 | 
            -
                  it "can be closed in the Hello, World example (take #{i})" do
         | 
| 28 | 
            -
                    c  = Bunny.new(:automatically_recover => false)
         | 
| 29 | 
            -
                    c.start
         | 
| 30 | 
            -
                    ch = c.create_channel
         | 
| 31 | 
            -
                    x  = ch.default_exchange
         | 
| 32 | 
            -
                    q  = ch.queue("", :exclusive => true)
         | 
| 33 | 
            -
                    q.subscribe do |delivery_info, properties, payload|
         | 
| 34 | 
            -
                      # no-op
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
                    20.times { x.publish("hello", :routing_key => q.name) }
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                    c.should be_connected
         | 
| 39 | 
            -
                    c.stop
         | 
| 40 | 
            -
                    c.should be_closed
         | 
| 41 | 
            -
                  end
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
             | 
| 44 26 | 
             
                n.times do |i|
         | 
| 45 27 | 
             
                  it "can be closed (automatic recovery enabled, take #{i})" do
         | 
| 46 28 | 
             
                    c  = Bunny.new(:automatically_recover => true)
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: bunny
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Chris Duncan
         | 
| @@ -12,7 +12,7 @@ authors: | |
| 12 12 | 
             
            autorequire: 
         | 
| 13 13 | 
             
            bindir: bin
         | 
| 14 14 | 
             
            cert_chain: []
         | 
| 15 | 
            -
            date: 2014- | 
| 15 | 
            +
            date: 2014-06-18 00:00:00.000000000 Z
         | 
| 16 16 | 
             
            dependencies:
         | 
| 17 17 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 18 18 | 
             
              name: amq-protocol
         | 
| @@ -118,6 +118,7 @@ files: | |
| 118 118 | 
             
            - lib/bunny/exceptions.rb
         | 
| 119 119 | 
             
            - lib/bunny/exchange.rb
         | 
| 120 120 | 
             
            - lib/bunny/framing.rb
         | 
| 121 | 
            +
            - lib/bunny/get_response.rb
         | 
| 121 122 | 
             
            - lib/bunny/heartbeat_sender.rb
         | 
| 122 123 | 
             
            - lib/bunny/jruby/socket.rb
         | 
| 123 124 | 
             
            - lib/bunny/jruby/ssl_socket.rb
         | 
| @@ -305,4 +306,3 @@ test_files: | |
| 305 306 | 
             
            - spec/unit/concurrent/synchronized_sorted_set_spec.rb
         | 
| 306 307 | 
             
            - spec/unit/system_timer_spec.rb
         | 
| 307 308 | 
             
            - spec/unit/version_delivery_tag_spec.rb
         | 
| 308 | 
            -
            has_rdoc: true
         |