bunny 2.7.4 → 2.22.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 (156) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +61 -35
  3. data/lib/bunny/channel.rb +186 -50
  4. data/lib/bunny/channel_id_allocator.rb +3 -1
  5. data/lib/bunny/consumer.rb +2 -2
  6. data/lib/bunny/consumer_work_pool.rb +2 -1
  7. data/lib/bunny/cruby/socket.rb +3 -0
  8. data/lib/bunny/cruby/ssl_socket.rb +6 -1
  9. data/lib/bunny/delivery_info.rb +1 -1
  10. data/lib/bunny/heartbeat_sender.rb +2 -1
  11. data/lib/bunny/jruby/ssl_socket.rb +5 -0
  12. data/lib/bunny/queue.rb +36 -8
  13. data/lib/bunny/reader_loop.rb +22 -10
  14. data/lib/bunny/session.rb +152 -65
  15. data/lib/bunny/test_kit.rb +14 -0
  16. data/lib/bunny/transport.rb +132 -49
  17. data/lib/bunny/version.rb +1 -1
  18. data/lib/bunny.rb +45 -4
  19. metadata +37 -225
  20. data/.github/ISSUE_TEMPLATE.md +0 -18
  21. data/.gitignore +0 -28
  22. data/.rspec +0 -1
  23. data/.travis.yml +0 -20
  24. data/.yardopts +0 -8
  25. data/CONTRIBUTING.md +0 -111
  26. data/ChangeLog.md +0 -1831
  27. data/Gemfile +0 -53
  28. data/LICENSE +0 -21
  29. data/Rakefile +0 -46
  30. data/benchmarks/basic_publish/with_128K_messages.rb +0 -35
  31. data/benchmarks/basic_publish/with_1k_messages.rb +0 -35
  32. data/benchmarks/basic_publish/with_4K_messages.rb +0 -35
  33. data/benchmarks/basic_publish/with_64K_messages.rb +0 -35
  34. data/benchmarks/channel_open.rb +0 -28
  35. data/benchmarks/mutex_and_monitor.rb +0 -42
  36. data/benchmarks/queue_declare.rb +0 -29
  37. data/benchmarks/queue_declare_and_bind.rb +0 -29
  38. data/benchmarks/queue_declare_bind_and_delete.rb +0 -29
  39. data/benchmarks/synchronized_sorted_set.rb +0 -53
  40. data/benchmarks/write_vs_write_nonblock.rb +0 -49
  41. data/bin/ci/before_build +0 -46
  42. data/bunny.gemspec +0 -35
  43. data/docker/Dockerfile +0 -16
  44. data/docker/docker-entrypoint.sh +0 -37
  45. data/docker-compose.yml +0 -18
  46. data/examples/connection/authentication_failure.rb +0 -16
  47. data/examples/connection/automatic_recovery_with_basic_get.rb +0 -40
  48. data/examples/connection/automatic_recovery_with_client_named_queues.rb +0 -36
  49. data/examples/connection/automatic_recovery_with_multiple_consumers.rb +0 -46
  50. data/examples/connection/automatic_recovery_with_republishing.rb +0 -109
  51. data/examples/connection/automatic_recovery_with_server_named_queues.rb +0 -35
  52. data/examples/connection/channel_level_exception.rb +0 -27
  53. data/examples/connection/disabled_automatic_recovery.rb +0 -34
  54. data/examples/connection/heartbeat.rb +0 -17
  55. data/examples/connection/manually_reconnecting_consumer.rb +0 -23
  56. data/examples/connection/manually_reconnecting_publisher.rb +0 -28
  57. data/examples/connection/unknown_host.rb +0 -16
  58. data/examples/consumers/high_and_low_priority.rb +0 -50
  59. data/examples/guides/exchanges/direct_exchange_routing.rb +0 -36
  60. data/examples/guides/exchanges/fanout_exchange_routing.rb +0 -28
  61. data/examples/guides/exchanges/headers_exchange_routing.rb +0 -31
  62. data/examples/guides/exchanges/mandatory_messages.rb +0 -30
  63. data/examples/guides/extensions/alternate_exchange.rb +0 -30
  64. data/examples/guides/extensions/basic_nack.rb +0 -33
  65. data/examples/guides/extensions/connection_blocked.rb +0 -35
  66. data/examples/guides/extensions/consumer_cancellation_notification.rb +0 -39
  67. data/examples/guides/extensions/dead_letter_exchange.rb +0 -32
  68. data/examples/guides/extensions/exchange_to_exchange_bindings.rb +0 -29
  69. data/examples/guides/extensions/per_message_ttl.rb +0 -36
  70. data/examples/guides/extensions/per_queue_message_ttl.rb +0 -36
  71. data/examples/guides/extensions/publisher_confirms.rb +0 -28
  72. data/examples/guides/extensions/queue_lease.rb +0 -26
  73. data/examples/guides/extensions/sender_selected_distribution.rb +0 -32
  74. data/examples/guides/getting_started/blabbr.rb +0 -27
  75. data/examples/guides/getting_started/hello_world.rb +0 -22
  76. data/examples/guides/getting_started/weathr.rb +0 -49
  77. data/examples/guides/queues/one_off_consumer.rb +0 -25
  78. data/examples/guides/queues/redeliveries.rb +0 -81
  79. data/profiling/basic_publish/with_4K_messages.rb +0 -33
  80. data/repl +0 -3
  81. data/spec/config/enabled_plugins +0 -1
  82. data/spec/config/rabbitmq.config +0 -19
  83. data/spec/higher_level_api/integration/basic_ack_spec.rb +0 -230
  84. data/spec/higher_level_api/integration/basic_cancel_spec.rb +0 -142
  85. data/spec/higher_level_api/integration/basic_consume_spec.rb +0 -349
  86. data/spec/higher_level_api/integration/basic_consume_with_objects_spec.rb +0 -54
  87. data/spec/higher_level_api/integration/basic_get_spec.rb +0 -80
  88. data/spec/higher_level_api/integration/basic_nack_spec.rb +0 -82
  89. data/spec/higher_level_api/integration/basic_publish_spec.rb +0 -74
  90. data/spec/higher_level_api/integration/basic_qos_spec.rb +0 -57
  91. data/spec/higher_level_api/integration/basic_reject_spec.rb +0 -152
  92. data/spec/higher_level_api/integration/basic_return_spec.rb +0 -33
  93. data/spec/higher_level_api/integration/channel_close_spec.rb +0 -25
  94. data/spec/higher_level_api/integration/channel_open_spec.rb +0 -57
  95. data/spec/higher_level_api/integration/connection_recovery_spec.rb +0 -471
  96. data/spec/higher_level_api/integration/connection_spec.rb +0 -559
  97. data/spec/higher_level_api/integration/connection_stop_spec.rb +0 -83
  98. data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +0 -128
  99. data/spec/higher_level_api/integration/dead_lettering_spec.rb +0 -75
  100. data/spec/higher_level_api/integration/exchange_bind_spec.rb +0 -31
  101. data/spec/higher_level_api/integration/exchange_declare_spec.rb +0 -237
  102. data/spec/higher_level_api/integration/exchange_delete_spec.rb +0 -105
  103. data/spec/higher_level_api/integration/exchange_unbind_spec.rb +0 -40
  104. data/spec/higher_level_api/integration/exclusive_queue_spec.rb +0 -28
  105. data/spec/higher_level_api/integration/heartbeat_spec.rb +0 -49
  106. data/spec/higher_level_api/integration/merry_go_round_spec.rb +0 -85
  107. data/spec/higher_level_api/integration/message_properties_access_spec.rb +0 -95
  108. data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +0 -24
  109. data/spec/higher_level_api/integration/publisher_confirms_spec.rb +0 -191
  110. data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +0 -87
  111. data/spec/higher_level_api/integration/queue_bind_spec.rb +0 -109
  112. data/spec/higher_level_api/integration/queue_declare_spec.rb +0 -221
  113. data/spec/higher_level_api/integration/queue_delete_spec.rb +0 -41
  114. data/spec/higher_level_api/integration/queue_purge_spec.rb +0 -30
  115. data/spec/higher_level_api/integration/queue_unbind_spec.rb +0 -54
  116. data/spec/higher_level_api/integration/read_only_consumer_spec.rb +0 -60
  117. data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +0 -36
  118. data/spec/higher_level_api/integration/tls_connection_spec.rb +0 -222
  119. data/spec/higher_level_api/integration/tx_commit_spec.rb +0 -21
  120. data/spec/higher_level_api/integration/tx_rollback_spec.rb +0 -21
  121. data/spec/higher_level_api/integration/with_channel_spec.rb +0 -25
  122. data/spec/issues/issue100_spec.rb +0 -42
  123. data/spec/issues/issue141_spec.rb +0 -43
  124. data/spec/issues/issue202_spec.rb +0 -15
  125. data/spec/issues/issue224_spec.rb +0 -40
  126. data/spec/issues/issue465_spec.rb +0 -32
  127. data/spec/issues/issue78_spec.rb +0 -72
  128. data/spec/issues/issue83_spec.rb +0 -30
  129. data/spec/issues/issue97_attachment.json +0 -1
  130. data/spec/issues/issue97_spec.rb +0 -175
  131. data/spec/lower_level_api/integration/basic_cancel_spec.rb +0 -83
  132. data/spec/lower_level_api/integration/basic_consume_spec.rb +0 -99
  133. data/spec/spec_helper.rb +0 -51
  134. data/spec/stress/channel_close_stress_spec.rb +0 -64
  135. data/spec/stress/channel_open_stress_spec.rb +0 -84
  136. data/spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb +0 -28
  137. data/spec/stress/concurrent_consumers_stress_spec.rb +0 -71
  138. data/spec/stress/concurrent_publishers_stress_spec.rb +0 -54
  139. data/spec/stress/connection_open_close_spec.rb +0 -52
  140. data/spec/stress/long_running_consumer_spec.rb +0 -84
  141. data/spec/tls/ca_certificate.pem +0 -29
  142. data/spec/tls/ca_key.pem +0 -52
  143. data/spec/tls/client_certificate.pem +0 -29
  144. data/spec/tls/client_key.pem +0 -51
  145. data/spec/tls/generate-server-cert.sh +0 -8
  146. data/spec/tls/server-openssl.cnf +0 -10
  147. data/spec/tls/server.csr +0 -16
  148. data/spec/tls/server_certificate.pem +0 -29
  149. data/spec/tls/server_key.pem +0 -51
  150. data/spec/unit/bunny_spec.rb +0 -15
  151. data/spec/unit/concurrent/atomic_fixnum_spec.rb +0 -35
  152. data/spec/unit/concurrent/condition_spec.rb +0 -82
  153. data/spec/unit/concurrent/linked_continuation_queue_spec.rb +0 -35
  154. data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +0 -73
  155. data/spec/unit/exchange_recovery_spec.rb +0 -39
  156. data/spec/unit/version_delivery_tag_spec.rb +0 -28
@@ -1,52 +0,0 @@
1
- require "spec_helper"
2
-
3
- unless defined?(JRUBY_VERSION) && !ENV["FORCE_JRUBY_RUN"]
4
- describe Bunny::Session do
5
- # creating thousands of connections means creating
6
- # twice as many threads and this won't fly with the JVM
7
- # in CI containers. MK.
8
- n = if defined?(JRUBY_VERSION)
9
- 250
10
- else
11
- 2500
12
- end
13
-
14
- n.times do |i|
15
- it "can be closed (automatic recovery disabled, take #{i})" do
16
- c = Bunny.new(automatically_recover: false)
17
- c.start
18
- ch = c.create_channel
19
-
20
- expect(c).to be_connected
21
- c.stop
22
- expect(c).to be_closed
23
- end
24
- end
25
-
26
- n.times do |i|
27
- it "can be closed (automatic recovery enabled, take #{i})" do
28
- c = Bunny.new(automatically_recover: true)
29
- c.start
30
- ch = c.create_channel
31
-
32
- expect(c).to be_connected
33
- c.stop
34
- expect(c).to be_closed
35
- end
36
- end
37
-
38
- context "in the single threaded mode" do
39
- n.times do |i|
40
- it "can be closed (single threaded mode, take #{i})" do
41
- c = Bunny.new(automatically_recover: false, threaded: false)
42
- c.start
43
- ch = c.create_channel
44
-
45
- expect(c).to be_connected
46
- c.stop
47
- expect(c).to be_closed
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,84 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require "spec_helper"
3
-
4
- unless ENV["CI"]
5
- require "bunny/concurrent/condition"
6
- require "bunny/test_kit"
7
-
8
- describe "Long running [relatively to heartbeat interval] consumer that never publishes" do
9
- before :all do
10
- @connection = Bunny.new(username: "bunny_gem",
11
- password: "bunny_password", vhost: "bunny_testbed",
12
- automatic_recovery: false, heartbeat_interval: 6)
13
- @connection.start
14
- end
15
-
16
- after :all do
17
- @connection.close
18
- end
19
-
20
- let(:target) { 256 * 1024 * 1024 }
21
- let(:queue) { "bunny.stress.long_running_consumer.#{Time.now.to_i}" }
22
-
23
- let(:rate) { 50 }
24
- let(:s) { 4.0 }
25
-
26
-
27
-
28
- it "does not skip heartbeats" do
29
- finished = Bunny::Concurrent::Condition.new
30
-
31
- ct = Thread.new do
32
- t = 0
33
- ch = @connection.create_channel(nil, 6)
34
- begin
35
- q = ch.queue(queue, exclusive: true)
36
-
37
- q.bind("amq.fanout").subscribe do |_, _, payload|
38
- t += payload.bytesize
39
-
40
- if t >= target
41
- puts "Hit the target, done with the test..."
42
-
43
- finished.notify_all
44
- else
45
- puts "Consumed #{(t.to_f / target.to_f).round(3) * 100}% of data"
46
- end
47
- end
48
- rescue Interrupt => e
49
- ch.maybe_kill_consumer_work_pool!
50
- ch.close rescue nil
51
- end
52
- end
53
- ct.abort_on_exception = true
54
-
55
- pt = Thread.new do
56
- t = 0
57
- ch = @connection.create_channel
58
- begin
59
- x = ch.fanout("amq.fanout")
60
-
61
- loop do
62
- break if t >= target
63
-
64
- rate.times do |i|
65
- msg = Bunny::TestKit.message_in_kb(96, 8192, i)
66
- x.publish(msg)
67
- t += msg.bytesize
68
- end
69
-
70
- sleep (s * rand)
71
- end
72
- rescue Interrupt => e
73
- ch.close rescue nil
74
- end
75
- end
76
- pt.abort_on_exception = true
77
-
78
- finished.wait
79
-
80
- ct.raise Interrupt.new
81
- pt.raise Interrupt.new
82
- end
83
- end
84
- end
@@ -1,29 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIFAjCCAuqgAwIBAgIJAOh5ofB2iC1IMA0GCSqGSIb3DQEBCwUAMDExIDAeBgNV
3
- BAMMF1RMU0dlblNlbGZTaWduZWR0Um9vdENBMQ0wCwYDVQQHDAQkJCQkMB4XDTE3
4
- MDcxMjE3MDUyNFoXDTI3MDcxMDE3MDUyNFowMTEgMB4GA1UEAwwXVExTR2VuU2Vs
5
- ZlNpZ25lZHRSb290Q0ExDTALBgNVBAcMBCQkJCQwggIiMA0GCSqGSIb3DQEBAQUA
6
- A4ICDwAwggIKAoICAQDLlcfVD3JI34j3akZEcw9A6Q3ra7wCXiBuK6i+QcB0Gpp/
7
- AdQVyEwuC8DVwqnnCLoR0KKU7Iuhjwqk1aXzIcZAy42TiEtwCTJ1Rajlp6hjonWi
8
- EYp+HFm6UZdeM94bV5khV0+vwE/MDcKpXzKYJlbYOv+RSPdizWb7m+tRnyQf79M8
9
- wL8nx1CJbokV/fgmauRnbOkpAWSmq8MbuthdQHLNVAnHV4i4SEBB8KBiB1Rrxu+O
10
- serH1KB+8ABLGUpLM/0rtUFlgo5waysNHUUvqYIcXff7yXNsNblZM8YYnhAK0rzX
11
- y6MdqSgUHycQYCCJ7nuIVagpxLKSkJTJtH9anDzo0Y5c/w6huCxsnhbrBwg3FHga
12
- sRPzuouIROH09yKbrOmbG7wmU3mWyB3bhVe+YmivQMq55QtHo3C/gBVsvsrjH/ql
13
- ecxYa8aPRpeJU4eUjuvywY9200C3SdOyP+iM/yE9r3RG/B2qPhB6PqG/3SXkURGi
14
- 3B2bX1nD7VdDPbfO14j0m0rHBTnu3Ieao+KaAMpd6gWrPkOHRF87CYF4NOtqjFr8
15
- rNe6cxR3Cy/h5YH7DYpS8VgIjMTkIEEo4sTDnQsFTE1fiPjzsfUl0cwSAPbIR4Hb
16
- Sp/kt5zWSlV89u9CbIpGvvnKZ0fUiaVW9e3rjowPtBjcCSARn4tIIOftjVEmmwID
17
- AQABox0wGzAMBgNVHRMEBTADAQH/MAsGA1UdDwQEAwIBBjANBgkqhkiG9w0BAQsF
18
- AAOCAgEAUrza43ghwOUIuqbQLAfosr/9ucXnTA84Fcyp27bKbLme2Vfc9iRLwjib
19
- hd9D1MygCSjxW5szWs/pwC486cGjWlUY5y4g5fS74S4hLvKW8jVBKuF3i0J8kNkO
20
- 7L2XZJb+0rQcFWCOh8dAJpBJqv8dH0xqRga9mVecHB+PtQY0G0qRkdCTCiIKr8gF
21
- yhzoq8Rmo+H4yD8OfbMJHSS4vcEFgS6KhVLqvrGQ1cnfjWjaDeSMalHcnUxeYydV
22
- dPAdi+/4k8jtjXTEAxTlVhsRwUJi4+jF43X3jNZ1dbrZV5SATnxJD2ygDjHH+Xw3
23
- R97bARIgvXWmDHvIlxdIpmDJws3AvSThofI2uhTLSg5JLmRNZCjhcZc9EsnAxxAV
24
- LKLG85Fp1sGfqvPeT+n6wfqNXyZ6X3pPXoR412uOdD3brKWfNM1rjqqdm6PWqxg0
25
- wA3Axv/ZbtFWYcBVbePmA8SQATPnuAWYAueQ6R3vQwMFhf+KMt+GBQGt2gsIN4Gb
26
- FbtSGLH5dOz9ap2zjSL5QS7ZRt2O1d4s5zEdRBadA19fr2hTA8KX4tvmoXhc2Iav
27
- lmnAW1MDAGkhzIQmSfxM0N7rr4fNrqTHVv6NjUjeHxi483RxVXL6ZWu2Kb7LCVzs
28
- pHlumeVpCafYGiBHt75SRFkPsn8HA+g8PYfSXCgLrA6tW3zMj7U=
29
- -----END CERTIFICATE-----
data/spec/tls/ca_key.pem DELETED
@@ -1,52 +0,0 @@
1
- -----BEGIN PRIVATE KEY-----
2
- MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQDLlcfVD3JI34j3
3
- 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
- 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
- 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
- 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
- HUUvqYIcXff7yXNsNblZM8YYnhAK0rzXy6MdqSgUHycQYCCJ7nuIVagpxLKSkJTJ
8
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- G42JUVSeT0//MDrWiuoPpG4VkcoBhc8rDlOZHClJH5PcvOZqOzuVsNMTOlTTTE/I
16
- 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
- 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
- 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
- 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
- ydIruM49vlZJ2VnLSDSwvK/sBca+TJ/1gYs7TBTpuDqEjuLGHptZlVSSHFGBHq5t
21
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- +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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Ch4SD428LE6qm25mKumfAbMjsDx2CbCcW47B4g8xlDt1YHxKz6I/FWL+3ITub0Yk
46
- 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
- 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
- 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
- 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
- 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
51
- uM2skhC6ROJPn3CCWPupNuPV2m7kCo4=
52
- -----END PRIVATE KEY-----
@@ -1,29 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIE/zCCAuegAwIBAgIBAjANBgkqhkiG9w0BAQsFADAxMSAwHgYDVQQDDBdUTFNH
3
- ZW5TZWxmU2lnbmVkdFJvb3RDQTENMAsGA1UEBwwEJCQkJDAeFw0xNzA3MTIxNzA1
4
- MjVaFw0yNzA3MTAxNzA1MjVaMCQxETAPBgNVBAMMCG1lcmN1cmlvMQ8wDQYDVQQK
5
- DAZjbGllbnQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDDsrXq/Dop
6
- gZjWDsyVQSyV+GxD/2ckrG4mbXARECfb9vvhA1z8ErN1h6hp9zDKTqdn21iCd3m1
7
- 4AlTsM1ARk6kMuqtVAYzo25qtm8seQE3TnI41gOvrpy1ncqr9etRmds7lyfo7AVA
8
- DC+rHAc1R3Gh+wc5xPexY7kbZv0mfURETGksGYKJ/VHE0dk/JAgyR6HooPEKRLce
9
- gCCc7SjUtggj0mJLgLHtnns1Db2REe/tZTtzJ6DaxevdmeewGvQvQRo8l+OAysfL
10
- Pc7VCevExnB0jRvjlSF+zbeqEZsUQiAiCa8zXZEH0ZXf3JE9ztIbNN9ouTL4Q7aX
11
- N3GnddMXv5bunJzrnF6xUB3DzUDZjQasGIf9q3kr4qxP8BXOCHjaCLFgfRxwy7NG
12
- 64BOzTZ+OWJThF4kqvkWR5D0WeRyj6OCYU7pr8mjVayHhA3WdqMZ2eyZDPoqHGsx
13
- FuBCW0/Ja2nrwHislQUkPHaH8gSjivAZeF40q5hD+3a0O5j4lEbNbFyE2GE3vjMD
14
- 9nxomfFeKI8IxdePjAc80Xoq0JDDiFMJ2Iu1oFSsRCucR+L9xloS3MRjzzrHZlnZ
15
- xwLV+3x9QA97KjfsDwp8J8tWXs9fw71ZJgmcSJ5fzPjkxrlZ5xEQAsf50Tx8c6j4
16
- lZhMEsLcARiGNJt21QfgKiLEBWvKgoSuxQIDAQABoy8wLTAJBgNVHRMEAjAAMAsG
17
- A1UdDwQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAjANBgkqhkiG9w0BAQsFAAOC
18
- AgEAFWAL4vDyshpfLtj+woBov4gwUrW7fFtrIKSpZ78FE3wTb5oDoK7DQb1qLiGy
19
- XKv8O0La5z/pGKm7jeqDDSIwu7s/9nzui3m3le93Wed4PnEawprvND0IKJDtEN5N
20
- J2Zet/CCm1keHLhZLPS4mXzKXI0BqubBhYuFJ+pO0F/l9kPxOfCe3l3fLj+Gsmpm
21
- hqr1lasWlWc9IKoSgcAGw0Wr6M0EeP3mxJcrSDGtT+37KerefKXQrAC75IbO0hGo
22
- CTMYltg0TxWZ90lUcuLIgSlopS8C88NFaxxNDf62Qy6DAjEb0S9nGEKfxcPRJcyz
23
- DuE0YiOf8yp/8qgnN6mTo7tCr/FQRZvWt6Mt2UGh1lHMuA4Ab6O5T4hQ3oD9tj9H
24
- D86noCp6I3caDJmUSxAc6H6pr0AebQ6TFE48tzFaKNcKQKzk3JUDOmoGP6ub1Hab
25
- /SUcZ7pLx9rKSlF/EfjO/1NQ9jDFoHYT8FDw3Xj82K3xoWXKw7/bggLYfdEJzKxN
26
- ThN4dcAefsdXY9mo6iABspMf9uCGPuq89gs6wYSM71R2hk+1CHiQRc4xSGJjJ037
27
- Wk/0yCQkUmMcqCF4HQa2caOV3Paa9bvSXm8aRWn+atY/JdrgzM87nK49wjmWFGf9
28
- bsyM5uI0G9rCclSKc9SNw6sAhDTuwTdA1ivRHJsPtOFtmCE=
29
- -----END CERTIFICATE-----
@@ -1,51 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIJKAIBAAKCAgEAw7K16vw6KYGY1g7MlUEslfhsQ/9nJKxuJm1wERAn2/b74QNc
3
- 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
- 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
- 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
- 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
- B9GV39yRPc7SGzTfaLky+EO2lzdxp3XTF7+W7pyc65xesVAdw81A2Y0GrBiH/at5
8
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- JL4PaoKS3FvnuNzHtdMfkSGLu3cRN3sPEOq+ZjZLdG59iD12w8aSPsO+qv7iHSqa
16
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- MlkCDwmyphDdZkdVfb7JhpHf0k6v49HuJYaAnWWkfDnpznxGooSfeA4oyIkBJjwS
25
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- YQVxPh3r03ZE8Hm3DdgdgpH3tqbPW4j8Gi9YHdBpYm/dSDcQw4XdyyncEJKCl1dF
38
- 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
- 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
- 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
- 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
- wmEvEUF68QV0Zbjwm3oWbi6TysucJ/2deq9n/PhcJbXTH7lPNMp9tjhZiwV20Fd3
43
- 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
- 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
- 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
- 0DsyMKaYJVTqCV+V6fZAiNrAKdR64yGYWuHi6bi1CkojhPtnUpgTl0ucC3dBs2/d
47
- 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
- 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
- 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
- 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
51
- -----END RSA PRIVATE KEY-----
@@ -1,8 +0,0 @@
1
- #!/bin/sh
2
-
3
- DIRNAME=$(dirname "$0")
4
-
5
- openssl req -sha256 -new -key $DIRNAME/server_key.pem -out $DIRNAME/server.csr -subj "/CN=mercurio" -config $DIRNAME/server-openssl.cnf
6
- openssl x509 -sha256 -req -in $DIRNAME/server.csr -CA $DIRNAME/ca_certificate.pem -CAkey $DIRNAME/ca_key.pem -CAcreateserial -CAserial $DIRNAME/ca.srl -out $DIRNAME/server_certificate.pem -days 3650 -extensions v3_req -extfile $DIRNAME/server-openssl.cnf
7
-
8
- echo "Written new server CSR and certificate"
@@ -1,10 +0,0 @@
1
- [req]
2
- req_extensions = v3_req
3
- distinguished_name = req_distinguished_name
4
- [req_distinguished_name]
5
- [ v3_req ]
6
- basicConstraints = CA:FALSE
7
- keyUsage = nonRepudiation, digitalSignature, keyEncipherment
8
- subjectAltName = @alt_names
9
- [alt_names]
10
- IP.1 = 127.0.0.1
data/spec/tls/server.csr DELETED
@@ -1,16 +0,0 @@
1
- -----BEGIN CERTIFICATE REQUEST-----
2
- MIICkjCCAXoCAQAwEzERMA8GA1UEAwwIbWVyY3VyaW8wggEiMA0GCSqGSIb3DQEB
3
- AQUAA4IBDwAwggEKAoIBAQCkvvzm5nB3CDqTFEYQnfOy8DwJLm34MvdrKQAThzDy
4
- qa37sb4IC0YclBFbZfsw8+paK+Rpo2Vlhzclb66z0cGs9SvxuKkJ45w0fk0ctxMg
5
- tvWISRGZR7LMw5u0q2m61dK0FTGSl+qzJohb5Dklb6BApoGoIPH+eYraVxHR29x2
6
- x8hqzBt5TpiUW8bu7LPQJbX0mYGhKQDf86kao+sptRQ2045D7vB3jrkPhq0XZVJi
7
- QymzOSSejYSN1oZ464DtT+dpLBYHEVJoJPu4r4kY/8A7v+93PWQaDERKBfvwWHfV
8
- U44xn7R/aojSvNT7kQILsf2BnfJlMwoedWQLxPddmB3PAgMBAAGgOjA4BgkqhkiG
9
- 9w0BCQ4xKzApMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMA8GA1UdEQQIMAaHBH8A
10
- AAEwDQYJKoZIhvcNAQELBQADggEBAFyfaotajM/h2dyodKJqO6stAIpxiQXTds8V
11
- 5ZHDozBxzLZkeBIY+hsqh/owmqomk56swui+336WAKIBwIJyJrtIl8C/lupGaTbR
12
- BouWWbyZOQAE2ExHcUgdGEOVoCN2ieBR4RVQ8Id4GAlHvlFGPqakaLMV6Zc7VqDh
13
- vxdOLgATEE+MhebTo9yOHj14qdvzhi5w3ZEg1kdfOuGN9I4gJcv4PWwudBhn4wE7
14
- oHAIP2nixROI7cZcZ9fBrimcdGQsXNZLTXiGzNra4utOXuQ7w5qoiEhHoxXalowE
15
- KvEA9otLadjtULg6DRd3zYuIyrUiBIRUHZ1p2xSnd/lLekbMfCQ=
16
- -----END CERTIFICATE REQUEST-----
@@ -1,29 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIE/zCCAuegAwIBAgIBATANBgkqhkiG9w0BAQsFADAxMSAwHgYDVQQDDBdUTFNH
3
- ZW5TZWxmU2lnbmVkdFJvb3RDQTENMAsGA1UEBwwEJCQkJDAeFw0xNzA3MTIxNzA1
4
- MjRaFw0yNzA3MTAxNzA1MjRaMCQxETAPBgNVBAMMCG1lcmN1cmlvMQ8wDQYDVQQK
5
- DAZzZXJ2ZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCuwVeq0DrK
6
- nKQg5zE4Ph9eY1v4ktJiHhTosgS0hE7DHWaulpXqt9SaqrVc8Kp7z+C1GCQRg8Vo
7
- 73DDQOl63sFwYvNO1uqyeS6mqMPamjgOIQ2/GGPwmTksJi/QlBH7u2lR4BoWA7uB
8
- 4zr8mxXlIfDzvLWL1Dz7yZZcfrcp28rDId+LoNjajaVrropqrlJ+GoQKN1fB2dkU
9
- JTJocUFCw5+Pcslrymm3+9pDexB6u8vWyBy/jk27dp8VhDLfHTCkO6UTnvIBLfA3
10
- 5b7PWX7Q7QiOGhiGtoz7J3bqEoOkaM1cOEjSEO4AkLvcgKpqnQzP0xKmR57COFgA
11
- UQBNSClOkmoNDI9pGl4ONNx7OnsFGvwqc1DrIUQPRXMZzgcqdjK7DgxAh68Mke3l
12
- Mu7xkLsy7VWxiwTDFyukKuFNhXOxUrHJ/jI/s5LEZLiAWNvGNhDyJrWxFpTAjpk9
13
- osNPdJw/rLSzliwYJDmYWdmKOif+mQw0QIhnKxtLnsdiNTbQVtixDlhUBUt+xWv2
14
- IyFAcSDxZPEA7oLIflJdNG3GaQwIki/ZGDXmxSg2PhPdU42slGRaupPuUpFYFKUg
15
- PZypjphNuUQkHasPD43Jacj96LyuDSuV/b8FQWQbegOv7sY/kCK3v6y6YQcqovkN
16
- RWhOZE2zIFXRxT2iPY2LV/clgVkohrxzUwIDAQABoy8wLTAJBgNVHRMEAjAAMAsG
17
- A1UdDwQEAwIFIDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOC
18
- AgEAQBCmOD6yXPkGWIBcP35Qaghpyv9oxgv6AnJaU1KylTxR+C7ljT9EnygWBeTf
19
- 5giFYI2HnTSKOZQRhIk4/LsP9xnWJ6OjfOopC1YjHKcSV7VTVMTvd2OkgFIYPFgT
20
- EXzfCX+NFkS9fD8D2hn/6ENir+N4opuobcLOq+jveAtwLrO/SrDprCiKa0Ka4n/L
21
- 10huMlBslqJ4aCQjAud0FZVikEzeZIIfPn/G7vC5Ya+IaV5SxzEv12krZpiktuHh
22
- w5jkFZcIxQROLww5heC0xsHLRVX5pjqFwN54b8JeP5t+yr0y3aaQ0s525wkUP82/
23
- QmNTLNLzOgMn+k5JkIygnVHji6avdO7suxt0BOMrdSzMd1pfH58umF4xoCspUSCq
24
- Ko0ml5f3Kf1KTBQAV/a4iUIixID67tAd3tOaQgNFPEdbHXp09L2nxRvZMrh4Yimq
25
- jmiX7rTOFnTUES4gfrfpLFSJXxaJlMOM6K08MljkMT0JtExBtiIqMXTnA0GNdkgY
26
- W5Oa2W+Hvt8l0KDcdFIR64Uiqrgxmw8AirUI3R20kldDHB1XE+5y34CgMVYiHDZ9
27
- UGf2wIrg+rsWUqvSgUgFO0IVsP4Z+fFJP/qpca5ObbSLCF0rM5tCh6i7P2893+S9
28
- /eJyRAiTABMrVpFAhvMQGdBtKtXZ8gryJ2M29Kup7JW0OEM=
29
- -----END CERTIFICATE-----
@@ -1,51 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- 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
- 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
- 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
- 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
- u3afFYQy3x0wpDulE57yAS3wN+W+z1l+0O0IjhoYhraM+yd26hKDpGjNXDhI0hDu
7
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 6qS9EpW1olaE42+EnrwUC+kdsks7gZAYx3SFUZUNz9hUyjHc6Wm0UdhaSYiI7e6B
29
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- tfMuDlnWJ1+L7MkVzIeBpniSoWE4x/xfr1a1f3N8tmnb/Bnq4C4C/Ogb5hYqG4dZ
38
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- EF2+B7IGdjnXdy/J1t5A/VFYgB0Fgx5xAoIBACb2w8IJgCaUn2LuK08MXQj/3qMb
46
- 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
- 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
- 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
- OTBWPj2Ja5swnBIxliSzww4r11mu2ld6GFUQOhFIYTmCe/zzbZQdkRw2UP7hSdrf
50
- 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
51
- -----END RSA PRIVATE KEY-----
@@ -1,15 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Bunny do
4
- it "has library version" do
5
- expect(Bunny::VERSION).not_to be_nil
6
- expect(Bunny.version).not_to be_nil
7
- end
8
-
9
-
10
- it "has AMQP protocol version" do
11
- expect(Bunny::PROTOCOL_VERSION).to eq "0.9.1"
12
- expect(AMQ::Protocol::PROTOCOL_VERSION).to eq "0.9.1"
13
- expect(Bunny.protocol_version).to eq "0.9.1"
14
- end
15
- end
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
- require "bunny/concurrent/atomic_fixnum"
3
-
4
- describe Bunny::Concurrent::AtomicFixnum do
5
- it "allows retrieving the current value" do
6
- af = described_class.new(0)
7
-
8
- expect(af.get).to eq 0
9
- expect(af).to eq 0
10
- end
11
-
12
- it "can be updated" do
13
- af = described_class.new(0)
14
-
15
- expect(af.get).to eq 0
16
- Thread.new do
17
- af.set(10)
18
- end
19
- sleep 0.6
20
- expect(af.get).to eq 10
21
- end
22
-
23
- it "can be incremented" do
24
- af = described_class.new(0)
25
-
26
- expect(af.get).to eq 0
27
- 10.times do
28
- Thread.new do
29
- af.increment
30
- end
31
- end
32
- sleep 0.6
33
- expect(af.get).to eq 10
34
- end
35
- end
@@ -1,82 +0,0 @@
1
- require "spec_helper"
2
- require "bunny/concurrent/condition"
3
-
4
- describe Bunny::Concurrent::Condition do
5
-
6
- describe "#wait" do
7
- 50.times do |i|
8
- it "blocks current thread until notified (take #{i})" do
9
- condition = described_class.new
10
- xs = []
11
-
12
- t = Thread.new do
13
- xs << :notified
14
-
15
- sleep 0.2
16
- condition.notify
17
- end
18
- t.abort_on_exception = true
19
-
20
- condition.wait
21
- expect(xs).to eq [:notified]
22
- end
23
- end
24
- end
25
-
26
- describe "#notify" do
27
- 50.times do |i|
28
- it "notifies a single thread waiting on the latch (take #{i})" do
29
- mutex = Mutex.new
30
- condition = described_class.new
31
- xs = []
32
-
33
- t1 = Thread.new do
34
- condition.wait
35
- mutex.synchronize { xs << :notified1 }
36
- end
37
- t1.abort_on_exception = true
38
-
39
- t2 = Thread.new do
40
- condition.wait
41
- mutex.synchronize { xs << :notified2 }
42
- end
43
- t2.abort_on_exception = true
44
-
45
- sleep 0.2
46
- condition.notify
47
- sleep 0.5
48
- expect(xs).to satisfy { |ys| ys.size == 1 && (ys.include?(:notified1) || ys.include?(:notified2)) }
49
- end
50
- end
51
- end
52
-
53
- describe "#notify_all" do
54
- let(:n) { 30 }
55
-
56
- 50.times do |i|
57
- it "notifies all the threads waiting on the latch (take #{i})" do
58
- mutex = Mutex.new
59
- condition = described_class.new
60
- @xs = []
61
-
62
- n.times do |i|
63
- t = Thread.new do
64
- condition.wait
65
- mutex.synchronize { @xs << "notified#{i + 1}".to_sym }
66
- end
67
- t.abort_on_exception = true
68
- end
69
-
70
- sleep 0.5
71
- condition.notify_all
72
- sleep 0.5
73
-
74
- n.times do |i|
75
- item = "notified#{i + 1}".to_sym
76
-
77
- expect(@xs).to include item
78
- end
79
- end
80
- end
81
- end
82
- end
@@ -1,35 +0,0 @@
1
- require "spec_helper"
2
-
3
- if defined?(JRUBY_VERSION)
4
- require "bunny/concurrent/linked_continuation_queue"
5
-
6
- describe Bunny::Concurrent::LinkedContinuationQueue do
7
- describe "#poll with a timeout that is never reached" do
8
- it "blocks until the value is available, then returns it" do
9
- # force subject evaluation
10
- cq = subject
11
- t = Thread.new do
12
- cq.push(10)
13
- end
14
- t.abort_on_exception = true
15
-
16
- v = subject.poll(500)
17
- expect(v).to eq 10
18
- end
19
- end
20
-
21
- describe "#poll with a timeout that is reached" do
22
- it "raises an exception" do
23
- # force subject evaluation
24
- cq = subject
25
- t = Thread.new do
26
- sleep 1.5
27
- cq.push(10)
28
- end
29
- t.abort_on_exception = true
30
-
31
- expect { subject.poll(500) }.to raise_error(::Timeout::Error)
32
- end
33
- end
34
- end
35
- end
@@ -1,73 +0,0 @@
1
- require "spec_helper"
2
- require "bunny/concurrent/synchronized_sorted_set"
3
-
4
- unless ENV["CI"]
5
- describe Bunny::Concurrent::SynchronizedSortedSet do
6
- 50.times do |i|
7
- it "provides the same API as SortedSet for key operations (take #{i})" do
8
- s = described_class.new
9
- expect(s.length).to eq 0
10
-
11
- s << 1
12
- expect(s.length).to eq 1
13
- s << 1
14
- expect(s.length).to eq 1
15
- s << 2
16
- expect(s.length).to eq 2
17
- s << 3
18
- expect(s.length).to eq 3
19
- s << 4
20
- expect(s.length).to eq 4
21
- s << 4
22
- s << 4
23
- s << 4
24
- expect(s.length).to eq 4
25
- s << 5
26
- expect(s.length).to eq 5
27
- s << 5
28
- s << 5
29
- s << 5
30
- expect(s.length).to eq 5
31
- s << 6
32
- expect(s.length).to eq 6
33
- s << 7
34
- expect(s.length).to eq 7
35
- s << 8
36
- expect(s.length).to eq 8
37
- s.delete 8
38
- expect(s.length).to eq 7
39
- s.delete_if { |i| i == 1 }
40
- expect(s.length).to eq 6
41
- end
42
- it "synchronizes common operations needed by Bunny (take #{i})" do
43
- s = described_class.new
44
- expect(s.length).to eq 0
45
-
46
- 10.times do
47
- Thread.new do
48
- s << 1
49
- s << 1
50
- s << 2
51
- s << 3
52
- s << 4
53
- s << 4
54
- s << 4
55
- s << 4
56
- s << 5
57
- s << 5
58
- s << 5
59
- s << 5
60
- s << 6
61
- s << 7
62
- s << 8
63
- s.delete 8
64
- s.delete_if { |i| i == 1 }
65
- end
66
- end
67
- sleep 0.5
68
-
69
- expect(s.length).to eq 6
70
- end
71
- end
72
- end
73
- end