bunny 2.15.0 → 2.19.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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -12
  3. data/lib/bunny/channel.rb +2 -2
  4. data/lib/bunny/reader_loop.rb +11 -11
  5. data/lib/bunny/session.rb +32 -9
  6. data/lib/bunny/transport.rb +12 -11
  7. data/lib/bunny/version.rb +1 -1
  8. data/spec/higher_level_api/integration/basic_consume_spec.rb +14 -6
  9. data/spec/higher_level_api/integration/connection_spec.rb +26 -0
  10. data/spec/higher_level_api/integration/tls_connection_spec.rb +25 -32
  11. data/spec/issues/issue609_spec.rb +84 -0
  12. data/spec/lower_level_api/integration/basic_cancel_spec.rb +1 -1
  13. data/spec/lower_level_api/integration/basic_consume_spec.rb +8 -8
  14. metadata +28 -87
  15. data/.github/ISSUE_TEMPLATE.md +0 -18
  16. data/.gitignore +0 -28
  17. data/.rspec +0 -1
  18. data/.travis.yml +0 -33
  19. data/.yardopts +0 -8
  20. data/CONTRIBUTING.md +0 -132
  21. data/ChangeLog.md +0 -2084
  22. data/Gemfile +0 -55
  23. data/LICENSE +0 -21
  24. data/Rakefile +0 -54
  25. data/benchmarks/basic_publish/with_128K_messages.rb +0 -35
  26. data/benchmarks/basic_publish/with_1k_messages.rb +0 -35
  27. data/benchmarks/basic_publish/with_4K_messages.rb +0 -35
  28. data/benchmarks/basic_publish/with_64K_messages.rb +0 -35
  29. data/benchmarks/channel_open.rb +0 -28
  30. data/benchmarks/mutex_and_monitor.rb +0 -42
  31. data/benchmarks/queue_declare.rb +0 -29
  32. data/benchmarks/queue_declare_and_bind.rb +0 -29
  33. data/benchmarks/queue_declare_bind_and_delete.rb +0 -29
  34. data/benchmarks/synchronized_sorted_set.rb +0 -53
  35. data/benchmarks/write_vs_write_nonblock.rb +0 -49
  36. data/bunny.gemspec +0 -34
  37. data/docker/Dockerfile +0 -24
  38. data/docker/apt/preferences.d/erlang +0 -3
  39. data/docker/apt/sources.list.d/bintray.rabbitmq.list +0 -2
  40. data/docker/docker-entrypoint.sh +0 -26
  41. data/docker/rabbitmq.conf +0 -29
  42. data/docker-compose.yml +0 -28
  43. data/examples/connection/authentication_failure.rb +0 -16
  44. data/examples/connection/automatic_recovery_with_basic_get.rb +0 -40
  45. data/examples/connection/automatic_recovery_with_client_named_queues.rb +0 -36
  46. data/examples/connection/automatic_recovery_with_multiple_consumers.rb +0 -46
  47. data/examples/connection/automatic_recovery_with_republishing.rb +0 -109
  48. data/examples/connection/automatic_recovery_with_server_named_queues.rb +0 -35
  49. data/examples/connection/channel_level_exception.rb +0 -27
  50. data/examples/connection/disabled_automatic_recovery.rb +0 -34
  51. data/examples/connection/heartbeat.rb +0 -17
  52. data/examples/connection/manually_reconnecting_consumer.rb +0 -23
  53. data/examples/connection/manually_reconnecting_publisher.rb +0 -28
  54. data/examples/connection/unknown_host.rb +0 -16
  55. data/examples/consumers/high_and_low_priority.rb +0 -50
  56. data/examples/guides/exchanges/direct_exchange_routing.rb +0 -36
  57. data/examples/guides/exchanges/fanout_exchange_routing.rb +0 -28
  58. data/examples/guides/exchanges/headers_exchange_routing.rb +0 -31
  59. data/examples/guides/exchanges/mandatory_messages.rb +0 -30
  60. data/examples/guides/extensions/alternate_exchange.rb +0 -30
  61. data/examples/guides/extensions/basic_nack.rb +0 -33
  62. data/examples/guides/extensions/connection_blocked.rb +0 -35
  63. data/examples/guides/extensions/consumer_cancellation_notification.rb +0 -39
  64. data/examples/guides/extensions/dead_letter_exchange.rb +0 -32
  65. data/examples/guides/extensions/exchange_to_exchange_bindings.rb +0 -29
  66. data/examples/guides/extensions/per_message_ttl.rb +0 -36
  67. data/examples/guides/extensions/per_queue_message_ttl.rb +0 -36
  68. data/examples/guides/extensions/publisher_confirms.rb +0 -28
  69. data/examples/guides/extensions/queue_lease.rb +0 -26
  70. data/examples/guides/extensions/sender_selected_distribution.rb +0 -32
  71. data/examples/guides/getting_started/blabbr.rb +0 -27
  72. data/examples/guides/getting_started/hello_world.rb +0 -22
  73. data/examples/guides/getting_started/weathr.rb +0 -49
  74. data/examples/guides/queues/one_off_consumer.rb +0 -25
  75. data/examples/guides/queues/redeliveries.rb +0 -81
  76. data/profiling/basic_publish/with_4K_messages.rb +0 -33
  77. data/repl +0 -3
  78. data/spec/tls/ca_certificate.pem +0 -29
  79. data/spec/tls/ca_key.pem +0 -52
  80. data/spec/tls/client_certificate.pem +0 -29
  81. data/spec/tls/client_key.pem +0 -51
  82. data/spec/tls/generate-server-cert.sh +0 -8
  83. data/spec/tls/server-openssl.cnf +0 -10
  84. data/spec/tls/server.csr +0 -16
  85. data/spec/tls/server_certificate.pem +0 -29
  86. data/spec/tls/server_key.pem +0 -51
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Bunny::Session, 'TLS certificate store' do
6
+ subject { described_class.new tls: true, tls_ca_certificates: [certificate], logger: logger }
7
+
8
+ let(:logger) { Logger.new(io).tap { |l| l.level = :debug } }
9
+ let(:io) { StringIO.new }
10
+
11
+ context 'when a Windows path given' do
12
+ let(:certificate) { 'C:/some/path/cacert.pem' }
13
+
14
+ # skipping actual work with file by Windows path as this spec runs in Linux
15
+ before do
16
+ allow(File).to receive(:readable?).with(certificate).and_return(true)
17
+ allow_any_instance_of(OpenSSL::X509::Store).to receive(:add_file)
18
+ end
19
+
20
+ it 'uses the certificate by path' do
21
+ subject
22
+
23
+ expect(log_content).to include('Using CA certificates at C:/some/path/cacert.pem')
24
+ end
25
+ end
26
+
27
+ context 'when a POSIX path given' do
28
+ let(:certificate) { './spec/tls/ca_certificate.pem' }
29
+
30
+ it 'uses the certificate by path' do
31
+ subject
32
+
33
+ expect(log_content).to include('Using CA certificates at ./spec/tls/ca_certificate.pem')
34
+ end
35
+ end
36
+
37
+ context 'when an inline certificate given' do
38
+ let(:certificate) do
39
+ <<~CERT
40
+ -----BEGIN CERTIFICATE-----
41
+ MIIFUDCCAzigAwIBAgIUSnyXq9nGYlkEvmGK0D/vfDW+B0QwDQYJKoZIhvcNAQEL
42
+ BQAwMTEgMB4GA1UEAwwXVExTR2VuU2VsZlNpZ25lZHRSb290Q0ExDTALBgNVBAcM
43
+ BCQkJCQwHhcNMjEwNDEyMTcwNzIxWhcNMzEwNDEwMTcwNzIxWjAxMSAwHgYDVQQD
44
+ DBdUTFNHZW5TZWxmU2lnbmVkdFJvb3RDQTENMAsGA1UEBwwEJCQkJDCCAiIwDQYJ
45
+ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAKgPkKUIOi3RJZn0j/TkknErop/N1ylp
46
+ qb4A6O9yMjRt7gSui+mouEe6SqcQubhm6n3cQzr0LxmtPO96ShHDUh8SJwzN419Q
47
+ HS4x5IyCm4GMWvj4XPWb0LDVPdgbF9JdDSsv+zJPJ5oCh3wxbGrbzWIdClHE3ERm
48
+ Fx59P4hgT5aa21LuB/Is/U5ybkUdrmYLP6ZiwYhH6A2mdL8VdqI53/tChrimNDcH
49
+ I7dy9gqU75uDVF5DkchELFLPBTOYHS7OPS7sWHw4prQ6X+fZ/YG8Sql0+FAPf3Ro
50
+ h2RSIiaGCLiuKpBjF3zK20ZvV+m6p+sYX3YyY3R9PDTctHYl6IW0iXpXjbStY//+
51
+ bBK56B74+OgRlWRqQDs/xfTDzm3GXRy6N/Z19ghoQYFST1FrHH04lBhoknNiSmRC
52
+ Qf0AuwllLs9p1BLk/yEyoeAjMLA9ZDw0UjAvEaRgIwCFUJ3n2NZ/q+d2bTA00W4z
53
+ 2pw6Hju//kkwWKBpAQBnPWRUhi4R3XDHKTa4lwkTjRzwfiyOM7y0JiPTj96WCKDo
54
+ xIGEXbWwqZi/z7JTsXaxwxTnwC3ySStSz8SwgE4VjyK9DWeuT/4B6RWy+1sPLhOx
55
+ ZXrCdUAd43ZGZp2SOZQrjPG89G3eUtfWQh2gigOabxEJoJmSDQW7LPXDQ64wElE5
56
+ I5vR6XcclCM7AgMBAAGjYDBeMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUUdmmGXiv
57
+ pidfAl85xXxPAFTDnUowHwYDVR0jBBgwFoAUUdmmGXivpidfAl85xXxPAFTDnUow
58
+ DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAobJS8Ej4ZUpqtjWs
59
+ OVWGNXja0HdwuKP/IHmBWkcwrjJmMk5R8kGd+REIvCPz4ngofGMgYXLtj1omNkfh
60
+ FDmUQWP0GRWZFgKCp5kNX+uaQk/KULEYc5W/+vYrpFPwOQi1uruRSyRKMddw3BJa
61
+ I799hskkD8UFEfgHaAhdr9aZikYjCUYX0MIYHWef4e/H/ty/DYnKoGmUmVJEp45g
62
+ JLXOUAQCD1EeZhUqkZddVckCR5oZQIfaJZbXRNKhQKcg9yllvDT2xY9tAty8D+v4
63
+ U/uoVcCbsXvE8BpEUYHuDYvLGutPYPLqTSGVxxTa4P/x/gEd1XlCtEoHThrv2YpF
64
+ O5gME43xtBbwsEvBKWEaGl4hNLjlsTelM7uZsea58aIbs2nhUJQwcBUcugMa/Bxe
65
+ KNgCiJ8M6ESa4FDV75Oe1LFZcC92Ie8zq5JTfvJJdEDqYdgAe05CH53USdRYKFRI
66
+ QejzCS50kRx/wZgrokAXSSyuhXcEDoHqJ46Ufp5hnEVZCytCLRC58adPeBpcrLkN
67
+ b4ZRbtyrZHDFkU/M49OxXUYBVaXztzK/EfkSXP4WHVNLlcb6U/fmlssfTaXu6ovg
68
+ IOKPOq09C3id77JsXRwEb7hkkXpTp5i63bmVvCKRDKtHMUfxfnRiZkuu79fB4y8v
69
+ eYEXqywYlmGZite4N3qb3qQnyGw=
70
+ -----END CERTIFICATE-----
71
+ CERT
72
+ end
73
+
74
+ it 'uses the inline certificate' do
75
+ subject
76
+
77
+ expect(log_content).to include('Using 1 inline CA certificates')
78
+ end
79
+ end
80
+
81
+ def log_content
82
+ io.tap(&:rewind).read
83
+ end
84
+ end
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe Bunny::Channel, "#basic_cancel" do
4
4
  before(:all) do
5
- @connection = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
5
+ @connection = Bunny.new(:user => "bunny_gem", password: "bunny_password", :vhost => "bunny_testbed")
6
6
  @connection.start
7
7
  end
8
8
 
@@ -2,7 +2,7 @@ require "spec_helper"
2
2
 
3
3
  describe Bunny::Channel, "#basic_consume" do
4
4
  before(:all) do
5
- @connection = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed")
5
+ @connection = Bunny.new(:user => "bunny_gem", password: "bunny_password", :vhost => "bunny_testbed")
6
6
  @connection.start
7
7
  end
8
8
 
@@ -12,7 +12,7 @@ describe Bunny::Channel, "#basic_consume" do
12
12
 
13
13
  it "returns basic.consume-ok when it is received" do
14
14
  ch = @connection.create_channel
15
- q = ch.queue("", :exclusive => true)
15
+ q = ch.queue("", exclusive: true)
16
16
 
17
17
  consume_ok = ch.basic_consume(q)
18
18
  expect(consume_ok).to be_instance_of AMQ::Protocol::Basic::ConsumeOk
@@ -23,7 +23,7 @@ describe Bunny::Channel, "#basic_consume" do
23
23
 
24
24
  it "carries server-generated consumer tag with basic.consume-ok" do
25
25
  ch = @connection.create_channel
26
- q = ch.queue("", :exclusive => true)
26
+ q = ch.queue("", exclusive: true)
27
27
 
28
28
  consume_ok = ch.basic_consume(q, "")
29
29
  expect(consume_ok.consumer_tag).to match /amq\.ctag.*/
@@ -51,13 +51,13 @@ describe Bunny::Channel, "#basic_consume" do
51
51
 
52
52
  ch = @connection.create_channel
53
53
  x = ch.default_exchange
54
- x.publish("hello", :routing_key => queue_name)
54
+ x.publish("hello", routing_key: queue_name)
55
55
 
56
56
  sleep 0.7
57
57
  expect(delivered_keys).to include queue_name
58
58
  expect(delivered_data).to include "hello"
59
59
 
60
- expect(ch.queue(queue_name, :auto_delete => true, :durable => false).message_count).to eq 0
60
+ expect(ch.queue(queue_name, auto_delete: true, durable: false).message_count).to eq 0
61
61
 
62
62
  ch.close
63
63
  end
@@ -72,7 +72,7 @@ describe Bunny::Channel, "#basic_consume" do
72
72
 
73
73
  t = Thread.new do
74
74
  ch = @connection.create_channel
75
- q = ch.queue(queue_name, :auto_delete => true, :durable => false)
75
+ q = ch.queue(queue_name, auto_delete: true, durable: false)
76
76
  ch.basic_consume(q, "", false, false) do |delivery_info, properties, payload|
77
77
  delivered_keys << delivery_info.routing_key
78
78
  delivered_data << payload
@@ -85,13 +85,13 @@ describe Bunny::Channel, "#basic_consume" do
85
85
 
86
86
  ch = @connection.create_channel
87
87
  x = ch.default_exchange
88
- x.publish("hello", :routing_key => queue_name)
88
+ x.publish("hello", routing_key: queue_name)
89
89
 
90
90
  sleep 0.7
91
91
  expect(delivered_keys).to include queue_name
92
92
  expect(delivered_data).to include "hello"
93
93
 
94
- expect(ch.queue(queue_name, :auto_delete => true, :durable => false).message_count).to eq 0
94
+ expect(ch.queue(queue_name, auto_delete: true, durable: false).message_count).to eq 0
95
95
 
96
96
  ch.close
97
97
  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: 2.15.0
4
+ version: 2.19.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Duncan
@@ -9,10 +9,10 @@ authors:
9
9
  - Jakub Stastny aka botanicus
10
10
  - Michael S. Klishin
11
11
  - Stefan Kaes
12
- autorequire:
12
+ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2020-04-08 00:00:00.000000000 Z
15
+ date: 2021-06-25 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: amq-protocol
@@ -34,6 +34,26 @@ dependencies:
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: 2.3.1
37
+ - !ruby/object:Gem::Dependency
38
+ name: sorted_set
39
+ requirement: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '1'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.0.2
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '1'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 1.0.2
37
57
  description: Easy to use, feature complete Ruby client for RabbitMQ 3.3 and later
38
58
  versions.
39
59
  email:
@@ -43,68 +63,7 @@ extensions: []
43
63
  extra_rdoc_files:
44
64
  - README.md
45
65
  files:
46
- - ".github/ISSUE_TEMPLATE.md"
47
- - ".gitignore"
48
- - ".rspec"
49
- - ".travis.yml"
50
- - ".yardopts"
51
- - CONTRIBUTING.md
52
- - ChangeLog.md
53
- - Gemfile
54
- - LICENSE
55
66
  - README.md
56
- - Rakefile
57
- - benchmarks/basic_publish/with_128K_messages.rb
58
- - benchmarks/basic_publish/with_1k_messages.rb
59
- - benchmarks/basic_publish/with_4K_messages.rb
60
- - benchmarks/basic_publish/with_64K_messages.rb
61
- - benchmarks/channel_open.rb
62
- - benchmarks/mutex_and_monitor.rb
63
- - benchmarks/queue_declare.rb
64
- - benchmarks/queue_declare_and_bind.rb
65
- - benchmarks/queue_declare_bind_and_delete.rb
66
- - benchmarks/synchronized_sorted_set.rb
67
- - benchmarks/write_vs_write_nonblock.rb
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
75
- - examples/connection/authentication_failure.rb
76
- - examples/connection/automatic_recovery_with_basic_get.rb
77
- - examples/connection/automatic_recovery_with_client_named_queues.rb
78
- - examples/connection/automatic_recovery_with_multiple_consumers.rb
79
- - examples/connection/automatic_recovery_with_republishing.rb
80
- - examples/connection/automatic_recovery_with_server_named_queues.rb
81
- - examples/connection/channel_level_exception.rb
82
- - examples/connection/disabled_automatic_recovery.rb
83
- - examples/connection/heartbeat.rb
84
- - examples/connection/manually_reconnecting_consumer.rb
85
- - examples/connection/manually_reconnecting_publisher.rb
86
- - examples/connection/unknown_host.rb
87
- - examples/consumers/high_and_low_priority.rb
88
- - examples/guides/exchanges/direct_exchange_routing.rb
89
- - examples/guides/exchanges/fanout_exchange_routing.rb
90
- - examples/guides/exchanges/headers_exchange_routing.rb
91
- - examples/guides/exchanges/mandatory_messages.rb
92
- - examples/guides/extensions/alternate_exchange.rb
93
- - examples/guides/extensions/basic_nack.rb
94
- - examples/guides/extensions/connection_blocked.rb
95
- - examples/guides/extensions/consumer_cancellation_notification.rb
96
- - examples/guides/extensions/dead_letter_exchange.rb
97
- - examples/guides/extensions/exchange_to_exchange_bindings.rb
98
- - examples/guides/extensions/per_message_ttl.rb
99
- - examples/guides/extensions/per_queue_message_ttl.rb
100
- - examples/guides/extensions/publisher_confirms.rb
101
- - examples/guides/extensions/queue_lease.rb
102
- - examples/guides/extensions/sender_selected_distribution.rb
103
- - examples/guides/getting_started/blabbr.rb
104
- - examples/guides/getting_started/hello_world.rb
105
- - examples/guides/getting_started/weathr.rb
106
- - examples/guides/queues/one_off_consumer.rb
107
- - examples/guides/queues/redeliveries.rb
108
67
  - lib/amq/protocol/extensions.rb
109
68
  - lib/bunny.rb
110
69
  - lib/bunny/authentication/credentials_encoder.rb
@@ -142,8 +101,6 @@ files:
142
101
  - lib/bunny/transport.rb
143
102
  - lib/bunny/version.rb
144
103
  - lib/bunny/versioned_delivery_tag.rb
145
- - profiling/basic_publish/with_4K_messages.rb
146
- - repl
147
104
  - spec/config/enabled_plugins
148
105
  - spec/config/rabbitmq.conf
149
106
  - spec/higher_level_api/integration/basic_ack_spec.rb
@@ -191,6 +148,7 @@ files:
191
148
  - spec/issues/issue224_spec.rb
192
149
  - spec/issues/issue465_spec.rb
193
150
  - spec/issues/issue549_spec.rb
151
+ - spec/issues/issue609_spec.rb
194
152
  - spec/issues/issue78_spec.rb
195
153
  - spec/issues/issue83_spec.rb
196
154
  - spec/issues/issue97_attachment.json
@@ -205,15 +163,6 @@ files:
205
163
  - spec/stress/concurrent_publishers_stress_spec.rb
206
164
  - spec/stress/connection_open_close_spec.rb
207
165
  - 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
211
- - spec/tls/client_key.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
216
- - spec/tls/server_key.pem
217
166
  - spec/toxiproxy_helper.rb
218
167
  - spec/unit/bunny_spec.rb
219
168
  - spec/unit/concurrent/atomic_fixnum_spec.rb
@@ -226,7 +175,7 @@ homepage: http://rubybunny.info
226
175
  licenses:
227
176
  - MIT
228
177
  metadata: {}
229
- post_install_message:
178
+ post_install_message:
230
179
  rdoc_options: []
231
180
  require_paths:
232
181
  - lib
@@ -241,8 +190,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
241
190
  - !ruby/object:Gem::Version
242
191
  version: '0'
243
192
  requirements: []
244
- rubygems_version: 3.1.2
245
- signing_key:
193
+ rubygems_version: 3.1.4
194
+ signing_key:
246
195
  specification_version: 4
247
196
  summary: Popular easy to use Ruby client for RabbitMQ
248
197
  test_files:
@@ -293,6 +242,7 @@ test_files:
293
242
  - spec/issues/issue224_spec.rb
294
243
  - spec/issues/issue465_spec.rb
295
244
  - spec/issues/issue549_spec.rb
245
+ - spec/issues/issue609_spec.rb
296
246
  - spec/issues/issue78_spec.rb
297
247
  - spec/issues/issue83_spec.rb
298
248
  - spec/issues/issue97_attachment.json
@@ -307,15 +257,6 @@ test_files:
307
257
  - spec/stress/concurrent_publishers_stress_spec.rb
308
258
  - spec/stress/connection_open_close_spec.rb
309
259
  - 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
313
- - spec/tls/client_key.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
318
- - spec/tls/server_key.pem
319
260
  - spec/toxiproxy_helper.rb
320
261
  - spec/unit/bunny_spec.rb
321
262
  - spec/unit/concurrent/atomic_fixnum_spec.rb
@@ -1,18 +0,0 @@
1
- ## Does This Really Belong to GitHub issues?
2
-
3
- If you find a bug you understand well, poor default, incorrect or unclear piece of documentation,
4
- or missing feature, please [file an
5
- issue](http://github.com/ruby-amqp/bunny/issues) on GitHub.
6
-
7
- Please use [Bunny's mailing list](http://groups.google.com/group/ruby-amqp) for questions,
8
- investigations, and discussions. GitHub issues should be used for specific, well understood, actionable
9
- maintainers and contributors can work on.
10
-
11
- When filing an issue, please specify
12
-
13
- * Which Bunny and RabbitMQ versions are used
14
- * Recent RabbitMQ log file contents
15
- * Full exception stack traces
16
- * Steps to reproduce or a failing test case
17
-
18
- This would greatly help the maintainers help you.
data/.gitignore DELETED
@@ -1,28 +0,0 @@
1
- .DS_Store
2
- .*.swp
3
- *.class
4
- *.rbc
5
- *.gem
6
- /doc/
7
- .yardoc
8
- .rvmrc
9
- Gemfile.lock
10
- .rbx/*
11
- .tags
12
- .tags_sorted_by_file
13
- .Apple*
14
- /bin/*
15
- .bundle/*
16
- vendor/*
17
- playground/*
18
- *.org
19
- repl-*
20
- debug/*
21
- *.dump
22
- deploy.docs.sh
23
- .ruby-version
24
- .idea
25
- *.srl
26
- spec/tls/*.pem
27
- spec/tls/*.pem~
28
- spec/tls/*.p12
data/.rspec DELETED
@@ -1 +0,0 @@
1
- -c -fp
data/.travis.yml DELETED
@@ -1,33 +0,0 @@
1
- dist: bionic
2
- language: ruby
3
- bundler_args: --without development
4
- cache: bundler
5
- before_install:
6
- - gem install bundler
7
- before_script:
8
- - "./bin/ci/install_on_debian.sh"
9
- - until sudo lsof -i:5672; do echo "Waiting for RabbitMQ to start..."; sleep 1; done
10
- - "./bin/ci/before_build.sh"
11
- script: "bundle exec rake integration_without_recovery"
12
- rvm:
13
- - ruby-head
14
- - "2.7.1"
15
- - "2.6.6"
16
- - "2.5.8"
17
- - "2.4.10"
18
- - "2.3.8"
19
- notifications:
20
- email: michael@rabbitmq.com
21
- services:
22
- - rabbitmq
23
- branches:
24
- only:
25
- - master
26
- - 2.14.x-stable
27
- - 2.13.x-stable
28
- env:
29
- - CI=true
30
- matrix:
31
- allow_failures:
32
- rvm:
33
- - ruby-head
data/.yardopts DELETED
@@ -1,8 +0,0 @@
1
- --no-private
2
- --protected
3
- --markup="markdown" lib/**/*.rb
4
- --main README.md
5
- --hide-tag todo
6
- -
7
- LICENSE
8
- ChangeLog.md
data/CONTRIBUTING.md DELETED
@@ -1,132 +0,0 @@
1
- ## Overview
2
-
3
- This project **does not** use GitHub issues for questions, investigations, discussions, and so on.
4
- Issues are appropriate for something specific enough for a maintainer or contributor to work on:
5
-
6
- * There should be enough information to reproduce the behavior observed in a reasonable amount of time
7
- * It should be reasonably clear why the behavior should be changed and why this cannot or should not be addressed
8
- in application code, a separate library and so on
9
-
10
- All issues that do not satisfy the above properties belong to the [Ruby RabbitMQ clients mailing list](http://groups.google.com/forum/#!forum/ruby-amqp). Pull request that do not satisfy them have a high chance
11
- of being closed.
12
-
13
- ## Submitting a Pull Request
14
-
15
- Please read the sections below to get an idea about how to run Bunny test suites first. Successfully
16
- running all tests, at least with `CI` environment variable exported to `true`, is an important
17
- first step for any contributor.
18
-
19
- Once you have a passing test suite, create a branch and make your changes on it.
20
- When you are done with your changes and all
21
- 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.
22
-
23
- ## Pre-requisites
24
-
25
- The project uses Bundler for dependency management and requires RabbitMQ `3.5+` to be running
26
- locally with the `rabbitmq-management` and `rabbitmq_consistent_hash_exchange` plugins enabled.
27
-
28
- ### Running the Specs
29
-
30
- The specs require RabbitMQ to be running locally with a specific set of virtual hosts
31
- and users. RabbitMQ can be provisioned and started any way that's convenient to you
32
- as long as it has a suitable TLS keys configuration and management plugin enabled.
33
- Make sure you have a recent version of RabbitMQ (> `3.7.10`).
34
-
35
- The test suite can either use a locally available RabbitMQ node ([generic binary builds](http://www.rabbitmq.com/install-generic-unix.html)
36
- are an option that works well) or by running a RabbitMQ server in a Docker container.
37
-
38
- ### Using a locally installed RabbitMQ node
39
-
40
- It is possible to start a local RabbitMQ node from the repository root. It is not necessarily
41
- optimal but can be a good starting point but is a useful example:
42
-
43
- ```
44
- RABBITMQ_NODENAME=bunny RABBITMQ_CONFIG_FILE=./spec/config/rabbitmq.conf RABBITMQ_ENABLED_PLUGINS_FILE=./spec/config/enabled_plugins rabbitmq-server
45
- ```
46
-
47
- The specs need the RabbitMQ management plugin to be enabled and include TLS connectivity tests,
48
- so the node must be configured to use a [certificate and key pair](http://www.rabbitmq.com/ssl.html#certificates-and-keys).
49
- The config and enabled plugin files in the spec/config directory take care of that
50
- but certificates must be provisioned locally. By default there's a set of CA, server, and client certificates pre-generated at `spec/tls`.
51
-
52
- The `BUNNY_CERTIFICATE_DIR` environment variable can be used to a directory containing a CA certificate
53
- and a certificate/key pair to be used by the server. The directory can be generated using
54
- [tls-gen](https://github.com/michaelklishin/tls-gen)'s basic profile. This option is recommended.
55
-
56
- `BUNNY_RABBITMQ_HOSTNAME` can be used to override the expected server hostname for [peer verification](http://www.rabbitmq.com/ssl.html#peer-verification) in the TLS test suite:
57
-
58
- ```
59
- BUNNY_CERTIFICATE_DIR="/path/to/tls-gen/basic/result" BUNNY_RABBITMQ_HOSTNAME="mayflower" bundle exec rspec
60
-
61
- ```
62
-
63
- Certificates can be generated with [tls-gen](https://github.com/michaelklishin/tls-gen)'s basic profile.
64
- In that case they include a Subject Alternative Name of `localhost` for improved portability.
65
-
66
-
67
- ### Node Setup
68
-
69
- There is also a script that preconfigured the node for Bunny tests. It is sufficient to run
70
- it once but if RabbitMQ is reset it has to be executed again:
71
-
72
- ```
73
- RABBITMQ_NODENAME=bunny ./bin/ci/before_build
74
- ```
75
-
76
- The script uses `rabbitmqctl` and `rabbitmq-plugins`
77
- to set up RabbitMQ in a way that Bunny test suites expect. Two environment variables,
78
- `RABBITMQCTL` and `RABBITMQ_PLUGINS`, are available to control what `rabbitmqctl` and
79
- `rabbitmq-plugins` commands will be used. By default they are taken from `PATH`
80
- and prefixed with `sudo`.
81
-
82
- And then run the core integration suite:
83
-
84
- ```
85
- RABBITMQ_NODENAME=bunny CI=true rspec
86
- ```
87
-
88
- #### Running a RabbitMQ server in a Docker container
89
-
90
- First off you have to [install Docker Compose](https://docker.github.io/compose/install/) (and by proxy Docker).
91
- Version >= 1.6.0+ is required for compose version 2 syntax.
92
-
93
- After those have been installed (and the `docker-compose` command is available on your command line path), run
94
-
95
- ```
96
- docker-compose build && docker-compose run --service-ports rabbitmq
97
- ```
98
-
99
- The first time you do this, it will take some time, since it has to download everything it needs
100
- to build the Docker image.
101
-
102
- The RabbitMQ server will run in the foreground in the terminal where you started it. You can stop
103
- it by pressing CTRL+C. If you want to run it in the background, pass `-d` to `docker-compose`.
104
-
105
- ### Toxiproxy
106
-
107
- If Toxiproxy is running locally on standard ports or started via Docker:
108
-
109
- ```
110
- docker-compose run --service-ports toxiproxy
111
- ```
112
-
113
- then Bunny will run additional resiliency tests.
114
-
115
- ### Running Test Suites
116
-
117
- Prior to running the tests, configure the RabbitMQ permissions by running `./bin/ci/before_build`
118
- if you have RabbitMQ locally installed, if you are running RabbitMQ via Docker as above this step
119
- is not required as the setup is baked in.
120
-
121
- Make sure you have those two installed and then run integration tests:
122
-
123
- bundle install
124
- rake integration
125
-
126
- It is possible to run all tests:
127
-
128
- bundle exec rspec
129
-
130
- It is possible to run only integration and regression tests but exclude unit and stress tests:
131
-
132
- CI=true bundle exec rspec spec/higher_level_api/ spec/lower_level_api spec/issues spec/higher_level_api/integration/connection_recovery_spec.rb