bunny 1.3.0 → 2.17.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.
Files changed (143) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE.md +18 -0
  3. data/.gitignore +7 -1
  4. data/.rspec +1 -3
  5. data/.travis.yml +21 -14
  6. data/CONTRIBUTING.md +132 -0
  7. data/ChangeLog.md +887 -1
  8. data/Gemfile +13 -13
  9. data/LICENSE +1 -1
  10. data/README.md +46 -60
  11. data/Rakefile +54 -0
  12. data/bunny.gemspec +5 -11
  13. data/docker-compose.yml +28 -0
  14. data/docker/Dockerfile +24 -0
  15. data/docker/apt/preferences.d/erlang +3 -0
  16. data/docker/apt/sources.list.d/bintray.rabbitmq.list +2 -0
  17. data/docker/docker-entrypoint.sh +26 -0
  18. data/docker/rabbitmq.conf +29 -0
  19. data/examples/connection/automatic_recovery_with_basic_get.rb +1 -1
  20. data/examples/connection/automatic_recovery_with_client_named_queues.rb +1 -1
  21. data/examples/connection/automatic_recovery_with_multiple_consumers.rb +1 -1
  22. data/examples/connection/automatic_recovery_with_republishing.rb +1 -1
  23. data/examples/connection/automatic_recovery_with_server_named_queues.rb +1 -1
  24. data/examples/connection/channel_level_exception.rb +1 -9
  25. data/examples/connection/disabled_automatic_recovery.rb +1 -1
  26. data/examples/connection/heartbeat.rb +1 -1
  27. data/examples/consumers/high_and_low_priority.rb +1 -1
  28. data/examples/guides/extensions/alternate_exchange.rb +2 -0
  29. data/examples/guides/extensions/basic_nack.rb +1 -1
  30. data/examples/guides/extensions/dead_letter_exchange.rb +1 -1
  31. data/examples/guides/getting_started/hello_world.rb +2 -0
  32. data/examples/guides/getting_started/weathr.rb +2 -0
  33. data/examples/guides/queues/one_off_consumer.rb +2 -0
  34. data/examples/guides/queues/redeliveries.rb +4 -2
  35. data/lib/bunny.rb +8 -4
  36. data/lib/bunny/channel.rb +268 -153
  37. data/lib/bunny/channel_id_allocator.rb +6 -4
  38. data/lib/bunny/concurrent/continuation_queue.rb +34 -13
  39. data/lib/bunny/consumer_work_pool.rb +34 -6
  40. data/lib/bunny/cruby/socket.rb +48 -21
  41. data/lib/bunny/cruby/ssl_socket.rb +65 -4
  42. data/lib/bunny/exceptions.rb +25 -4
  43. data/lib/bunny/exchange.rb +24 -28
  44. data/lib/bunny/get_response.rb +1 -1
  45. data/lib/bunny/heartbeat_sender.rb +3 -2
  46. data/lib/bunny/jruby/socket.rb +23 -6
  47. data/lib/bunny/jruby/ssl_socket.rb +5 -0
  48. data/lib/bunny/queue.rb +31 -22
  49. data/lib/bunny/reader_loop.rb +31 -18
  50. data/lib/bunny/session.rb +448 -159
  51. data/lib/bunny/test_kit.rb +14 -0
  52. data/lib/bunny/timeout.rb +1 -12
  53. data/lib/bunny/transport.rb +205 -98
  54. data/lib/bunny/version.rb +1 -1
  55. data/repl +1 -1
  56. data/spec/config/enabled_plugins +1 -0
  57. data/spec/config/rabbitmq.conf +13 -0
  58. data/spec/higher_level_api/integration/basic_ack_spec.rb +175 -16
  59. data/spec/higher_level_api/integration/basic_cancel_spec.rb +77 -11
  60. data/spec/higher_level_api/integration/basic_consume_spec.rb +60 -55
  61. data/spec/higher_level_api/integration/basic_consume_with_objects_spec.rb +6 -6
  62. data/spec/higher_level_api/integration/basic_get_spec.rb +31 -7
  63. data/spec/higher_level_api/integration/basic_nack_spec.rb +22 -19
  64. data/spec/higher_level_api/integration/basic_publish_spec.rb +11 -100
  65. data/spec/higher_level_api/integration/basic_qos_spec.rb +32 -4
  66. data/spec/higher_level_api/integration/basic_reject_spec.rb +94 -16
  67. data/spec/higher_level_api/integration/basic_return_spec.rb +4 -4
  68. data/spec/higher_level_api/integration/channel_close_spec.rb +51 -10
  69. data/spec/higher_level_api/integration/channel_open_spec.rb +12 -12
  70. data/spec/higher_level_api/integration/connection_recovery_spec.rb +424 -221
  71. data/spec/higher_level_api/integration/connection_spec.rb +300 -126
  72. data/spec/higher_level_api/integration/connection_stop_spec.rb +31 -19
  73. data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +17 -17
  74. data/spec/higher_level_api/integration/dead_lettering_spec.rb +34 -11
  75. data/spec/higher_level_api/integration/exchange_bind_spec.rb +5 -5
  76. data/spec/higher_level_api/integration/exchange_declare_spec.rb +32 -31
  77. data/spec/higher_level_api/integration/exchange_delete_spec.rb +12 -12
  78. data/spec/higher_level_api/integration/exchange_unbind_spec.rb +5 -5
  79. data/spec/higher_level_api/integration/exclusive_queue_spec.rb +5 -5
  80. data/spec/higher_level_api/integration/heartbeat_spec.rb +26 -8
  81. data/spec/higher_level_api/integration/message_properties_access_spec.rb +49 -49
  82. data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +2 -2
  83. data/spec/higher_level_api/integration/publisher_confirms_spec.rb +156 -42
  84. data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +19 -19
  85. data/spec/higher_level_api/integration/queue_bind_spec.rb +23 -23
  86. data/spec/higher_level_api/integration/queue_declare_spec.rb +129 -34
  87. data/spec/higher_level_api/integration/queue_delete_spec.rb +2 -2
  88. data/spec/higher_level_api/integration/queue_purge_spec.rb +5 -5
  89. data/spec/higher_level_api/integration/queue_unbind_spec.rb +6 -6
  90. data/spec/higher_level_api/integration/read_only_consumer_spec.rb +9 -9
  91. data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +10 -10
  92. data/spec/higher_level_api/integration/tls_connection_spec.rb +224 -89
  93. data/spec/higher_level_api/integration/toxiproxy_spec.rb +76 -0
  94. data/spec/higher_level_api/integration/tx_commit_spec.rb +1 -1
  95. data/spec/higher_level_api/integration/tx_rollback_spec.rb +1 -1
  96. data/spec/higher_level_api/integration/with_channel_spec.rb +2 -2
  97. data/spec/issues/issue100_spec.rb +11 -11
  98. data/spec/issues/issue141_spec.rb +13 -14
  99. data/spec/issues/issue202_spec.rb +1 -1
  100. data/spec/issues/issue224_spec.rb +40 -0
  101. data/spec/issues/issue465_spec.rb +32 -0
  102. data/spec/issues/issue549_spec.rb +30 -0
  103. data/spec/issues/issue78_spec.rb +21 -24
  104. data/spec/issues/issue83_spec.rb +5 -6
  105. data/spec/issues/issue97_spec.rb +44 -45
  106. data/spec/lower_level_api/integration/basic_cancel_spec.rb +15 -16
  107. data/spec/lower_level_api/integration/basic_consume_spec.rb +20 -21
  108. data/spec/spec_helper.rb +8 -26
  109. data/spec/stress/channel_close_stress_spec.rb +64 -0
  110. data/spec/stress/channel_open_stress_spec.rb +15 -9
  111. data/spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb +7 -7
  112. data/spec/stress/concurrent_consumers_stress_spec.rb +18 -16
  113. data/spec/stress/concurrent_publishers_stress_spec.rb +16 -19
  114. data/spec/stress/connection_open_close_spec.rb +9 -9
  115. data/spec/stress/merry_go_round_spec.rb +105 -0
  116. data/spec/tls/client_key.pem +49 -25
  117. data/spec/tls/generate-server-cert.sh +8 -0
  118. data/spec/tls/server-openssl.cnf +10 -0
  119. data/spec/tls/server.csr +16 -0
  120. data/spec/tls/server_key.pem +49 -25
  121. data/spec/toxiproxy_helper.rb +28 -0
  122. data/spec/unit/bunny_spec.rb +5 -5
  123. data/spec/unit/concurrent/atomic_fixnum_spec.rb +6 -6
  124. data/spec/unit/concurrent/condition_spec.rb +8 -8
  125. data/spec/unit/concurrent/linked_continuation_queue_spec.rb +2 -2
  126. data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +16 -16
  127. data/spec/unit/exchange_recovery_spec.rb +39 -0
  128. data/spec/unit/version_delivery_tag_spec.rb +3 -3
  129. metadata +65 -47
  130. data/.ruby-version +0 -1
  131. data/lib/bunny/compatibility.rb +0 -24
  132. data/lib/bunny/system_timer.rb +0 -20
  133. data/spec/compatibility/queue_declare_spec.rb +0 -44
  134. data/spec/compatibility/queue_declare_with_default_channel_spec.rb +0 -33
  135. data/spec/higher_level_api/integration/basic_recover_spec.rb +0 -18
  136. data/spec/higher_level_api/integration/confirm_select_spec.rb +0 -19
  137. data/spec/higher_level_api/integration/consistent_hash_exchange_spec.rb +0 -50
  138. data/spec/higher_level_api/integration/merry_go_round_spec.rb +0 -85
  139. data/spec/stress/long_running_consumer_spec.rb +0 -83
  140. data/spec/tls/cacert.pem +0 -18
  141. data/spec/tls/client_cert.pem +0 -18
  142. data/spec/tls/server_cert.pem +0 -18
  143. data/spec/unit/system_timer_spec.rb +0 -10
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ DIRNAME=$(dirname "$0")
4
+
5
+ openssl req -sha256 -new -key $DIRNAME/server_key.pem -out $DIRNAME/server.csr -subj "/CN=mercurio" -config $DIRNAME/server-openssl.cnf
6
+ openssl x509 -sha256 -req -in $DIRNAME/server.csr -CA $DIRNAME/ca_certificate.pem -CAkey $DIRNAME/ca_key.pem -CAcreateserial -CAserial $DIRNAME/ca.srl -out $DIRNAME/server_certificate.pem -days 3650 -extensions v3_req -extfile $DIRNAME/server-openssl.cnf
7
+
8
+ echo "Written new server CSR and certificate"
@@ -0,0 +1,10 @@
1
+ [req]
2
+ req_extensions = v3_req
3
+ distinguished_name = req_distinguished_name
4
+ [req_distinguished_name]
5
+ [ v3_req ]
6
+ basicConstraints = CA:FALSE
7
+ keyUsage = nonRepudiation, digitalSignature, keyEncipherment
8
+ subjectAltName = @alt_names
9
+ [alt_names]
10
+ IP.1 = 127.0.0.1
@@ -0,0 +1,16 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIICkjCCAXoCAQAwEzERMA8GA1UEAwwIbWVyY3VyaW8wggEiMA0GCSqGSIb3DQEB
3
+ AQUAA4IBDwAwggEKAoIBAQCkvvzm5nB3CDqTFEYQnfOy8DwJLm34MvdrKQAThzDy
4
+ qa37sb4IC0YclBFbZfsw8+paK+Rpo2Vlhzclb66z0cGs9SvxuKkJ45w0fk0ctxMg
5
+ tvWISRGZR7LMw5u0q2m61dK0FTGSl+qzJohb5Dklb6BApoGoIPH+eYraVxHR29x2
6
+ x8hqzBt5TpiUW8bu7LPQJbX0mYGhKQDf86kao+sptRQ2045D7vB3jrkPhq0XZVJi
7
+ QymzOSSejYSN1oZ464DtT+dpLBYHEVJoJPu4r4kY/8A7v+93PWQaDERKBfvwWHfV
8
+ U44xn7R/aojSvNT7kQILsf2BnfJlMwoedWQLxPddmB3PAgMBAAGgOjA4BgkqhkiG
9
+ 9w0BCQ4xKzApMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMA8GA1UdEQQIMAaHBH8A
10
+ AAEwDQYJKoZIhvcNAQELBQADggEBAFyfaotajM/h2dyodKJqO6stAIpxiQXTds8V
11
+ 5ZHDozBxzLZkeBIY+hsqh/owmqomk56swui+336WAKIBwIJyJrtIl8C/lupGaTbR
12
+ BouWWbyZOQAE2ExHcUgdGEOVoCN2ieBR4RVQ8Id4GAlHvlFGPqakaLMV6Zc7VqDh
13
+ vxdOLgATEE+MhebTo9yOHj14qdvzhi5w3ZEg1kdfOuGN9I4gJcv4PWwudBhn4wE7
14
+ oHAIP2nixROI7cZcZ9fBrimcdGQsXNZLTXiGzNra4utOXuQ7w5qoiEhHoxXalowE
15
+ KvEA9otLadjtULg6DRd3zYuIyrUiBIRUHZ1p2xSnd/lLekbMfCQ=
16
+ -----END CERTIFICATE REQUEST-----
@@ -1,27 +1,51 @@
1
1
  -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
27
51
  -----END RSA PRIVATE KEY-----
@@ -0,0 +1,28 @@
1
+ module RabbitMQ
2
+ module Toxiproxy
3
+ RABBITMQ_UPSTREAM_HOST = if !ENV["LOCAL_RABBITMQ"].nil?
4
+ # a local Toxiproxy/RabbitMQ combination
5
+ "localhost"
6
+ else
7
+ # docker-compose
8
+ "rabbitmq"
9
+ end
10
+
11
+ def setup_toxiproxy
12
+ ::Toxiproxy.populate([{
13
+ name: "rabbitmq",
14
+ listen: "0.0.0.0:11111",
15
+ upstream: "#{RABBITMQ_UPSTREAM_HOST}:5672"
16
+ }])
17
+ rabbitmq_toxiproxy.enable
18
+ end
19
+
20
+ def cleanup_toxiproxy
21
+ ::Toxiproxy.populate()
22
+ end
23
+
24
+ def rabbitmq_toxiproxy
25
+ ::Toxiproxy[/rabbitmq/]
26
+ end
27
+ end
28
+ end
@@ -2,14 +2,14 @@ require "spec_helper"
2
2
 
3
3
  describe Bunny do
4
4
  it "has library version" do
5
- Bunny::VERSION.should_not be_nil
6
- Bunny.version.should_not be_nil
5
+ expect(Bunny::VERSION).not_to be_nil
6
+ expect(Bunny.version).not_to be_nil
7
7
  end
8
8
 
9
9
 
10
10
  it "has AMQP protocol version" do
11
- Bunny::PROTOCOL_VERSION.should == "0.9.1"
12
- AMQ::Protocol::PROTOCOL_VERSION.should == "0.9.1"
13
- Bunny.protocol_version.should == "0.9.1"
11
+ expect(Bunny::PROTOCOL_VERSION).to eq "0.9.1"
12
+ expect(AMQ::Protocol::PROTOCOL_VERSION).to eq "0.9.1"
13
+ expect(Bunny.protocol_version).to eq "0.9.1"
14
14
  end
15
15
  end
@@ -5,31 +5,31 @@ describe Bunny::Concurrent::AtomicFixnum do
5
5
  it "allows retrieving the current value" do
6
6
  af = described_class.new(0)
7
7
 
8
- af.get.should == 0
9
- af.should == 0
8
+ expect(af.get).to eq 0
9
+ expect(af).to eq 0
10
10
  end
11
11
 
12
12
  it "can be updated" do
13
13
  af = described_class.new(0)
14
14
 
15
- af.get.should == 0
15
+ expect(af.get).to eq 0
16
16
  Thread.new do
17
17
  af.set(10)
18
18
  end
19
19
  sleep 0.6
20
- af.get.should == 10
20
+ expect(af.get).to eq 10
21
21
  end
22
22
 
23
23
  it "can be incremented" do
24
24
  af = described_class.new(0)
25
25
 
26
- af.get.should == 0
26
+ expect(af.get).to eq 0
27
27
  10.times do
28
28
  Thread.new do
29
29
  af.increment
30
30
  end
31
31
  end
32
32
  sleep 0.6
33
- af.get.should == 10
33
+ expect(af.get).to eq 10
34
34
  end
35
35
  end
@@ -4,7 +4,7 @@ require "bunny/concurrent/condition"
4
4
  describe Bunny::Concurrent::Condition do
5
5
 
6
6
  describe "#wait" do
7
- 100.times do |i|
7
+ 50.times do |i|
8
8
  it "blocks current thread until notified (take #{i})" do
9
9
  condition = described_class.new
10
10
  xs = []
@@ -12,19 +12,19 @@ describe Bunny::Concurrent::Condition do
12
12
  t = Thread.new do
13
13
  xs << :notified
14
14
 
15
- sleep 0.25
15
+ sleep 0.2
16
16
  condition.notify
17
17
  end
18
18
  t.abort_on_exception = true
19
19
 
20
20
  condition.wait
21
- xs.should == [:notified]
21
+ expect(xs).to eq [:notified]
22
22
  end
23
23
  end
24
24
  end
25
25
 
26
26
  describe "#notify" do
27
- 100.times do |i|
27
+ 50.times do |i|
28
28
  it "notifies a single thread waiting on the latch (take #{i})" do
29
29
  mutex = Mutex.new
30
30
  condition = described_class.new
@@ -42,10 +42,10 @@ describe Bunny::Concurrent::Condition do
42
42
  end
43
43
  t2.abort_on_exception = true
44
44
 
45
- sleep 0.25
45
+ sleep 0.2
46
46
  condition.notify
47
47
  sleep 0.5
48
- xs.should satisfy { |ys| ys.size == 1 && (ys.include?(:notified1) || ys.include?(:notified2)) }
48
+ expect(xs).to satisfy { |ys| ys.size == 1 && (ys.include?(:notified1) || ys.include?(:notified2)) }
49
49
  end
50
50
  end
51
51
  end
@@ -53,7 +53,7 @@ describe Bunny::Concurrent::Condition do
53
53
  describe "#notify_all" do
54
54
  let(:n) { 30 }
55
55
 
56
- 100.times do |i|
56
+ 50.times do |i|
57
57
  it "notifies all the threads waiting on the latch (take #{i})" do
58
58
  mutex = Mutex.new
59
59
  condition = described_class.new
@@ -74,7 +74,7 @@ describe Bunny::Concurrent::Condition do
74
74
  n.times do |i|
75
75
  item = "notified#{i + 1}".to_sym
76
76
 
77
- @xs.should include(item)
77
+ expect(@xs).to include item
78
78
  end
79
79
  end
80
80
  end
@@ -14,7 +14,7 @@ if defined?(JRUBY_VERSION)
14
14
  t.abort_on_exception = true
15
15
 
16
16
  v = subject.poll(500)
17
- v.should == 10
17
+ expect(v).to eq 10
18
18
  end
19
19
  end
20
20
 
@@ -28,7 +28,7 @@ if defined?(JRUBY_VERSION)
28
28
  end
29
29
  t.abort_on_exception = true
30
30
 
31
- lambda { subject.poll(500) }.should raise_error(::Timeout::Error)
31
+ expect { subject.poll(500) }.to raise_error(::Timeout::Error)
32
32
  end
33
33
  end
34
34
  end
@@ -6,42 +6,42 @@ unless ENV["CI"]
6
6
  50.times do |i|
7
7
  it "provides the same API as SortedSet for key operations (take #{i})" do
8
8
  s = described_class.new
9
- s.length.should == 0
9
+ expect(s.length).to eq 0
10
10
 
11
11
  s << 1
12
- s.length.should == 1
12
+ expect(s.length).to eq 1
13
13
  s << 1
14
- s.length.should == 1
14
+ expect(s.length).to eq 1
15
15
  s << 2
16
- s.length.should == 2
16
+ expect(s.length).to eq 2
17
17
  s << 3
18
- s.length.should == 3
18
+ expect(s.length).to eq 3
19
19
  s << 4
20
- s.length.should == 4
20
+ expect(s.length).to eq 4
21
21
  s << 4
22
22
  s << 4
23
23
  s << 4
24
- s.length.should == 4
24
+ expect(s.length).to eq 4
25
25
  s << 5
26
- s.length.should == 5
26
+ expect(s.length).to eq 5
27
27
  s << 5
28
28
  s << 5
29
29
  s << 5
30
- s.length.should == 5
30
+ expect(s.length).to eq 5
31
31
  s << 6
32
- s.length.should == 6
32
+ expect(s.length).to eq 6
33
33
  s << 7
34
- s.length.should == 7
34
+ expect(s.length).to eq 7
35
35
  s << 8
36
- s.length.should == 8
36
+ expect(s.length).to eq 8
37
37
  s.delete 8
38
- s.length.should == 7
38
+ expect(s.length).to eq 7
39
39
  s.delete_if { |i| i == 1 }
40
- s.length.should == 6
40
+ expect(s.length).to eq 6
41
41
  end
42
42
  it "synchronizes common operations needed by Bunny (take #{i})" do
43
43
  s = described_class.new
44
- s.length.should == 0
44
+ expect(s.length).to eq 0
45
45
 
46
46
  10.times do
47
47
  Thread.new do
@@ -66,7 +66,7 @@ unless ENV["CI"]
66
66
  end
67
67
  sleep 0.5
68
68
 
69
- s.length.should == 6
69
+ expect(s.length).to eq 6
70
70
  end
71
71
  end
72
72
  end
@@ -0,0 +1,39 @@
1
+ require 'bunny/channel'
2
+ require 'bunny/exchange'
3
+
4
+ module Bunny
5
+ describe Exchange do
6
+ context "recovery" do
7
+ it "recovers exchange bindings, unless already unbound" do
8
+ ch = instance_double(Bunny::Channel,
9
+ exchange_declare: nil,
10
+ register_exchange: nil)
11
+ src1 = Exchange.new(ch, "direct", "src1")
12
+ src2 = Exchange.new(ch, "direct", "src2")
13
+ src3 = Exchange.new(ch, "direct", "src3")
14
+ dst = Exchange.new(ch, "direct", "dst")
15
+
16
+ original_binds_count = 5
17
+ expected_rebinds_count = 3
18
+ expected_total_binds = original_binds_count + expected_rebinds_count
19
+ allow(ch).to receive(:exchange_bind).exactly(expected_total_binds).times
20
+
21
+ dst.bind(src1, routing_key: "abc")
22
+ dst.bind(src2, routing_key: "def")
23
+ dst.bind(src2, routing_key: "ghi")
24
+ dst.bind(src3, routing_key: "jkl")
25
+ dst.bind(src3, routing_key: "jkl", arguments: {"key" => "value"})
26
+
27
+ allow(ch).to receive(:exchange_unbind).twice
28
+ dst.unbind(src2, routing_key: "def")
29
+ dst.unbind(src3, routing_key: "jkl", arguments: {"key" => "value"})
30
+
31
+ expect(ch).to receive(:exchange_bind).with(src1, dst, routing_key: "abc")
32
+ expect(ch).to receive(:exchange_bind).with(src2, dst, routing_key: "ghi")
33
+ expect(ch).to receive(:exchange_bind).with(src3, dst, routing_key: "jkl")
34
+
35
+ dst.recover_from_network_failure
36
+ end
37
+ end
38
+ end
39
+ end
@@ -8,13 +8,13 @@ describe Bunny::VersionedDeliveryTag, "#stale?" do
8
8
 
9
9
  context "when delivery tag version < provided version" do
10
10
  it "returns true" do
11
- subject.stale?(2).should be_true
11
+ expect(subject.stale?(2)).to eq true
12
12
  end
13
13
  end
14
14
 
15
15
  context "when delivery tag version = provided version" do
16
16
  it "returns false" do
17
- subject.stale?(1).should be_false
17
+ expect(subject.stale?(1)).to eq false
18
18
  end
19
19
  end
20
20
 
@@ -22,7 +22,7 @@ describe Bunny::VersionedDeliveryTag, "#stale?" do
22
22
  it "returns true" do
23
23
  # this scenario is unrealistic but we still can
24
24
  # unit test it. MK.
25
- subject.stale?(0).should be_false
25
+ expect(subject.stale?(0)).to eq false
26
26
  end
27
27
  end
28
28
  end
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.3.0
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Duncan
@@ -12,44 +12,48 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-06-18 00:00:00.000000000 Z
15
+ date: 2020-09-11 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: amq-protocol
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - '>='
21
+ - - "~>"
22
22
  - !ruby/object:Gem::Version
23
- version: 1.9.2
23
+ version: '2.3'
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.3.1
24
27
  type: :runtime
25
28
  prerelease: false
26
29
  version_requirements: !ruby/object:Gem::Requirement
27
30
  requirements:
28
- - - '>='
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.3'
34
+ - - ">="
29
35
  - !ruby/object:Gem::Version
30
- version: 1.9.2
31
- description: Easy to use, feature complete Ruby client for RabbitMQ 2.0 and later
36
+ version: 2.3.1
37
+ description: Easy to use, feature complete Ruby client for RabbitMQ 3.3 and later
32
38
  versions.
33
39
  email:
34
- - celldee@gmail.com
35
- - eric@5stops.com
36
- - stastny@101ideas.cz
37
- - michael@novemberain.com
38
- - skaes@railsexpress.de
40
+ - michael.s.klishin@gmail.com
39
41
  executables: []
40
42
  extensions: []
41
43
  extra_rdoc_files:
42
44
  - README.md
43
45
  files:
44
- - .gitignore
45
- - .rspec
46
- - .ruby-version
47
- - .travis.yml
48
- - .yardopts
46
+ - ".github/ISSUE_TEMPLATE.md"
47
+ - ".gitignore"
48
+ - ".rspec"
49
+ - ".travis.yml"
50
+ - ".yardopts"
51
+ - CONTRIBUTING.md
49
52
  - ChangeLog.md
50
53
  - Gemfile
51
54
  - LICENSE
52
55
  - README.md
56
+ - Rakefile
53
57
  - benchmarks/basic_publish/with_128K_messages.rb
54
58
  - benchmarks/basic_publish/with_1k_messages.rb
55
59
  - benchmarks/basic_publish/with_4K_messages.rb
@@ -61,8 +65,13 @@ files:
61
65
  - benchmarks/queue_declare_bind_and_delete.rb
62
66
  - benchmarks/synchronized_sorted_set.rb
63
67
  - benchmarks/write_vs_write_nonblock.rb
64
- - bin/ci/before_build.sh
65
68
  - bunny.gemspec
69
+ - docker-compose.yml
70
+ - docker/Dockerfile
71
+ - docker/apt/preferences.d/erlang
72
+ - docker/apt/sources.list.d/bintray.rabbitmq.list
73
+ - docker/docker-entrypoint.sh
74
+ - docker/rabbitmq.conf
66
75
  - examples/connection/authentication_failure.rb
67
76
  - examples/connection/automatic_recovery_with_basic_get.rb
68
77
  - examples/connection/automatic_recovery_with_client_named_queues.rb
@@ -103,7 +112,6 @@ files:
103
112
  - lib/bunny/authentication/plain_mechanism_encoder.rb
104
113
  - lib/bunny/channel.rb
105
114
  - lib/bunny/channel_id_allocator.rb
106
- - lib/bunny/compatibility.rb
107
115
  - lib/bunny/concurrent/atomic_fixnum.rb
108
116
  - lib/bunny/concurrent/condition.rb
109
117
  - lib/bunny/concurrent/continuation_queue.rb
@@ -129,7 +137,6 @@ files:
129
137
  - lib/bunny/session.rb
130
138
  - lib/bunny/socket.rb
131
139
  - lib/bunny/ssl_socket.rb
132
- - lib/bunny/system_timer.rb
133
140
  - lib/bunny/test_kit.rb
134
141
  - lib/bunny/timeout.rb
135
142
  - lib/bunny/transport.rb
@@ -137,8 +144,8 @@ files:
137
144
  - lib/bunny/versioned_delivery_tag.rb
138
145
  - profiling/basic_publish/with_4K_messages.rb
139
146
  - repl
140
- - spec/compatibility/queue_declare_spec.rb
141
- - spec/compatibility/queue_declare_with_default_channel_spec.rb
147
+ - spec/config/enabled_plugins
148
+ - spec/config/rabbitmq.conf
142
149
  - spec/higher_level_api/integration/basic_ack_spec.rb
143
150
  - spec/higher_level_api/integration/basic_cancel_spec.rb
144
151
  - spec/higher_level_api/integration/basic_consume_spec.rb
@@ -147,16 +154,13 @@ files:
147
154
  - spec/higher_level_api/integration/basic_nack_spec.rb
148
155
  - spec/higher_level_api/integration/basic_publish_spec.rb
149
156
  - spec/higher_level_api/integration/basic_qos_spec.rb
150
- - spec/higher_level_api/integration/basic_recover_spec.rb
151
157
  - spec/higher_level_api/integration/basic_reject_spec.rb
152
158
  - spec/higher_level_api/integration/basic_return_spec.rb
153
159
  - spec/higher_level_api/integration/channel_close_spec.rb
154
160
  - spec/higher_level_api/integration/channel_open_spec.rb
155
- - spec/higher_level_api/integration/confirm_select_spec.rb
156
161
  - spec/higher_level_api/integration/connection_recovery_spec.rb
157
162
  - spec/higher_level_api/integration/connection_spec.rb
158
163
  - spec/higher_level_api/integration/connection_stop_spec.rb
159
- - spec/higher_level_api/integration/consistent_hash_exchange_spec.rb
160
164
  - spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb
161
165
  - spec/higher_level_api/integration/dead_lettering_spec.rb
162
166
  - spec/higher_level_api/integration/exchange_bind_spec.rb
@@ -165,7 +169,6 @@ files:
165
169
  - spec/higher_level_api/integration/exchange_unbind_spec.rb
166
170
  - spec/higher_level_api/integration/exclusive_queue_spec.rb
167
171
  - spec/higher_level_api/integration/heartbeat_spec.rb
168
- - spec/higher_level_api/integration/merry_go_round_spec.rb
169
172
  - spec/higher_level_api/integration/message_properties_access_spec.rb
170
173
  - spec/higher_level_api/integration/predeclared_exchanges_spec.rb
171
174
  - spec/higher_level_api/integration/publisher_confirms_spec.rb
@@ -178,12 +181,16 @@ files:
178
181
  - spec/higher_level_api/integration/read_only_consumer_spec.rb
179
182
  - spec/higher_level_api/integration/sender_selected_distribution_spec.rb
180
183
  - spec/higher_level_api/integration/tls_connection_spec.rb
184
+ - spec/higher_level_api/integration/toxiproxy_spec.rb
181
185
  - spec/higher_level_api/integration/tx_commit_spec.rb
182
186
  - spec/higher_level_api/integration/tx_rollback_spec.rb
183
187
  - spec/higher_level_api/integration/with_channel_spec.rb
184
188
  - spec/issues/issue100_spec.rb
185
189
  - spec/issues/issue141_spec.rb
186
190
  - spec/issues/issue202_spec.rb
191
+ - spec/issues/issue224_spec.rb
192
+ - spec/issues/issue465_spec.rb
193
+ - spec/issues/issue549_spec.rb
187
194
  - spec/issues/issue78_spec.rb
188
195
  - spec/issues/issue83_spec.rb
189
196
  - spec/issues/issue97_attachment.json
@@ -191,23 +198,29 @@ files:
191
198
  - spec/lower_level_api/integration/basic_cancel_spec.rb
192
199
  - spec/lower_level_api/integration/basic_consume_spec.rb
193
200
  - spec/spec_helper.rb
201
+ - spec/stress/channel_close_stress_spec.rb
194
202
  - spec/stress/channel_open_stress_spec.rb
195
203
  - spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb
196
204
  - spec/stress/concurrent_consumers_stress_spec.rb
197
205
  - spec/stress/concurrent_publishers_stress_spec.rb
198
206
  - spec/stress/connection_open_close_spec.rb
199
- - spec/stress/long_running_consumer_spec.rb
200
- - spec/tls/cacert.pem
201
- - spec/tls/client_cert.pem
207
+ - spec/stress/merry_go_round_spec.rb
208
+ - spec/tls/ca_certificate.pem
209
+ - spec/tls/ca_key.pem
210
+ - spec/tls/client_certificate.pem
202
211
  - spec/tls/client_key.pem
203
- - spec/tls/server_cert.pem
212
+ - spec/tls/generate-server-cert.sh
213
+ - spec/tls/server-openssl.cnf
214
+ - spec/tls/server.csr
215
+ - spec/tls/server_certificate.pem
204
216
  - spec/tls/server_key.pem
217
+ - spec/toxiproxy_helper.rb
205
218
  - spec/unit/bunny_spec.rb
206
219
  - spec/unit/concurrent/atomic_fixnum_spec.rb
207
220
  - spec/unit/concurrent/condition_spec.rb
208
221
  - spec/unit/concurrent/linked_continuation_queue_spec.rb
209
222
  - spec/unit/concurrent/synchronized_sorted_set_spec.rb
210
- - spec/unit/system_timer_spec.rb
223
+ - spec/unit/exchange_recovery_spec.rb
211
224
  - spec/unit/version_delivery_tag_spec.rb
212
225
  homepage: http://rubybunny.info
213
226
  licenses:
@@ -219,23 +232,22 @@ require_paths:
219
232
  - lib
220
233
  required_ruby_version: !ruby/object:Gem::Requirement
221
234
  requirements:
222
- - - '>='
235
+ - - ">="
223
236
  - !ruby/object:Gem::Version
224
- version: '0'
237
+ version: '2.2'
225
238
  required_rubygems_version: !ruby/object:Gem::Requirement
226
239
  requirements:
227
- - - '>='
240
+ - - ">="
228
241
  - !ruby/object:Gem::Version
229
242
  version: '0'
230
243
  requirements: []
231
- rubyforge_project:
232
- rubygems_version: 2.2.2
244
+ rubygems_version: 3.1.2
233
245
  signing_key:
234
246
  specification_version: 4
235
247
  summary: Popular easy to use Ruby client for RabbitMQ
236
248
  test_files:
237
- - spec/compatibility/queue_declare_spec.rb
238
- - spec/compatibility/queue_declare_with_default_channel_spec.rb
249
+ - spec/config/enabled_plugins
250
+ - spec/config/rabbitmq.conf
239
251
  - spec/higher_level_api/integration/basic_ack_spec.rb
240
252
  - spec/higher_level_api/integration/basic_cancel_spec.rb
241
253
  - spec/higher_level_api/integration/basic_consume_spec.rb
@@ -244,16 +256,13 @@ test_files:
244
256
  - spec/higher_level_api/integration/basic_nack_spec.rb
245
257
  - spec/higher_level_api/integration/basic_publish_spec.rb
246
258
  - spec/higher_level_api/integration/basic_qos_spec.rb
247
- - spec/higher_level_api/integration/basic_recover_spec.rb
248
259
  - spec/higher_level_api/integration/basic_reject_spec.rb
249
260
  - spec/higher_level_api/integration/basic_return_spec.rb
250
261
  - spec/higher_level_api/integration/channel_close_spec.rb
251
262
  - spec/higher_level_api/integration/channel_open_spec.rb
252
- - spec/higher_level_api/integration/confirm_select_spec.rb
253
263
  - spec/higher_level_api/integration/connection_recovery_spec.rb
254
264
  - spec/higher_level_api/integration/connection_spec.rb
255
265
  - spec/higher_level_api/integration/connection_stop_spec.rb
256
- - spec/higher_level_api/integration/consistent_hash_exchange_spec.rb
257
266
  - spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb
258
267
  - spec/higher_level_api/integration/dead_lettering_spec.rb
259
268
  - spec/higher_level_api/integration/exchange_bind_spec.rb
@@ -262,7 +271,6 @@ test_files:
262
271
  - spec/higher_level_api/integration/exchange_unbind_spec.rb
263
272
  - spec/higher_level_api/integration/exclusive_queue_spec.rb
264
273
  - spec/higher_level_api/integration/heartbeat_spec.rb
265
- - spec/higher_level_api/integration/merry_go_round_spec.rb
266
274
  - spec/higher_level_api/integration/message_properties_access_spec.rb
267
275
  - spec/higher_level_api/integration/predeclared_exchanges_spec.rb
268
276
  - spec/higher_level_api/integration/publisher_confirms_spec.rb
@@ -275,12 +283,16 @@ test_files:
275
283
  - spec/higher_level_api/integration/read_only_consumer_spec.rb
276
284
  - spec/higher_level_api/integration/sender_selected_distribution_spec.rb
277
285
  - spec/higher_level_api/integration/tls_connection_spec.rb
286
+ - spec/higher_level_api/integration/toxiproxy_spec.rb
278
287
  - spec/higher_level_api/integration/tx_commit_spec.rb
279
288
  - spec/higher_level_api/integration/tx_rollback_spec.rb
280
289
  - spec/higher_level_api/integration/with_channel_spec.rb
281
290
  - spec/issues/issue100_spec.rb
282
291
  - spec/issues/issue141_spec.rb
283
292
  - spec/issues/issue202_spec.rb
293
+ - spec/issues/issue224_spec.rb
294
+ - spec/issues/issue465_spec.rb
295
+ - spec/issues/issue549_spec.rb
284
296
  - spec/issues/issue78_spec.rb
285
297
  - spec/issues/issue83_spec.rb
286
298
  - spec/issues/issue97_attachment.json
@@ -288,21 +300,27 @@ test_files:
288
300
  - spec/lower_level_api/integration/basic_cancel_spec.rb
289
301
  - spec/lower_level_api/integration/basic_consume_spec.rb
290
302
  - spec/spec_helper.rb
303
+ - spec/stress/channel_close_stress_spec.rb
291
304
  - spec/stress/channel_open_stress_spec.rb
292
305
  - spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb
293
306
  - spec/stress/concurrent_consumers_stress_spec.rb
294
307
  - spec/stress/concurrent_publishers_stress_spec.rb
295
308
  - spec/stress/connection_open_close_spec.rb
296
- - spec/stress/long_running_consumer_spec.rb
297
- - spec/tls/cacert.pem
298
- - spec/tls/client_cert.pem
309
+ - spec/stress/merry_go_round_spec.rb
310
+ - spec/tls/ca_certificate.pem
311
+ - spec/tls/ca_key.pem
312
+ - spec/tls/client_certificate.pem
299
313
  - spec/tls/client_key.pem
300
- - spec/tls/server_cert.pem
314
+ - spec/tls/generate-server-cert.sh
315
+ - spec/tls/server-openssl.cnf
316
+ - spec/tls/server.csr
317
+ - spec/tls/server_certificate.pem
301
318
  - spec/tls/server_key.pem
319
+ - spec/toxiproxy_helper.rb
302
320
  - spec/unit/bunny_spec.rb
303
321
  - spec/unit/concurrent/atomic_fixnum_spec.rb
304
322
  - spec/unit/concurrent/condition_spec.rb
305
323
  - spec/unit/concurrent/linked_continuation_queue_spec.rb
306
324
  - spec/unit/concurrent/synchronized_sorted_set_spec.rb
307
- - spec/unit/system_timer_spec.rb
325
+ - spec/unit/exchange_recovery_spec.rb
308
326
  - spec/unit/version_delivery_tag_spec.rb