bunny 1.7.1 → 2.0.0.rc1
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/.travis.yml +1 -1
- data/CONTRIBUTING.md +14 -0
- data/ChangeLog.md +21 -6
- data/Gemfile +1 -1
- data/LICENSE +1 -1
- data/README.md +22 -23
- data/bunny.gemspec +1 -1
- data/lib/bunny/channel.rb +12 -0
- data/lib/bunny/concurrent/continuation_queue.rb +30 -13
- data/lib/bunny/exchange.rb +0 -5
- data/lib/bunny/jruby/socket.rb +1 -2
- data/lib/bunny/queue.rb +9 -0
- data/lib/bunny/session.rb +7 -6
- data/lib/bunny/version.rb +1 -1
- data/spec/higher_level_api/integration/basic_ack_spec.rb +9 -9
- data/spec/higher_level_api/integration/basic_cancel_spec.rb +4 -4
- data/spec/higher_level_api/integration/basic_consume_spec.rb +22 -22
- data/spec/higher_level_api/integration/basic_consume_with_objects_spec.rb +1 -1
- data/spec/higher_level_api/integration/basic_get_spec.rb +2 -2
- data/spec/higher_level_api/integration/basic_nack_spec.rb +6 -6
- data/spec/higher_level_api/integration/basic_publish_spec.rb +14 -14
- data/spec/higher_level_api/integration/basic_qos_spec.rb +11 -2
- data/spec/higher_level_api/integration/basic_recover_spec.rb +2 -2
- data/spec/higher_level_api/integration/basic_reject_spec.rb +6 -6
- data/spec/higher_level_api/integration/basic_return_spec.rb +1 -1
- data/spec/higher_level_api/integration/channel_close_spec.rb +2 -2
- data/spec/higher_level_api/integration/channel_open_spec.rb +11 -11
- data/spec/higher_level_api/integration/connection_recovery_spec.rb +52 -52
- data/spec/higher_level_api/integration/connection_spec.rb +83 -83
- data/spec/higher_level_api/integration/connection_stop_spec.rb +11 -11
- data/spec/higher_level_api/integration/consistent_hash_exchange_spec.rb +2 -2
- data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +3 -3
- data/spec/higher_level_api/integration/dead_lettering_spec.rb +6 -6
- data/spec/higher_level_api/integration/exchange_bind_spec.rb +1 -1
- data/spec/higher_level_api/integration/exchange_declare_spec.rb +20 -20
- data/spec/higher_level_api/integration/exchange_delete_spec.rb +11 -11
- data/spec/higher_level_api/integration/exchange_unbind_spec.rb +2 -2
- data/spec/higher_level_api/integration/merry_go_round_spec.rb +2 -2
- data/spec/higher_level_api/integration/message_properties_access_spec.rb +27 -27
- data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +1 -1
- data/spec/higher_level_api/integration/publisher_confirms_spec.rb +19 -19
- data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +9 -9
- data/spec/higher_level_api/integration/queue_bind_spec.rb +13 -13
- data/spec/higher_level_api/integration/queue_declare_spec.rb +23 -23
- data/spec/higher_level_api/integration/queue_delete_spec.rb +1 -1
- data/spec/higher_level_api/integration/queue_purge_spec.rb +2 -2
- data/spec/higher_level_api/integration/queue_unbind_spec.rb +2 -2
- data/spec/higher_level_api/integration/read_only_consumer_spec.rb +3 -3
- data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +4 -4
- data/spec/higher_level_api/integration/tls_connection_spec.rb +5 -5
- data/spec/higher_level_api/integration/with_channel_spec.rb +1 -1
- data/spec/issues/issue100_spec.rb +9 -10
- data/spec/issues/issue141_spec.rb +11 -12
- data/spec/issues/issue224_spec.rb +2 -2
- data/spec/issues/issue78_spec.rb +14 -18
- data/spec/issues/issue83_spec.rb +5 -6
- data/spec/issues/issue97_spec.rb +25 -26
- data/spec/lower_level_api/integration/basic_cancel_spec.rb +15 -16
- data/spec/lower_level_api/integration/basic_consume_spec.rb +19 -20
- data/spec/stress/channel_open_stress_spec.rb +1 -1
- data/spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb +6 -7
- data/spec/stress/concurrent_consumers_stress_spec.rb +6 -7
- data/spec/stress/concurrent_publishers_stress_spec.rb +6 -7
- data/spec/stress/connection_open_close_spec.rb +6 -6
- data/spec/stress/long_running_consumer_spec.rb +6 -7
- data/spec/unit/bunny_spec.rb +5 -5
- data/spec/unit/concurrent/atomic_fixnum_spec.rb +6 -6
- data/spec/unit/concurrent/condition_spec.rb +3 -3
- data/spec/unit/concurrent/linked_continuation_queue_spec.rb +2 -2
- data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +16 -16
- data/spec/unit/system_timer_spec.rb +2 -2
- data/spec/unit/version_delivery_tag_spec.rb +3 -3
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7035cf94d8295c49d7e57deb2143be7ed1b6a465
|
4
|
+
data.tar.gz: 0387323f9a4029809fbe05c5160731c2a9839ccc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a4ab1f554f8445a4d7a283ba182a2c6b8244c5371295cd81478c24da0daaf00a71eeb477dfc1bd14dcb22f9b5ef28de938672edc8907a17fae3d0ac07c18b1c
|
7
|
+
data.tar.gz: 68cc7911d99ee0161f3c09383d06f88ba482c4a0ab3e04f21049cdd94bbdac46e108598dde44ebff97a3671994a54679602a44727001363f2770ca8935e922be
|
data/.travis.yml
CHANGED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
## Pre-requisites
|
2
|
+
|
3
|
+
The project uses Bundler for dependency management and requires RabbitMQ `3.4+` to be running
|
4
|
+
locally. Prior to running the tests, configure the RabbitMQ permissions
|
5
|
+
by running `./bin/ci/before_script`. Make
|
6
|
+
sure you have those two installed and then run tests:
|
7
|
+
|
8
|
+
bundle install
|
9
|
+
bundle exec rspec -cfd spec/
|
10
|
+
|
11
|
+
## Pull Requests
|
12
|
+
|
13
|
+
Then create a branch and make your changes on it. Once you are done with your changes and all
|
14
|
+
tests pass, write a [good, detailed commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html) submit a pull request on GitHub.
|
data/ChangeLog.md
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
## Changes between Bunny 1.7.0 and 1.
|
1
|
+
## Changes between Bunny 1.7.0 and 1.8.0
|
2
2
|
|
3
|
-
###
|
3
|
+
### Reduced Timeout Use
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
`Bunny::ContinuationQueue#poll` no longer relies on Ruby's `Timeout` which has
|
6
|
+
numerous issues, including starting a new "interruptor" thread per operation,
|
7
|
+
which is far from efficient.
|
7
8
|
|
8
|
-
|
9
|
+
Contributed by Joe Eli McIlvain.
|
9
10
|
|
10
11
|
### Logger Output Remains Consistent
|
11
12
|
|
@@ -15,6 +16,13 @@ Behaviour remains unchainged when the internally initialized logger is used.
|
|
15
16
|
|
16
17
|
Contributed by Justin Carter.
|
17
18
|
|
19
|
+
### prefetch_count is Limited to 65535
|
20
|
+
|
21
|
+
Since `basic.qos`'s `prefetch_count` field is of type `short` in the protocol,
|
22
|
+
Bunny must enforce its maximum allowed value to `2^16 - 1` to avoid
|
23
|
+
confusing issues due to overflow.
|
24
|
+
|
25
|
+
|
18
26
|
|
19
27
|
## Changes between Bunny 1.6.0 and 1.7.0
|
20
28
|
|
@@ -136,6 +144,13 @@ Connection shuffling and robustness improvements.
|
|
136
144
|
|
137
145
|
Contributed by Andre Foeken (Nedap).
|
138
146
|
|
147
|
+
### Default Channel Removed
|
148
|
+
|
149
|
+
Breaks compatibility with Bunny 0.8.x.
|
150
|
+
|
151
|
+
`Bunny:Session#default_channel` was removed. Please open channels explicitly now,
|
152
|
+
as all the examples in the docs do.
|
153
|
+
|
139
154
|
|
140
155
|
## Changes between Bunny 1.3.0 and 1.4.0
|
141
156
|
|
@@ -549,7 +564,7 @@ Bunny now will use the following TLS/SSL CA's paths on Linux by default:
|
|
549
564
|
and will log a warning if no CA files are available via default paths
|
550
565
|
or `:tls_ca_certificates`.
|
551
566
|
|
552
|
-
Contributed by Carl
|
567
|
+
Contributed by Carl Hörberg.
|
553
568
|
|
554
569
|
### Consumers Can Be Re-Registered From Bunny::Consumer#handle_cancellation
|
555
570
|
|
data/Gemfile
CHANGED
data/LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright (c) 2009 –
|
1
|
+
Copyright (c) 2009 – 2015 Chris Duncan, Jakub Stastny aka botanicus,
|
2
2
|
Michael S. Klishin, Eric Lindvall, Stefan Kaes and contributors.
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining
|
data/README.md
CHANGED
@@ -12,8 +12,8 @@ have any heavyweight dependencies.
|
|
12
12
|
|
13
13
|
## What is Bunny Good For?
|
14
14
|
|
15
|
-
One can use
|
16
|
-
applications (both Ruby and not). Complexity and size may vary from
|
15
|
+
One can use Bunny to make Ruby applications interoperate with other
|
16
|
+
applications (both built in Ruby and not). Complexity and size may vary from
|
17
17
|
simple work queues to complex multi-stage data processing workflows that involve
|
18
18
|
many applications built with all kinds of technologies.
|
19
19
|
|
@@ -46,9 +46,9 @@ Specific examples:
|
|
46
46
|
|
47
47
|
## Supported Ruby Versions
|
48
48
|
|
49
|
-
Bunny
|
49
|
+
Modern Bunny versions support
|
50
50
|
|
51
|
-
* CRuby 2.1,
|
51
|
+
* CRuby 2.2, 2.1, 2.0, 1.9.3, and 1.8.7
|
52
52
|
* Rubinius 2.0+
|
53
53
|
|
54
54
|
Bunny works sufficiently well on JRuby but there are known
|
@@ -59,7 +59,7 @@ use [March Hare](http://rubymarchhare.info).
|
|
59
59
|
## Supported RabbitMQ Versions
|
60
60
|
|
61
61
|
Bunny `1.5.0` (including previews) and later versions only support RabbitMQ `3.3+`.
|
62
|
-
Bunny `1.4.x` and supports RabbitMQ 2.x and 3.x.
|
62
|
+
Bunny `1.4.x` and earlier supports RabbitMQ 2.x and 3.x.
|
63
63
|
|
64
64
|
|
65
65
|
## Project Maturity
|
@@ -95,7 +95,7 @@ gem install bunny
|
|
95
95
|
To use Bunny in a project managed with Bundler:
|
96
96
|
|
97
97
|
``` ruby
|
98
|
-
gem "bunny", "
|
98
|
+
gem "bunny", ">= 1.7.0"
|
99
99
|
```
|
100
100
|
|
101
101
|
|
@@ -177,7 +177,6 @@ To subscribe for announcements of releases, important changes and so on, please
|
|
177
177
|
More detailed announcements can be found in the blogs
|
178
178
|
|
179
179
|
* [RabbitMQ Ruby clients blog](http://blog.rubyrabbitmq.info)
|
180
|
-
* [Bunny Blog](http://bunnyamqp.wordpress.com)
|
181
180
|
|
182
181
|
|
183
182
|
### Reporting Issues
|
@@ -191,32 +190,36 @@ try to explain what behavior you expected and why. Bonus points for
|
|
191
190
|
contributing failing test cases.
|
192
191
|
|
193
192
|
|
194
|
-
### Running the
|
193
|
+
### Running the Specs
|
195
194
|
|
196
195
|
The cleanest way to get the specs running is by starting a clean rabbitmq server
|
197
196
|
node on your machine specifically for the bunny specs.
|
198
197
|
|
199
|
-
Make sure you have a recent version of RabbitMQ (> 3.
|
198
|
+
Make sure you have a recent version of RabbitMQ (> 3.4) and run the following command
|
200
199
|
from the base directory of the gem:
|
201
200
|
|
202
|
-
|
201
|
+
```
|
202
|
+
RABBITMQ_NODENAME=bunny RABBITMQ_CONFIG_FILE=./spec/config/rabbitmq RABBITMQ_ENABLED_PLUGINS_FILE=./spec/config/enabled_plugins rabbitmq-server
|
203
|
+
```
|
203
204
|
|
204
|
-
|
205
|
+
The specs use the RabbitMQ management plugin and require a TLS port to be available. The config files in the spec/config directory enable these.
|
205
206
|
|
206
207
|
Next up you'll need to prepare your node for the specs (Only once):
|
207
208
|
|
208
|
-
|
209
|
+
```
|
210
|
+
RABBITMQ_NODENAME=bunny ./bin/ci/before_build
|
211
|
+
```
|
209
212
|
|
210
213
|
And then run the specs:
|
211
214
|
|
212
|
-
|
215
|
+
```
|
216
|
+
RABBITMQ_NODENAME=bunny rspec
|
217
|
+
```
|
213
218
|
|
214
219
|
## Other Ruby RabbitMQ Clients
|
215
220
|
|
216
|
-
|
217
|
-
|
218
|
-
gem](http://rubyamqp.info). Both are mature libraries and require
|
219
|
-
RabbitMQ 2.x or 3.x.
|
221
|
+
The other widely used Ruby RabbitMQ client is [March Hare](http://rubymarchhare.info) (JRuby-only).
|
222
|
+
It's a mature library that require RabbitMQ 3.3.x or later.
|
220
223
|
|
221
224
|
|
222
225
|
## Contributing
|
@@ -227,13 +230,13 @@ First, clone the repository and run
|
|
227
230
|
|
228
231
|
then set up RabbitMQ vhosts with
|
229
232
|
|
230
|
-
./bin/ci/before_build
|
233
|
+
./bin/ci/before_build
|
231
234
|
|
232
235
|
(if needed, set `RABBITMQCTL` env variable to point to `rabbitmqctl` you want to use)
|
233
236
|
|
234
237
|
and then run tests with
|
235
238
|
|
236
|
-
CI=true ./bin/rspec -
|
239
|
+
CI=true ./bin/rspec -cf documentation spec
|
237
240
|
|
238
241
|
After that create a branch and make your changes on it. Once you are done with your changes and all tests pass, submit a pull request
|
239
242
|
on GitHub.
|
@@ -242,7 +245,3 @@ on GitHub.
|
|
242
245
|
## License
|
243
246
|
|
244
247
|
Released under the MIT license.
|
245
|
-
|
246
|
-
|
247
|
-
[](https://bitdeli.com/free "Bitdeli Badge")
|
248
|
-
|
data/bunny.gemspec
CHANGED
data/lib/bunny/channel.rb
CHANGED
@@ -246,6 +246,14 @@ module Bunny
|
|
246
246
|
@status == :closed
|
247
247
|
end
|
248
248
|
|
249
|
+
def to_s
|
250
|
+
oid = ("0x%x" % (self.object_id << 1))
|
251
|
+
"<#{self.class.name}:#{oid} number=#{@channel.id} @open=#{open?} connection=#{@connection.to_s}>"
|
252
|
+
end
|
253
|
+
|
254
|
+
def inspect
|
255
|
+
to_s
|
256
|
+
end
|
249
257
|
|
250
258
|
#
|
251
259
|
# @group Backwards compatibility with 0.8.0
|
@@ -615,6 +623,9 @@ module Bunny
|
|
615
623
|
@last_basic_get_response
|
616
624
|
end
|
617
625
|
|
626
|
+
# prefetch_count is of type short in the protocol. MK.
|
627
|
+
MAX_PREFETCH_COUNT = (2 ** 16) - 1
|
628
|
+
|
618
629
|
# Controls message delivery rate using basic.qos AMQP 0.9.1 method.
|
619
630
|
#
|
620
631
|
# @param [Integer] prefetch_count How many messages can consumers on this channel be given at a time
|
@@ -626,6 +637,7 @@ module Bunny
|
|
626
637
|
# @api public
|
627
638
|
def basic_qos(count, global = false)
|
628
639
|
raise ArgumentError.new("prefetch count must be a positive integer, given: #{prefetch_count}") if count < 0
|
640
|
+
raise ArgumentError.new("prefetch count must be no greater than #{MAX_PREFETCH_COUNT}, given: #{prefetch_count}") if count > MAX_PREFETCH_COUNT
|
629
641
|
raise_if_no_longer_open!
|
630
642
|
|
631
643
|
@connection.send_frame(AMQ::Protocol::Basic::Qos.encode(@id, 0, count, global))
|
@@ -6,36 +6,53 @@ module Bunny
|
|
6
6
|
#
|
7
7
|
# @private
|
8
8
|
class ContinuationQueue
|
9
|
-
def initialize
|
10
|
-
@q
|
9
|
+
def initialize
|
10
|
+
@q = []
|
11
|
+
@lock = ::Mutex.new
|
12
|
+
@cond = ::ConditionVariable.new
|
11
13
|
end
|
12
14
|
|
13
|
-
def push(
|
14
|
-
@
|
15
|
+
def push(item)
|
16
|
+
@lock.synchronize do
|
17
|
+
@q.push(item)
|
18
|
+
@cond.signal
|
19
|
+
end
|
15
20
|
end
|
16
21
|
alias << push
|
17
22
|
|
18
23
|
def pop
|
19
|
-
|
24
|
+
poll
|
20
25
|
end
|
21
26
|
|
22
27
|
def poll(timeout_in_ms = nil)
|
23
|
-
|
24
|
-
|
25
|
-
|
28
|
+
timeout = timeout_in_ms ? timeout_in_ms / 1000.0 : nil
|
29
|
+
|
30
|
+
@lock.synchronize do
|
31
|
+
if @q.empty?
|
32
|
+
@cond.wait(@lock, timeout)
|
33
|
+
raise ::Timeout::Error if @q.empty?
|
26
34
|
end
|
27
|
-
|
28
|
-
@
|
35
|
+
item = @q.shift
|
36
|
+
@cond.signal
|
37
|
+
|
38
|
+
item
|
29
39
|
end
|
30
40
|
end
|
31
41
|
|
32
42
|
def clear
|
33
|
-
@
|
43
|
+
@lock.synchronize do
|
44
|
+
@q.clear
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def empty?
|
49
|
+
@q.empty?
|
34
50
|
end
|
35
51
|
|
36
|
-
def
|
37
|
-
@q.
|
52
|
+
def size
|
53
|
+
@q.size
|
38
54
|
end
|
55
|
+
alias length size
|
39
56
|
end
|
40
57
|
end
|
41
58
|
end
|
data/lib/bunny/exchange.rb
CHANGED
@@ -245,11 +245,6 @@ module Bunny
|
|
245
245
|
@channel.exchange_declare(@name, @type, @options)
|
246
246
|
end
|
247
247
|
|
248
|
-
# @private
|
249
|
-
def self.add_default_options(name, opts, block)
|
250
|
-
{ :exchange => name, :nowait => (block.nil? && !name.empty?) }.merge(opts)
|
251
|
-
end
|
252
|
-
|
253
248
|
# @private
|
254
249
|
def self.add_default_options(name, opts)
|
255
250
|
# :nowait is always false for Bunny
|
data/lib/bunny/jruby/socket.rb
CHANGED
@@ -5,8 +5,7 @@ module Bunny
|
|
5
5
|
# TCP socket extension that uses Socket#readpartial to avoid excessive CPU
|
6
6
|
# burn after some time. See issue #165.
|
7
7
|
# @private
|
8
|
-
|
9
|
-
include Bunny::Socket
|
8
|
+
class Socket < Bunny::Socket
|
10
9
|
|
11
10
|
# Reads given number of bytes with an optional timeout
|
12
11
|
#
|
data/lib/bunny/queue.rb
CHANGED
@@ -88,6 +88,15 @@ module Bunny
|
|
88
88
|
@arguments
|
89
89
|
end
|
90
90
|
|
91
|
+
def to_s
|
92
|
+
oid = ("0x%x" % (self.object_id << 1))
|
93
|
+
"<#{self.class.name}:#{oid} @name=\"#{name}\" channel=#{@channel.to_s} @durable=#{@durable} @auto_delete=#{@auto_delete} @exclusive=#{@exclusive} @arguments=#{@arguments}>"
|
94
|
+
end
|
95
|
+
|
96
|
+
def inspect
|
97
|
+
to_s
|
98
|
+
end
|
99
|
+
|
91
100
|
# Binds queue to an exchange
|
92
101
|
#
|
93
102
|
# @param [Bunny::Exchange,String] exchange Exchange to bind to
|
data/lib/bunny/session.rb
CHANGED
@@ -284,19 +284,15 @@ module Bunny
|
|
284
284
|
self.start_reader_loop if threaded?
|
285
285
|
|
286
286
|
rescue TCPConnectionFailed => e
|
287
|
-
|
288
287
|
@logger.warn e.message
|
289
|
-
|
290
288
|
self.initialize_transport
|
291
|
-
|
292
|
-
@logger.warn "Retrying connection on next host in line: #{@transport.host}:#{@transport.port}"
|
289
|
+
@logger.warn "Will try to connect to the next endpoint in line: #{@transport.host}:#{@transport.port}"
|
293
290
|
|
294
291
|
return self.start
|
295
292
|
rescue
|
296
293
|
@status_mutex.synchronize { @status = :not_connected }
|
297
294
|
raise
|
298
295
|
end
|
299
|
-
|
300
296
|
rescue HostListDepleted
|
301
297
|
self.reset_host_index
|
302
298
|
@status_mutex.synchronize { @status = :not_connected }
|
@@ -940,7 +936,12 @@ module Bunny
|
|
940
936
|
# @return [String]
|
941
937
|
# @api public
|
942
938
|
def to_s
|
943
|
-
"
|
939
|
+
oid = ("0x%x" % (self.object_id << 1))
|
940
|
+
"#<#{self.class.name}:#{oid} #{@user}@#{host}:#{@port}, vhost=#{@vhost}, hosts=[#{@hosts.join(',')}]>"
|
941
|
+
end
|
942
|
+
|
943
|
+
def inspect
|
944
|
+
to_s
|
944
945
|
end
|
945
946
|
|
946
947
|
protected
|
data/lib/bunny/version.rb
CHANGED
@@ -19,11 +19,11 @@ describe Bunny::Channel, "#ack" do
|
|
19
19
|
|
20
20
|
x.publish("bunneth", :routing_key => q.name)
|
21
21
|
sleep 0.5
|
22
|
-
q.message_count.
|
22
|
+
expect(q.message_count).to eq 1
|
23
23
|
delivery_details, properties, content = q.pop(:manual_ack => true)
|
24
24
|
|
25
25
|
ch.ack(delivery_details.delivery_tag, true)
|
26
|
-
q.message_count.
|
26
|
+
expect(q.message_count).to eq 0
|
27
27
|
|
28
28
|
ch.close
|
29
29
|
end
|
@@ -42,9 +42,9 @@ describe Bunny::Channel, "#ack" do
|
|
42
42
|
|
43
43
|
x.publish("bunneth", :routing_key => q.name)
|
44
44
|
sleep 0.5
|
45
|
-
|
45
|
+
expect do
|
46
46
|
q.message_count
|
47
|
-
end.
|
47
|
+
end.to raise_error(Bunny::ChannelAlreadyClosed)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
@@ -56,7 +56,7 @@ describe Bunny::Channel, "#ack" do
|
|
56
56
|
|
57
57
|
x.publish("bunneth", :routing_key => q.name)
|
58
58
|
sleep 0.5
|
59
|
-
q.message_count.
|
59
|
+
expect(q.message_count).to eq 1
|
60
60
|
_, _, content = q.pop(:manual_ack => true)
|
61
61
|
|
62
62
|
ch.on_error do |ch, channel_close|
|
@@ -65,7 +65,7 @@ describe Bunny::Channel, "#ack" do
|
|
65
65
|
ch.ack(82, true)
|
66
66
|
sleep 0.25
|
67
67
|
|
68
|
-
@channel_close.reply_code.
|
68
|
+
expect(@channel_close.reply_code).to eq AMQ::Protocol::PreconditionFailed::VALUE
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
@@ -77,7 +77,7 @@ describe Bunny::Channel, "#ack" do
|
|
77
77
|
|
78
78
|
x.publish("bunneth", :routing_key => q.name)
|
79
79
|
sleep 0.5
|
80
|
-
q.message_count.
|
80
|
+
expect(q.message_count).to eq 1
|
81
81
|
|
82
82
|
orig_stderr = $stderr
|
83
83
|
$stderr = StringIO.new
|
@@ -85,12 +85,12 @@ describe Bunny::Channel, "#ack" do
|
|
85
85
|
delivery_details, properties, content = q.pop(:ack => true)
|
86
86
|
|
87
87
|
$stderr.rewind
|
88
|
-
$stderr.string.chomp.
|
88
|
+
expect($stderr.string.chomp).to eq("[DEPRECATION] `:ack` is deprecated. Please use `:manual_ack` instead.\n[DEPRECATION] `:ack` is deprecated. Please use `:manual_ack` instead.")
|
89
89
|
|
90
90
|
$stderr = orig_stderr
|
91
91
|
|
92
92
|
ch.ack(delivery_details.delivery_tag, true)
|
93
|
-
q.message_count.
|
93
|
+
expect(q.message_count).to eq 0
|
94
94
|
|
95
95
|
ch.close
|
96
96
|
end
|