bunny 1.0.7 → 2.24.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 (168) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +92 -87
  3. data/lib/amq/protocol/extensions.rb +2 -0
  4. data/lib/bunny/authentication/credentials_encoder.rb +2 -0
  5. data/lib/bunny/authentication/external_mechanism_encoder.rb +2 -0
  6. data/lib/bunny/authentication/plain_mechanism_encoder.rb +2 -0
  7. data/lib/bunny/channel.rb +485 -186
  8. data/lib/bunny/channel_id_allocator.rb +8 -4
  9. data/lib/bunny/concurrent/atomic_fixnum.rb +2 -0
  10. data/lib/bunny/concurrent/condition.rb +2 -0
  11. data/lib/bunny/concurrent/continuation_queue.rb +37 -13
  12. data/lib/bunny/concurrent/synchronized_sorted_set.rb +2 -0
  13. data/lib/bunny/consumer.rb +20 -13
  14. data/lib/bunny/consumer_tag_generator.rb +6 -2
  15. data/lib/bunny/consumer_work_pool.rb +37 -7
  16. data/lib/bunny/cruby/socket.rb +51 -22
  17. data/lib/bunny/cruby/ssl_socket.rb +68 -5
  18. data/lib/bunny/delivery_info.rb +3 -1
  19. data/lib/bunny/exceptions.rb +27 -4
  20. data/lib/bunny/exchange.rb +35 -29
  21. data/lib/bunny/framing.rb +2 -0
  22. data/lib/bunny/get_response.rb +85 -0
  23. data/lib/bunny/heartbeat_sender.rb +9 -6
  24. data/lib/bunny/message_properties.rb +2 -0
  25. data/lib/bunny/queue.rb +89 -41
  26. data/lib/bunny/reader_loop.rb +72 -28
  27. data/lib/bunny/return_info.rb +2 -0
  28. data/lib/bunny/session.rb +621 -225
  29. data/lib/bunny/socket.rb +7 -12
  30. data/lib/bunny/ssl_socket.rb +7 -12
  31. data/lib/bunny/test_kit.rb +15 -0
  32. data/lib/bunny/timeout.rb +3 -12
  33. data/lib/bunny/timestamp.rb +24 -0
  34. data/lib/bunny/transport.rb +223 -98
  35. data/lib/bunny/version.rb +2 -1
  36. data/lib/bunny/versioned_delivery_tag.rb +2 -0
  37. data/lib/bunny.rb +54 -8
  38. metadata +38 -224
  39. data/.gitignore +0 -22
  40. data/.rspec +0 -3
  41. data/.ruby-version +0 -1
  42. data/.travis.yml +0 -23
  43. data/.yardopts +0 -8
  44. data/ChangeLog.md +0 -1092
  45. data/Gemfile +0 -54
  46. data/LICENSE +0 -21
  47. data/benchmarks/basic_publish/with_128K_messages.rb +0 -35
  48. data/benchmarks/basic_publish/with_1k_messages.rb +0 -35
  49. data/benchmarks/basic_publish/with_4K_messages.rb +0 -35
  50. data/benchmarks/basic_publish/with_64K_messages.rb +0 -35
  51. data/benchmarks/channel_open.rb +0 -28
  52. data/benchmarks/mutex_and_monitor.rb +0 -42
  53. data/benchmarks/queue_declare.rb +0 -29
  54. data/benchmarks/queue_declare_and_bind.rb +0 -29
  55. data/benchmarks/queue_declare_bind_and_delete.rb +0 -29
  56. data/benchmarks/synchronized_sorted_set.rb +0 -53
  57. data/benchmarks/write_vs_write_nonblock.rb +0 -49
  58. data/bin/ci/before_build.sh +0 -31
  59. data/bunny.gemspec +0 -40
  60. data/examples/connection/authentication_failure.rb +0 -16
  61. data/examples/connection/automatic_recovery_with_basic_get.rb +0 -40
  62. data/examples/connection/automatic_recovery_with_client_named_queues.rb +0 -36
  63. data/examples/connection/automatic_recovery_with_multiple_consumers.rb +0 -46
  64. data/examples/connection/automatic_recovery_with_server_named_queues.rb +0 -35
  65. data/examples/connection/channel_level_exception.rb +0 -35
  66. data/examples/connection/disabled_automatic_recovery.rb +0 -34
  67. data/examples/connection/heartbeat.rb +0 -17
  68. data/examples/connection/manually_reconnecting_consumer.rb +0 -23
  69. data/examples/connection/manually_reconnecting_publisher.rb +0 -28
  70. data/examples/connection/unknown_host.rb +0 -16
  71. data/examples/guides/exchanges/direct_exchange_routing.rb +0 -36
  72. data/examples/guides/exchanges/fanout_exchange_routing.rb +0 -28
  73. data/examples/guides/exchanges/headers_exchange_routing.rb +0 -31
  74. data/examples/guides/exchanges/mandatory_messages.rb +0 -30
  75. data/examples/guides/extensions/alternate_exchange.rb +0 -28
  76. data/examples/guides/extensions/basic_nack.rb +0 -33
  77. data/examples/guides/extensions/connection_blocked.rb +0 -35
  78. data/examples/guides/extensions/consumer_cancellation_notification.rb +0 -39
  79. data/examples/guides/extensions/dead_letter_exchange.rb +0 -32
  80. data/examples/guides/extensions/exchange_to_exchange_bindings.rb +0 -29
  81. data/examples/guides/extensions/per_message_ttl.rb +0 -36
  82. data/examples/guides/extensions/per_queue_message_ttl.rb +0 -36
  83. data/examples/guides/extensions/publisher_confirms.rb +0 -28
  84. data/examples/guides/extensions/queue_lease.rb +0 -26
  85. data/examples/guides/extensions/sender_selected_distribution.rb +0 -32
  86. data/examples/guides/getting_started/blabbr.rb +0 -27
  87. data/examples/guides/getting_started/hello_world.rb +0 -20
  88. data/examples/guides/getting_started/weathr.rb +0 -47
  89. data/examples/guides/queues/one_off_consumer.rb +0 -23
  90. data/examples/guides/queues/redeliveries.rb +0 -79
  91. data/lib/bunny/compatibility.rb +0 -24
  92. data/lib/bunny/concurrent/linked_continuation_queue.rb +0 -61
  93. data/lib/bunny/jruby/socket.rb +0 -40
  94. data/lib/bunny/jruby/ssl_socket.rb +0 -53
  95. data/lib/bunny/system_timer.rb +0 -20
  96. data/profiling/basic_publish/with_4K_messages.rb +0 -33
  97. data/repl +0 -3
  98. data/spec/compatibility/queue_declare_spec.rb +0 -44
  99. data/spec/compatibility/queue_declare_with_default_channel_spec.rb +0 -33
  100. data/spec/higher_level_api/integration/basic_ack_spec.rb +0 -71
  101. data/spec/higher_level_api/integration/basic_cancel_spec.rb +0 -76
  102. data/spec/higher_level_api/integration/basic_consume_spec.rb +0 -225
  103. data/spec/higher_level_api/integration/basic_consume_with_objects_spec.rb +0 -54
  104. data/spec/higher_level_api/integration/basic_get_spec.rb +0 -48
  105. data/spec/higher_level_api/integration/basic_nack_spec.rb +0 -79
  106. data/spec/higher_level_api/integration/basic_publish_spec.rb +0 -89
  107. data/spec/higher_level_api/integration/basic_qos_spec.rb +0 -29
  108. data/spec/higher_level_api/integration/basic_recover_spec.rb +0 -18
  109. data/spec/higher_level_api/integration/basic_reject_spec.rb +0 -74
  110. data/spec/higher_level_api/integration/basic_return_spec.rb +0 -33
  111. data/spec/higher_level_api/integration/channel_close_spec.rb +0 -25
  112. data/spec/higher_level_api/integration/channel_flow_spec.rb +0 -21
  113. data/spec/higher_level_api/integration/channel_open_spec.rb +0 -57
  114. data/spec/higher_level_api/integration/confirm_select_spec.rb +0 -19
  115. data/spec/higher_level_api/integration/connection_spec.rb +0 -400
  116. data/spec/higher_level_api/integration/connection_stop_spec.rb +0 -26
  117. data/spec/higher_level_api/integration/consistent_hash_exchange_spec.rb +0 -50
  118. data/spec/higher_level_api/integration/consumer_cancellation_notification_spec.rb +0 -128
  119. data/spec/higher_level_api/integration/dead_lettering_spec.rb +0 -52
  120. data/spec/higher_level_api/integration/exchange_bind_spec.rb +0 -31
  121. data/spec/higher_level_api/integration/exchange_declare_spec.rb +0 -204
  122. data/spec/higher_level_api/integration/exchange_delete_spec.rb +0 -105
  123. data/spec/higher_level_api/integration/exchange_unbind_spec.rb +0 -40
  124. data/spec/higher_level_api/integration/exclusive_queue_spec.rb +0 -28
  125. data/spec/higher_level_api/integration/heartbeat_spec.rb +0 -31
  126. data/spec/higher_level_api/integration/merry_go_round_spec.rb +0 -85
  127. data/spec/higher_level_api/integration/message_properties_access_spec.rb +0 -95
  128. data/spec/higher_level_api/integration/predeclared_exchanges_spec.rb +0 -24
  129. data/spec/higher_level_api/integration/publisher_confirms_spec.rb +0 -77
  130. data/spec/higher_level_api/integration/publishing_edge_cases_spec.rb +0 -65
  131. data/spec/higher_level_api/integration/queue_bind_spec.rb +0 -109
  132. data/spec/higher_level_api/integration/queue_declare_spec.rb +0 -190
  133. data/spec/higher_level_api/integration/queue_delete_spec.rb +0 -41
  134. data/spec/higher_level_api/integration/queue_purge_spec.rb +0 -30
  135. data/spec/higher_level_api/integration/queue_unbind_spec.rb +0 -54
  136. data/spec/higher_level_api/integration/read_only_consumer_spec.rb +0 -60
  137. data/spec/higher_level_api/integration/sender_selected_distribution_spec.rb +0 -36
  138. data/spec/higher_level_api/integration/tls_connection_spec.rb +0 -127
  139. data/spec/higher_level_api/integration/tx_commit_spec.rb +0 -21
  140. data/spec/higher_level_api/integration/tx_rollback_spec.rb +0 -21
  141. data/spec/higher_level_api/integration/with_channel_spec.rb +0 -25
  142. data/spec/issues/issue100_spec.rb +0 -42
  143. data/spec/issues/issue141_spec.rb +0 -44
  144. data/spec/issues/issue78_spec.rb +0 -75
  145. data/spec/issues/issue83_spec.rb +0 -31
  146. data/spec/issues/issue97_attachment.json +0 -1
  147. data/spec/issues/issue97_spec.rb +0 -176
  148. data/spec/lower_level_api/integration/basic_cancel_spec.rb +0 -69
  149. data/spec/lower_level_api/integration/basic_consume_spec.rb +0 -100
  150. data/spec/spec_helper.rb +0 -64
  151. data/spec/stress/channel_open_stress_spec.rb +0 -51
  152. data/spec/stress/channel_open_stress_with_single_threaded_connection_spec.rb +0 -28
  153. data/spec/stress/concurrent_consumers_stress_spec.rb +0 -69
  154. data/spec/stress/concurrent_publishers_stress_spec.rb +0 -57
  155. data/spec/stress/connection_open_close_spec.rb +0 -40
  156. data/spec/stress/long_running_consumer_spec.rb +0 -83
  157. data/spec/tls/cacert.pem +0 -18
  158. data/spec/tls/client_cert.pem +0 -18
  159. data/spec/tls/client_key.pem +0 -27
  160. data/spec/tls/server_cert.pem +0 -18
  161. data/spec/tls/server_key.pem +0 -27
  162. data/spec/unit/bunny_spec.rb +0 -15
  163. data/spec/unit/concurrent/atomic_fixnum_spec.rb +0 -35
  164. data/spec/unit/concurrent/condition_spec.rb +0 -82
  165. data/spec/unit/concurrent/linked_continuation_queue_spec.rb +0 -35
  166. data/spec/unit/concurrent/synchronized_sorted_set_spec.rb +0 -73
  167. data/spec/unit/system_timer_spec.rb +0 -10
  168. data/spec/unit/version_delivery_tag_spec.rb +0 -28
@@ -1,83 +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
- let(:connection) do
10
- c = Bunny.new(:user => "bunny_gem", :password => "bunny_password", :vhost => "bunny_testbed", :automatic_recovery => false, :heartbeat_interval => 6)
11
- c.start
12
- c
13
- end
14
-
15
- after :all do
16
- connection.close
17
- end
18
-
19
- let(:target) { 512 * 1024 * 1024 }
20
- let(:queue) { "bunny.stress.long_running_consumer.#{Time.now.to_i}" }
21
-
22
- let(:rate) { 50 }
23
- let(:s) { 4.0 }
24
-
25
-
26
-
27
- it "does not skip heartbeats" do
28
- finished = Bunny::Concurrent::Condition.new
29
-
30
- ct = Thread.new do
31
- t = 0
32
- ch = connection.create_channel(nil, 6)
33
- begin
34
- q = ch.queue(queue, :exclusive => true)
35
-
36
- q.bind("amq.fanout").subscribe do |_, _, payload|
37
- t += payload.bytesize
38
-
39
- if t >= target
40
- puts "Hit the target, done with the test..."
41
-
42
- finished.notify_all
43
- else
44
- puts "Consumed #{(t.to_f / target.to_f).round(3) * 100}% of data"
45
- end
46
- end
47
- rescue Interrupt => e
48
- ch.maybe_kill_consumer_work_pool!
49
- ch.close
50
- end
51
- end
52
- ct.abort_on_exception = true
53
-
54
- pt = Thread.new do
55
- t = 0
56
- ch = connection.create_channel
57
- begin
58
- x = ch.fanout("amq.fanout")
59
-
60
- loop do
61
- break if t >= target
62
-
63
- rate.times do |i|
64
- msg = Bunny::TestKit.message_in_kb(96, 8192, i)
65
- x.publish(msg)
66
- t += msg.bytesize
67
- end
68
-
69
- sleep (s * rand)
70
- end
71
- rescue Interrupt => e
72
- ch.close
73
- end
74
- end
75
- pt.abort_on_exception = true
76
-
77
- finished.wait
78
-
79
- ct.raise Interrupt.new
80
- pt.raise Interrupt.new
81
- end
82
- end
83
- end
data/spec/tls/cacert.pem DELETED
@@ -1,18 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIC5DCCAcygAwIBAgIJAMa8aNd9TfEZMA0GCSqGSIb3DQEBBQUAMCIxETAPBgNV
3
- BAMTCE15VGVzdENBMQ0wCwYDVQQHEwQxODE1MB4XDTEzMDYwMjE1NTQwMFoXDTE0
4
- MDYwMjE1NTQwMFowIjERMA8GA1UEAxMITXlUZXN0Q0ExDTALBgNVBAcTBDE4MTUw
5
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSLh8ZM0+1wVrr4J9KZLLt
6
- VtGoKEhuTWYa+DvDbdUYaD/G06GfRqsM0eOKuJfoaMz3qY49j/bZXmuG64rGx5oq
7
- Lp6VBwAw1R3Pmw3rD7XgiK0/7mVmnC4nwQAs9/uCKeAMPHfMDAG33aalxb3FzJfa
8
- RUiSIY7y7Kt7nCVC53foTFxbt0EKm7wjey1S8P9XkCB8x+ZT5GetzoqulKxt/f1u
9
- 0K/gVnMUvFmflR4hsx5qBNV6wFEYwMfi+C6q184aJv7jmjumimf9IBOcOkZrDnQD
10
- +7HeOeZAbMgLtCaacD2SH72s3hIHvgetbIJva+zJkbjjjA+Ycd824WjG+CiOEIch
11
- AgMBAAGjHTAbMAwGA1UdEwQFMAMBAf8wCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEB
12
- BQUAA4IBAQAvLziFQ56+vNyNAGDD8bQaUY8JElXj4X3vC0nFeN0zuPQz9Aa8UH4A
13
- Y7e/j3NS2mfYdqC8U3iYEXZwp4qk4/JZ9SkhRiaLbeIF7VT+xg+K/HDmBmwNZpQL
14
- b9bNBk9BeRMv4jJUuM/BE04nmqQnbD8h2QleT0A7uVe94ym86rHcimCYmZT7wEZ0
15
- D3TZPRnETwe2WtpAU3qB6Zd2ug/GulFdeugHe8bM0Kjz+BiK+Tmsa0SIN31t/uu4
16
- Tcxk1uFldIGPURAgs6MXxBHohOdJySBLrjsJWlD02Oxv9LeCfxej/gA6pZ4Wiyh/
17
- VtkyWoFlx/8n2S7IH1bKqMFy0SU/Fp3F
18
- -----END CERTIFICATE-----
@@ -1,18 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIC8zCCAdugAwIBAgIBATANBgkqhkiG9w0BAQUFADAiMREwDwYDVQQDEwhNeVRl
3
- c3RDQTENMAsGA1UEBxMEMTgxNTAeFw0xMzA2MDIxNTU0MDBaFw0xNDA2MDIxNTU0
4
- MDBaMCcxFDASBgNVBAMTC2dpb3ZlLmxvY2FsMQ8wDQYDVQQKEwZjbGllbnQwggEi
5
- MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDj70Z3cs873uTdONh/gK0vEI75
6
- okTHOQBz9QPVUx0c+cdUvp1Ct1FXBYM4Jq47aaRW5vuki0SeML0gdrQouSVFtblX
7
- HnB8bYF1oMlkmTrIDvM9DT5H3AMiQbbypVkRjQBb/Rs97sr+P05jhK2ZWxTxzs3W
8
- kqdblJaxfMX7IXgvobnXDJO0PcN7tzOOlcD8dGFABLEtzWRmzqVvrJ7tZh0klsiB
9
- I2yuOjk9LZhNcgmSNUAln+MFkWiAQcwWvl77DSBVPqIi6w6Q0oJoS6gsT6jOfw3f
10
- ApX7Fjoib3UXLrZC2Fe7Sq03joZcpL7lMqsEZCZr0VqASQJHoTPqEknSMlpxAgMB
11
- AAGjLzAtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF
12
- BwMCMA0GCSqGSIb3DQEBBQUAA4IBAQCFpfTUD9CjkrlhJi8GrryRlBILah45HIH4
13
- MuUEUaGE//glCTuKXHjUhgtFSkFaDr0Xq50ckUzMVdmsQpSZM3N1F/eTicIk1PzY
14
- b+7t86/XC5wct94I5yxPNX7S8VwHtK8yav0WwMwEGmduTxfjMPnJBDPdwIp6LgiF
15
- BqM4Hh8HxHdr+MxOg3JGiodM7MMsDs1A05RiBcR3RzMvbXn5eQIy7tHOJMnrdbj9
16
- mOrfKAmRlWyNj3mhOVpae22sbtSxHYZ10b0Xp/KFusiZCfQvo4pERonjUoMLtaPE
17
- RtPrRrHy96dzmpVFnDVaA+CKZqyBncVAT0zQ3lIJdFIOEbE//s06
18
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEA4+9Gd3LPO97k3TjYf4CtLxCO+aJExzkAc/UD1VMdHPnHVL6d
3
- QrdRVwWDOCauO2mkVub7pItEnjC9IHa0KLklRbW5Vx5wfG2BdaDJZJk6yA7zPQ0+
4
- R9wDIkG28qVZEY0AW/0bPe7K/j9OY4StmVsU8c7N1pKnW5SWsXzF+yF4L6G51wyT
5
- tD3De7czjpXA/HRhQASxLc1kZs6lb6ye7WYdJJbIgSNsrjo5PS2YTXIJkjVAJZ/j
6
- BZFogEHMFr5e+w0gVT6iIusOkNKCaEuoLE+ozn8N3wKV+xY6Im91Fy62QthXu0qt
7
- N46GXKS+5TKrBGQma9FagEkCR6Ez6hJJ0jJacQIDAQABAoIBACfSlCMmYeJ57M5h
8
- siGEn71LTU979DxCTzvzILpSjRGU6ih6LQuM758ejXBwAZzLtjSgonJ7CoAAz+ou
9
- EwfSYRquxzTbUpfKogWlE8qJouV1BzYxbCIt5DZF+OqnzMnuMpPfwrStVbXZ5Z4p
10
- fhL/AMfGc9v7P1YWvcVAoW5gyJi5ejL4az82ZHqDltkkPBm7yXI1xaoAuAU+ir4X
11
- AArDQWqqD+lPVD8gtMfyRYek7xL/O2SZUAVNQC14Fi2gmh01FFW/gnPmoT7GutEL
12
- gfdEQ1KpyzquaSf1u/cka9jbdqf2fAhMj6UwasIJ1HF8dzblzO/nB+cTzIo9LzoK
13
- erwQs2ECgYEA/nTWap6M7InOeAkosEEeLcu0idnjxlT/OToRtfdNkKatvqAFpSDd
14
- 2IBzr3kH+qGToeF8B7uJBaWO69m28+yEngWNW1u0KICUTTzlKZqSqNy1nxWnCWVk
15
- Eg9LtEja4ncoWufbxBB6wwptk4RSqB9HUeZSQf8CG5MvDCLmEsMwwLUCgYEA5VFA
16
- FSZJ3X96nGHlrokq7yDNAQLVZ72B+X+SRt7b9FMVeTyT7fQCAjFSiZYR0Tuz8XEn
17
- STARp27K8OyFv0L1ZzHeywRcqICo9Eqa4Q/Juw+Waf3F40f1lxXb09OTHI/JedWz
18
- U+VMX/OgsFW4a/3/L+IatlnBKemTKvhd94E5VE0CgYEAsQtcMLz2cpIDrXM580Cr
19
- ndORXyTSnamAFzI3JnPWbSH725l9tAIlOUFOvLWqfpEzpju8T6kFUn957NIDwL49
20
- G7HjQ8CPnmqwRPlsvUDGcGV4nSK0oQ4BzasE0oCqg03DL1UJjOamc9Rqn2w/EqkI
21
- t4xYiYDD16nV30zc5gsXfc0CgYBLlwvbrOJeXB4rnG2cqeR4LMTG14tHBgXpG285
22
- Y07368dBToGox20+EcoWRlybLuXy6Yy8qFa5bWECJ8Uytby1BpBdNZPhi3+l/02s
23
- cIrb2ZiIWbm4YMkIw5DR84UjvhX4zkOtnQEfA+ztE2SWXISY4RxTDaUJzs/PM02u
24
- P2+JZQKBgFcOXsnCR/x1CQ6j90pqXjvAK6x/Aiwx0FFTtcPdDft/zuJzav1Co84u
25
- vUGvUADy1AVUB5ERz3z6us9gA4tUIeNwlQ0XFQXVT7I7GBXO3eF5PeiCXfThqnm9
26
- dHgVP3fRaFosQv7mQe6BuuUHP3TJwT1qv/cWmiyyc1Xs7L2b4YU/
27
- -----END RSA PRIVATE KEY-----
@@ -1,18 +0,0 @@
1
- -----BEGIN CERTIFICATE-----
2
- MIIC8zCCAdugAwIBAgIBAjANBgkqhkiG9w0BAQUFADAiMREwDwYDVQQDEwhNeVRl
3
- c3RDQTENMAsGA1UEBxMEMTgxNTAeFw0xMzA2MDIxNTU0MDFaFw0xNDA2MDIxNTU0
4
- MDFaMCcxFDASBgNVBAMTC2dpb3ZlLmxvY2FsMQ8wDQYDVQQKEwZzZXJ2ZXIwggEi
5
- MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSd71SIPGfzaabXymAIq7Zmx8g
6
- aS7jLq8YL6oypCbmfBtARjSvt56QnhuTACSyTErAnrhF4/6d4lsmzdW8dAuJkJF7
7
- pvpGo16y9MfkcpljqD7/3cdZI0sZsfQlDbIBwY6PaJAEsOMccKwr7YYgUh3JdJsH
8
- CVDoFdfiTpKiDKmxdEPZowAwnPTIiuYsIEqOwWSIkwx03c8KAb2g0X/rmJek6bE/
9
- W0ssHNay9OAwuuGl6CEeFka2ZBoZ8Tbum6L/ZrYO5SBYcgdmJxJCMhLJODMXtd2i
10
- KkcgAQ+yWUwS+XpgiXuFbZ0biJyX/DdNvme5M7pLs1nxsLcQq2TZTHSfSHMvAgMB
11
- AAGjLzAtMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgUgMBMGA1UdJQQMMAoGCCsGAQUF
12
- BwMBMA0GCSqGSIb3DQEBBQUAA4IBAQBeYBjN15SekoCgTs9nM1N/ee3kn7Ljo/kO
13
- +UV5SfgsXqirQcFHyC2kTadC4EJmtSg9hDFzYugwWIcVRqMZLnpc/EVDOW1QkxHt
14
- 7IDfyNLK/8D4H7GtFnXrKsUtXhPoObh45sfm65+xByZ6GOtLzYNHOSqZoIOz0ba+
15
- ztuTr8Ifot7lls/bcC8/I+CTJnoV9uDwFfl4Dvg9HET/nWHAncRVz1rePcwfGylo
16
- tEukKFBnBc5NE/QQQE5g9Q1dkVbBAv0kd2KdcYIQxHyGCisZw8pFw+vTo1fS6Gyw
17
- X0h8XxCnMWwR5qxoMxqiM0MidJiNEjl1i+fW2JkkRquJTmCWhmQZ
18
- -----END CERTIFICATE-----
@@ -1,27 +0,0 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEpAIBAAKCAQEA0ne9UiDxn82mm18pgCKu2ZsfIGku4y6vGC+qMqQm5nwbQEY0
3
- r7eekJ4bkwAkskxKwJ64ReP+neJbJs3VvHQLiZCRe6b6RqNesvTH5HKZY6g+/93H
4
- WSNLGbH0JQ2yAcGOj2iQBLDjHHCsK+2GIFIdyXSbBwlQ6BXX4k6SogypsXRD2aMA
5
- MJz0yIrmLCBKjsFkiJMMdN3PCgG9oNF/65iXpOmxP1tLLBzWsvTgMLrhpeghHhZG
6
- tmQaGfE27pui/2a2DuUgWHIHZicSQjISyTgzF7XdoipHIAEPsllMEvl6YIl7hW2d
7
- G4icl/w3Tb5nuTO6S7NZ8bC3EKtk2Ux0n0hzLwIDAQABAoIBAAqGHDxYE1znPpZ0
8
- SrHyigWtgP/w4nxPoEe4Um1X0e4idIZhPE8xAke+8CgIkM0tjWtWRGaSQPAKGn61
9
- OiPDNbR6OxwQvGD92EVgggJFTLA0AHpwz4AAiMfPIyMbLTRzRjqbguAJLEIGzEUi
10
- ClvhX0Xsg7f1WktQlEvnm+NoeK+7xk9CQ1Cip1/9d9TSC3gvJW7/aCU0gV2pymvQ
11
- JKKysBS9KM9AveCrY/+SRznHHEM+nPdl8+fX95gk8cvjE7+Dr6l3iMzz7WXsjwUT
12
- WaIjidWk96BTKBh9Vt1vg4E3AtuGz0HINSkXejXSy4F20HKKD0SfhXdqPFb/iRhz
13
- Uwik8lECgYEA84xNB7FnXt0EetRCa689q+4RVY7ecn0Ron/NW9eX2FIccuMcLT8P
14
- JV7p3wLBVlSiYbFUUXd0EQjzXUZUUXjQFFm923ePwHtkOUNwjcCwX+WKu4hSblGK
15
- pCnfMhHV+tja9TVZV/EMg6c7EGvvhnEYBfmGBm1GJT4kve6A/kcM/wcCgYEA3Tp2
16
- 0IHeKxRQ68AWuC+KKCXiuoWz2k+Z7smiOKLcDFEQdlcgK8yc1bw72Hl9pHHHuSyg
17
- k7CIzeuvqBBsOD8nD+xeeqpMkjyObu+6WvdoqDcvBKB2FeyVP/Wo0nevU+Wbtu98
18
- fK+hQlIXhvMgNce3kb0P3i+F2ky3PEi9mOBRuJkCgYA+3tsLv1ol/PwpER5MWiKb
19
- fYtwAL+f4nVo84D50n/aUegSKFqfu4WXahcJgNaUCKkaewJ/PUzzENJyI7OkjIF6
20
- n2gJfaXYVIIc3jHyBeoB92mG27wbymT11/FMJZqNdOmhHzJ/JzTJz6PJq3Nby1oe
21
- QLm+cvsGpjIp7aXS/lh2hQKBgQCYMmORWPcejhCJ0BIRTutuaXoNNnSgaYkORXus
22
- GSbn9lEsCQ6h81eml6RYbmSo4Ho2A+TJFndXq6CiMAIzxAa8prHtFAIvzSd0XMrJ
23
- UFKY/7YCKd5zgNrBMOGfQiXFwz4YYbQ0F6QKe22iMttjBG5e/kHPasRchdC90ZFW
24
- fmTaaQKBgQDG9Qh+Hg3vcnngbOPaNLUmsTjubRI/O9kU0/c6hK87tmR0vagQqGL5
25
- pHXo6/z9JQJFbYN2MUnfJH4MvTgD8mhgN9uhkLyv+0OHxKlBW03yG5WFq79qaOJt
26
- hSMzK/DcwVcntipdBpQWWYw43vIOoX9qKmOBPb9RXcS/26jwEA2KMA==
27
- -----END RSA PRIVATE KEY-----
@@ -1,15 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Bunny do
4
- it "has library version" do
5
- Bunny::VERSION.should_not be_nil
6
- Bunny.version.should_not be_nil
7
- end
8
-
9
-
10
- it "has AMQP protocol version" do
11
- Bunny::PROTOCOL_VERSION.should == "0.9.1"
12
- AMQ::Protocol::PROTOCOL_VERSION.should == "0.9.1"
13
- Bunny.protocol_version.should == "0.9.1"
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
- af.get.should == 0
9
- af.should == 0
10
- end
11
-
12
- it "can be updated" do
13
- af = described_class.new(0)
14
-
15
- af.get.should == 0
16
- Thread.new do
17
- af.set(10)
18
- end
19
- sleep 0.6
20
- af.get.should == 10
21
- end
22
-
23
- it "can be incremented" do
24
- af = described_class.new(0)
25
-
26
- af.get.should == 0
27
- 10.times do
28
- Thread.new do
29
- af.increment
30
- end
31
- end
32
- sleep 0.6
33
- af.get.should == 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
- 100.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.25
16
- condition.notify
17
- end
18
- t.abort_on_exception = true
19
-
20
- condition.wait
21
- xs.should == [:notified]
22
- end
23
- end
24
- end
25
-
26
- describe "#notify" do
27
- 100.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.25
46
- condition.notify
47
- sleep 0.5
48
- xs.should 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
- 100.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
- @xs.should 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
- v.should == 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
- lambda { subject.poll(500) }.should 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
- s.length.should == 0
10
-
11
- s << 1
12
- s.length.should == 1
13
- s << 1
14
- s.length.should == 1
15
- s << 2
16
- s.length.should == 2
17
- s << 3
18
- s.length.should == 3
19
- s << 4
20
- s.length.should == 4
21
- s << 4
22
- s << 4
23
- s << 4
24
- s.length.should == 4
25
- s << 5
26
- s.length.should == 5
27
- s << 5
28
- s << 5
29
- s << 5
30
- s.length.should == 5
31
- s << 6
32
- s.length.should == 6
33
- s << 7
34
- s.length.should == 7
35
- s << 8
36
- s.length.should == 8
37
- s.delete 8
38
- s.length.should == 7
39
- s.delete_if { |i| i == 1 }
40
- s.length.should == 6
41
- end
42
- it "synchronizes common operations needed by Bunny (take #{i})" do
43
- s = described_class.new
44
- s.length.should == 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
- s.length.should == 6
70
- end
71
- end
72
- end
73
- end
@@ -1,10 +0,0 @@
1
- require "spec_helper"
2
-
3
- if RUBY_VERSION.to_f < 1.9
4
- describe Bunny::SystemTimer do
5
- it 'supports being called with a single argument' do
6
- lambda {Bunny::SystemTimer::timeout(1) {}}.should_not raise_error
7
- lambda {Bunny::SystemTimer::timeout(1, nil) {}}.should_not raise_error
8
- end
9
- end
10
- end
@@ -1,28 +0,0 @@
1
- require "spec_helper"
2
-
3
- require "bunny/concurrent/atomic_fixnum"
4
- require "bunny/versioned_delivery_tag"
5
-
6
- describe Bunny::VersionedDeliveryTag, "#stale?" do
7
- subject { described_class.new(2, 1) }
8
-
9
- context "when delivery tag version < provided version" do
10
- it "returns true" do
11
- subject.stale?(2).should be_true
12
- end
13
- end
14
-
15
- context "when delivery tag version = provided version" do
16
- it "returns false" do
17
- subject.stale?(1).should be_false
18
- end
19
- end
20
-
21
- context "when delivery tag version > provided version" do
22
- it "returns true" do
23
- # this scenario is unrealistic but we still can
24
- # unit test it. MK.
25
- subject.stale?(0).should be_false
26
- end
27
- end
28
- end