bunny 2.15.0 → 2.19.0

Sign up to get free protection for your applications and to get access to all the features.
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