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.
- checksums.yaml +4 -4
- data/README.md +30 -12
- data/lib/bunny/channel.rb +2 -2
- data/lib/bunny/reader_loop.rb +11 -11
- data/lib/bunny/session.rb +32 -9
- data/lib/bunny/transport.rb +12 -11
- data/lib/bunny/version.rb +1 -1
- data/spec/higher_level_api/integration/basic_consume_spec.rb +14 -6
- data/spec/higher_level_api/integration/connection_spec.rb +26 -0
- data/spec/higher_level_api/integration/tls_connection_spec.rb +25 -32
- data/spec/issues/issue609_spec.rb +84 -0
- data/spec/lower_level_api/integration/basic_cancel_spec.rb +1 -1
- data/spec/lower_level_api/integration/basic_consume_spec.rb +8 -8
- metadata +28 -87
- data/.github/ISSUE_TEMPLATE.md +0 -18
- data/.gitignore +0 -28
- data/.rspec +0 -1
- data/.travis.yml +0 -33
- data/.yardopts +0 -8
- data/CONTRIBUTING.md +0 -132
- data/ChangeLog.md +0 -2084
- data/Gemfile +0 -55
- data/LICENSE +0 -21
- data/Rakefile +0 -54
- data/benchmarks/basic_publish/with_128K_messages.rb +0 -35
- data/benchmarks/basic_publish/with_1k_messages.rb +0 -35
- data/benchmarks/basic_publish/with_4K_messages.rb +0 -35
- data/benchmarks/basic_publish/with_64K_messages.rb +0 -35
- data/benchmarks/channel_open.rb +0 -28
- data/benchmarks/mutex_and_monitor.rb +0 -42
- data/benchmarks/queue_declare.rb +0 -29
- data/benchmarks/queue_declare_and_bind.rb +0 -29
- data/benchmarks/queue_declare_bind_and_delete.rb +0 -29
- data/benchmarks/synchronized_sorted_set.rb +0 -53
- data/benchmarks/write_vs_write_nonblock.rb +0 -49
- data/bunny.gemspec +0 -34
- data/docker/Dockerfile +0 -24
- data/docker/apt/preferences.d/erlang +0 -3
- data/docker/apt/sources.list.d/bintray.rabbitmq.list +0 -2
- data/docker/docker-entrypoint.sh +0 -26
- data/docker/rabbitmq.conf +0 -29
- data/docker-compose.yml +0 -28
- data/examples/connection/authentication_failure.rb +0 -16
- data/examples/connection/automatic_recovery_with_basic_get.rb +0 -40
- data/examples/connection/automatic_recovery_with_client_named_queues.rb +0 -36
- data/examples/connection/automatic_recovery_with_multiple_consumers.rb +0 -46
- data/examples/connection/automatic_recovery_with_republishing.rb +0 -109
- data/examples/connection/automatic_recovery_with_server_named_queues.rb +0 -35
- data/examples/connection/channel_level_exception.rb +0 -27
- data/examples/connection/disabled_automatic_recovery.rb +0 -34
- data/examples/connection/heartbeat.rb +0 -17
- data/examples/connection/manually_reconnecting_consumer.rb +0 -23
- data/examples/connection/manually_reconnecting_publisher.rb +0 -28
- data/examples/connection/unknown_host.rb +0 -16
- data/examples/consumers/high_and_low_priority.rb +0 -50
- data/examples/guides/exchanges/direct_exchange_routing.rb +0 -36
- data/examples/guides/exchanges/fanout_exchange_routing.rb +0 -28
- data/examples/guides/exchanges/headers_exchange_routing.rb +0 -31
- data/examples/guides/exchanges/mandatory_messages.rb +0 -30
- data/examples/guides/extensions/alternate_exchange.rb +0 -30
- data/examples/guides/extensions/basic_nack.rb +0 -33
- data/examples/guides/extensions/connection_blocked.rb +0 -35
- data/examples/guides/extensions/consumer_cancellation_notification.rb +0 -39
- data/examples/guides/extensions/dead_letter_exchange.rb +0 -32
- data/examples/guides/extensions/exchange_to_exchange_bindings.rb +0 -29
- data/examples/guides/extensions/per_message_ttl.rb +0 -36
- data/examples/guides/extensions/per_queue_message_ttl.rb +0 -36
- data/examples/guides/extensions/publisher_confirms.rb +0 -28
- data/examples/guides/extensions/queue_lease.rb +0 -26
- data/examples/guides/extensions/sender_selected_distribution.rb +0 -32
- data/examples/guides/getting_started/blabbr.rb +0 -27
- data/examples/guides/getting_started/hello_world.rb +0 -22
- data/examples/guides/getting_started/weathr.rb +0 -49
- data/examples/guides/queues/one_off_consumer.rb +0 -25
- data/examples/guides/queues/redeliveries.rb +0 -81
- data/profiling/basic_publish/with_4K_messages.rb +0 -33
- data/repl +0 -3
- data/spec/tls/ca_certificate.pem +0 -29
- data/spec/tls/ca_key.pem +0 -52
- data/spec/tls/client_certificate.pem +0 -29
- data/spec/tls/client_key.pem +0 -51
- data/spec/tls/generate-server-cert.sh +0 -8
- data/spec/tls/server-openssl.cnf +0 -10
- data/spec/tls/server.csr +0 -16
- data/spec/tls/server_certificate.pem +0 -29
- 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", : | 
| 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", : | 
| 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("", : | 
| 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("", : | 
| 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", : | 
| 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, : | 
| 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, : | 
| 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", : | 
| 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, : | 
| 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. | 
| 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:  | 
| 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. | 
| 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
         | 
    
        data/.github/ISSUE_TEMPLATE.md
    DELETED
    
    | @@ -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
    
    
    
        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
         |