sidekick-client 0.1.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 (247) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +17 -0
  5. data/Rakefile +52 -0
  6. data/VERSION +1 -0
  7. data/lib/ext/README +1 -0
  8. data/lib/ext/bunny-0.6.0/LICENSE +20 -0
  9. data/lib/ext/bunny-0.6.0/README.rdoc +66 -0
  10. data/lib/ext/bunny-0.6.0/Rakefile +24 -0
  11. data/lib/ext/bunny-0.6.0/bunny.gemspec +65 -0
  12. data/lib/ext/bunny-0.6.0/examples/simple_08.rb +30 -0
  13. data/lib/ext/bunny-0.6.0/examples/simple_09.rb +30 -0
  14. data/lib/ext/bunny-0.6.0/examples/simple_ack_08.rb +33 -0
  15. data/lib/ext/bunny-0.6.0/examples/simple_ack_09.rb +33 -0
  16. data/lib/ext/bunny-0.6.0/examples/simple_consumer_08.rb +53 -0
  17. data/lib/ext/bunny-0.6.0/examples/simple_consumer_09.rb +53 -0
  18. data/lib/ext/bunny-0.6.0/examples/simple_fanout_08.rb +39 -0
  19. data/lib/ext/bunny-0.6.0/examples/simple_fanout_09.rb +39 -0
  20. data/lib/ext/bunny-0.6.0/examples/simple_headers_08.rb +40 -0
  21. data/lib/ext/bunny-0.6.0/examples/simple_headers_09.rb +40 -0
  22. data/lib/ext/bunny-0.6.0/examples/simple_publisher_08.rb +27 -0
  23. data/lib/ext/bunny-0.6.0/examples/simple_publisher_09.rb +27 -0
  24. data/lib/ext/bunny-0.6.0/examples/simple_topic_08.rb +59 -0
  25. data/lib/ext/bunny-0.6.0/examples/simple_topic_09.rb +59 -0
  26. data/lib/ext/bunny-0.6.0/lib/bunny/channel08.rb +39 -0
  27. data/lib/ext/bunny-0.6.0/lib/bunny/channel09.rb +39 -0
  28. data/lib/ext/bunny-0.6.0/lib/bunny/client08.rb +494 -0
  29. data/lib/ext/bunny-0.6.0/lib/bunny/client09.rb +460 -0
  30. data/lib/ext/bunny-0.6.0/lib/bunny/exchange08.rb +175 -0
  31. data/lib/ext/bunny-0.6.0/lib/bunny/exchange09.rb +177 -0
  32. data/lib/ext/bunny-0.6.0/lib/bunny/queue08.rb +389 -0
  33. data/lib/ext/bunny-0.6.0/lib/bunny/queue09.rb +395 -0
  34. data/lib/ext/bunny-0.6.0/lib/bunny/subscription08.rb +85 -0
  35. data/lib/ext/bunny-0.6.0/lib/bunny/subscription09.rb +85 -0
  36. data/lib/ext/bunny-0.6.0/lib/bunny.rb +87 -0
  37. data/lib/ext/bunny-0.6.0/lib/qrack/channel.rb +18 -0
  38. data/lib/ext/bunny-0.6.0/lib/qrack/client.rb +204 -0
  39. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/protocol08.rb +132 -0
  40. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/protocol09.rb +133 -0
  41. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/spec08.rb +823 -0
  42. data/lib/ext/bunny-0.6.0/lib/qrack/protocol/spec09.rb +521 -0
  43. data/lib/ext/bunny-0.6.0/lib/qrack/qrack08.rb +23 -0
  44. data/lib/ext/bunny-0.6.0/lib/qrack/qrack09.rb +23 -0
  45. data/lib/ext/bunny-0.6.0/lib/qrack/queue.rb +53 -0
  46. data/lib/ext/bunny-0.6.0/lib/qrack/subscription.rb +102 -0
  47. data/lib/ext/bunny-0.6.0/lib/qrack/transport/buffer08.rb +276 -0
  48. data/lib/ext/bunny-0.6.0/lib/qrack/transport/buffer09.rb +276 -0
  49. data/lib/ext/bunny-0.6.0/lib/qrack/transport/frame08.rb +112 -0
  50. data/lib/ext/bunny-0.6.0/lib/qrack/transport/frame09.rb +94 -0
  51. data/lib/ext/bunny-0.6.0/spec/spec_08/bunny_spec.rb +65 -0
  52. data/lib/ext/bunny-0.6.0/spec/spec_08/connection_spec.rb +12 -0
  53. data/lib/ext/bunny-0.6.0/spec/spec_08/exchange_spec.rb +162 -0
  54. data/lib/ext/bunny-0.6.0/spec/spec_08/queue_spec.rb +206 -0
  55. data/lib/ext/bunny-0.6.0/spec/spec_09/bunny_spec.rb +65 -0
  56. data/lib/ext/bunny-0.6.0/spec/spec_09/connection_spec.rb +12 -0
  57. data/lib/ext/bunny-0.6.0/spec/spec_09/exchange_spec.rb +162 -0
  58. data/lib/ext/bunny-0.6.0/spec/spec_09/queue_spec.rb +205 -0
  59. data/lib/ext/eventmachine-0.12.10/.gitignore +14 -0
  60. data/lib/ext/eventmachine-0.12.10/README +82 -0
  61. data/lib/ext/eventmachine-0.12.10/Rakefile +374 -0
  62. data/lib/ext/eventmachine-0.12.10/docs/COPYING +60 -0
  63. data/lib/ext/eventmachine-0.12.10/docs/ChangeLog +211 -0
  64. data/lib/ext/eventmachine-0.12.10/docs/DEFERRABLES +133 -0
  65. data/lib/ext/eventmachine-0.12.10/docs/EPOLL +141 -0
  66. data/lib/ext/eventmachine-0.12.10/docs/GNU +281 -0
  67. data/lib/ext/eventmachine-0.12.10/docs/INSTALL +13 -0
  68. data/lib/ext/eventmachine-0.12.10/docs/KEYBOARD +38 -0
  69. data/lib/ext/eventmachine-0.12.10/docs/LEGAL +25 -0
  70. data/lib/ext/eventmachine-0.12.10/docs/LIGHTWEIGHT_CONCURRENCY +70 -0
  71. data/lib/ext/eventmachine-0.12.10/docs/PURE_RUBY +75 -0
  72. data/lib/ext/eventmachine-0.12.10/docs/RELEASE_NOTES +94 -0
  73. data/lib/ext/eventmachine-0.12.10/docs/SMTP +2 -0
  74. data/lib/ext/eventmachine-0.12.10/docs/SPAWNED_PROCESSES +89 -0
  75. data/lib/ext/eventmachine-0.12.10/docs/TODO +8 -0
  76. data/lib/ext/eventmachine-0.12.10/eventmachine.gemspec +40 -0
  77. data/lib/ext/eventmachine-0.12.10/examples/ex_channel.rb +43 -0
  78. data/lib/ext/eventmachine-0.12.10/examples/ex_queue.rb +2 -0
  79. data/lib/ext/eventmachine-0.12.10/examples/helper.rb +2 -0
  80. data/lib/ext/eventmachine-0.12.10/ext/binder.cpp +125 -0
  81. data/lib/ext/eventmachine-0.12.10/ext/binder.h +46 -0
  82. data/lib/ext/eventmachine-0.12.10/ext/cmain.cpp +827 -0
  83. data/lib/ext/eventmachine-0.12.10/ext/cplusplus.cpp +202 -0
  84. data/lib/ext/eventmachine-0.12.10/ext/ed.cpp +1893 -0
  85. data/lib/ext/eventmachine-0.12.10/ext/ed.h +424 -0
  86. data/lib/ext/eventmachine-0.12.10/ext/em.cpp +2282 -0
  87. data/lib/ext/eventmachine-0.12.10/ext/em.h +232 -0
  88. data/lib/ext/eventmachine-0.12.10/ext/emwin.cpp +300 -0
  89. data/lib/ext/eventmachine-0.12.10/ext/emwin.h +94 -0
  90. data/lib/ext/eventmachine-0.12.10/ext/epoll.cpp +26 -0
  91. data/lib/ext/eventmachine-0.12.10/ext/epoll.h +25 -0
  92. data/lib/ext/eventmachine-0.12.10/ext/eventmachine.h +122 -0
  93. data/lib/ext/eventmachine-0.12.10/ext/eventmachine_cpp.h +96 -0
  94. data/lib/ext/eventmachine-0.12.10/ext/extconf.rb +148 -0
  95. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/extconf.rb +83 -0
  96. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.cpp +214 -0
  97. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/mapper.h +59 -0
  98. data/lib/ext/eventmachine-0.12.10/ext/fastfilereader/rubymain.cpp +127 -0
  99. data/lib/ext/eventmachine-0.12.10/ext/files.cpp +94 -0
  100. data/lib/ext/eventmachine-0.12.10/ext/files.h +65 -0
  101. data/lib/ext/eventmachine-0.12.10/ext/kb.cpp +81 -0
  102. data/lib/ext/eventmachine-0.12.10/ext/page.cpp +107 -0
  103. data/lib/ext/eventmachine-0.12.10/ext/page.h +51 -0
  104. data/lib/ext/eventmachine-0.12.10/ext/pipe.cpp +349 -0
  105. data/lib/ext/eventmachine-0.12.10/ext/project.h +151 -0
  106. data/lib/ext/eventmachine-0.12.10/ext/rubymain.cpp +1166 -0
  107. data/lib/ext/eventmachine-0.12.10/ext/sigs.cpp +89 -0
  108. data/lib/ext/eventmachine-0.12.10/ext/sigs.h +32 -0
  109. data/lib/ext/eventmachine-0.12.10/ext/ssl.cpp +460 -0
  110. data/lib/ext/eventmachine-0.12.10/ext/ssl.h +94 -0
  111. data/lib/ext/eventmachine-0.12.10/java/.classpath +8 -0
  112. data/lib/ext/eventmachine-0.12.10/java/.project +17 -0
  113. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactor.java +570 -0
  114. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EmReactorException.java +40 -0
  115. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableChannel.java +69 -0
  116. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableDatagramChannel.java +189 -0
  117. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/EventableSocketChannel.java +364 -0
  118. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Application.java +194 -0
  119. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Connection.java +74 -0
  120. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/ConnectionFactory.java +37 -0
  121. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/DefaultConnectionFactory.java +46 -0
  122. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/PeriodicTimer.java +38 -0
  123. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/application/Timer.java +54 -0
  124. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ApplicationTest.java +109 -0
  125. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/ConnectTest.java +148 -0
  126. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/EMTest.java +80 -0
  127. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestDatagrams.java +53 -0
  128. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestServers.java +75 -0
  129. data/lib/ext/eventmachine-0.12.10/java/src/com/rubyeventmachine/tests/TestTimers.java +90 -0
  130. data/lib/ext/eventmachine-0.12.10/lib/em/buftok.rb +138 -0
  131. data/lib/ext/eventmachine-0.12.10/lib/em/callback.rb +26 -0
  132. data/lib/ext/eventmachine-0.12.10/lib/em/channel.rb +57 -0
  133. data/lib/ext/eventmachine-0.12.10/lib/em/connection.rb +564 -0
  134. data/lib/ext/eventmachine-0.12.10/lib/em/deferrable.rb +192 -0
  135. data/lib/ext/eventmachine-0.12.10/lib/em/file_watch.rb +54 -0
  136. data/lib/ext/eventmachine-0.12.10/lib/em/future.rb +61 -0
  137. data/lib/ext/eventmachine-0.12.10/lib/em/messages.rb +66 -0
  138. data/lib/ext/eventmachine-0.12.10/lib/em/process_watch.rb +44 -0
  139. data/lib/ext/eventmachine-0.12.10/lib/em/processes.rb +119 -0
  140. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/header_and_content.rb +138 -0
  141. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient.rb +263 -0
  142. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/httpclient2.rb +590 -0
  143. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/line_and_text.rb +125 -0
  144. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/linetext2.rb +161 -0
  145. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/memcache.rb +323 -0
  146. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/object_protocol.rb +45 -0
  147. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/postgres3.rb +247 -0
  148. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/saslauth.rb +175 -0
  149. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpclient.rb +357 -0
  150. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/smtpserver.rb +547 -0
  151. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/socks4.rb +66 -0
  152. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/stomp.rb +200 -0
  153. data/lib/ext/eventmachine-0.12.10/lib/em/protocols/tcptest.rb +53 -0
  154. data/lib/ext/eventmachine-0.12.10/lib/em/protocols.rb +36 -0
  155. data/lib/ext/eventmachine-0.12.10/lib/em/queue.rb +61 -0
  156. data/lib/ext/eventmachine-0.12.10/lib/em/spawnable.rb +85 -0
  157. data/lib/ext/eventmachine-0.12.10/lib/em/streamer.rb +130 -0
  158. data/lib/ext/eventmachine-0.12.10/lib/em/timers.rb +56 -0
  159. data/lib/ext/eventmachine-0.12.10/lib/em/version.rb +3 -0
  160. data/lib/ext/eventmachine-0.12.10/lib/eventmachine.rb +1592 -0
  161. data/lib/ext/eventmachine-0.12.10/lib/evma/callback.rb +32 -0
  162. data/lib/ext/eventmachine-0.12.10/lib/evma/container.rb +75 -0
  163. data/lib/ext/eventmachine-0.12.10/lib/evma/factory.rb +77 -0
  164. data/lib/ext/eventmachine-0.12.10/lib/evma/protocol.rb +87 -0
  165. data/lib/ext/eventmachine-0.12.10/lib/evma/reactor.rb +48 -0
  166. data/lib/ext/eventmachine-0.12.10/lib/evma.rb +32 -0
  167. data/lib/ext/eventmachine-0.12.10/lib/jeventmachine.rb +257 -0
  168. data/lib/ext/eventmachine-0.12.10/lib/pr_eventmachine.rb +1022 -0
  169. data/lib/ext/eventmachine-0.12.10/setup.rb +1585 -0
  170. data/lib/ext/eventmachine-0.12.10/tasks/cpp.rake_example +77 -0
  171. data/lib/ext/eventmachine-0.12.10/tests/client.crt +31 -0
  172. data/lib/ext/eventmachine-0.12.10/tests/client.key +51 -0
  173. data/lib/ext/eventmachine-0.12.10/tests/test_attach.rb +126 -0
  174. data/lib/ext/eventmachine-0.12.10/tests/test_basic.rb +284 -0
  175. data/lib/ext/eventmachine-0.12.10/tests/test_channel.rb +63 -0
  176. data/lib/ext/eventmachine-0.12.10/tests/test_connection_count.rb +35 -0
  177. data/lib/ext/eventmachine-0.12.10/tests/test_defer.rb +47 -0
  178. data/lib/ext/eventmachine-0.12.10/tests/test_epoll.rb +160 -0
  179. data/lib/ext/eventmachine-0.12.10/tests/test_error_handler.rb +35 -0
  180. data/lib/ext/eventmachine-0.12.10/tests/test_errors.rb +82 -0
  181. data/lib/ext/eventmachine-0.12.10/tests/test_exc.rb +55 -0
  182. data/lib/ext/eventmachine-0.12.10/tests/test_file_watch.rb +49 -0
  183. data/lib/ext/eventmachine-0.12.10/tests/test_futures.rb +198 -0
  184. data/lib/ext/eventmachine-0.12.10/tests/test_get_sock_opt.rb +30 -0
  185. data/lib/ext/eventmachine-0.12.10/tests/test_handler_check.rb +37 -0
  186. data/lib/ext/eventmachine-0.12.10/tests/test_hc.rb +218 -0
  187. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient.rb +218 -0
  188. data/lib/ext/eventmachine-0.12.10/tests/test_httpclient2.rb +153 -0
  189. data/lib/ext/eventmachine-0.12.10/tests/test_inactivity_timeout.rb +50 -0
  190. data/lib/ext/eventmachine-0.12.10/tests/test_kb.rb +60 -0
  191. data/lib/ext/eventmachine-0.12.10/tests/test_ltp.rb +182 -0
  192. data/lib/ext/eventmachine-0.12.10/tests/test_ltp2.rb +317 -0
  193. data/lib/ext/eventmachine-0.12.10/tests/test_next_tick.rb +133 -0
  194. data/lib/ext/eventmachine-0.12.10/tests/test_object_protocol.rb +37 -0
  195. data/lib/ext/eventmachine-0.12.10/tests/test_pause.rb +70 -0
  196. data/lib/ext/eventmachine-0.12.10/tests/test_pending_connect_timeout.rb +48 -0
  197. data/lib/ext/eventmachine-0.12.10/tests/test_process_watch.rb +48 -0
  198. data/lib/ext/eventmachine-0.12.10/tests/test_processes.rb +128 -0
  199. data/lib/ext/eventmachine-0.12.10/tests/test_proxy_connection.rb +92 -0
  200. data/lib/ext/eventmachine-0.12.10/tests/test_pure.rb +125 -0
  201. data/lib/ext/eventmachine-0.12.10/tests/test_queue.rb +44 -0
  202. data/lib/ext/eventmachine-0.12.10/tests/test_running.rb +42 -0
  203. data/lib/ext/eventmachine-0.12.10/tests/test_sasl.rb +72 -0
  204. data/lib/ext/eventmachine-0.12.10/tests/test_send_file.rb +242 -0
  205. data/lib/ext/eventmachine-0.12.10/tests/test_servers.rb +76 -0
  206. data/lib/ext/eventmachine-0.12.10/tests/test_smtpclient.rb +83 -0
  207. data/lib/ext/eventmachine-0.12.10/tests/test_smtpserver.rb +85 -0
  208. data/lib/ext/eventmachine-0.12.10/tests/test_spawn.rb +322 -0
  209. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_args.rb +79 -0
  210. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_methods.rb +50 -0
  211. data/lib/ext/eventmachine-0.12.10/tests/test_ssl_verify.rb +82 -0
  212. data/lib/ext/eventmachine-0.12.10/tests/test_timers.rb +162 -0
  213. data/lib/ext/eventmachine-0.12.10/tests/test_ud.rb +36 -0
  214. data/lib/ext/eventmachine-0.12.10/tests/testem.rb +31 -0
  215. data/lib/ext/eventmachine-0.12.10/web/whatis +7 -0
  216. data/lib/ext/misc/README +1 -0
  217. data/lib/ext/misc/indifferent_access.rb +131 -0
  218. data/lib/ext/uuidtools-2.1.1/CHANGELOG +56 -0
  219. data/lib/ext/uuidtools-2.1.1/LICENSE +20 -0
  220. data/lib/ext/uuidtools-2.1.1/README +13 -0
  221. data/lib/ext/uuidtools-2.1.1/Rakefile +48 -0
  222. data/lib/ext/uuidtools-2.1.1/lib/compat/securerandom.rb +202 -0
  223. data/lib/ext/uuidtools-2.1.1/lib/uuidtools/version.rb +35 -0
  224. data/lib/ext/uuidtools-2.1.1/lib/uuidtools.rb +618 -0
  225. data/lib/ext/uuidtools-2.1.1/spec/spec.opts +1 -0
  226. data/lib/ext/uuidtools-2.1.1/spec/spec_helper.rb +7 -0
  227. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/mac_address_spec.rb +15 -0
  228. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/utility_spec.rb +21 -0
  229. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/uuid_creation_spec.rb +121 -0
  230. data/lib/ext/uuidtools-2.1.1/spec/uuidtools/uuid_parsing_spec.rb +127 -0
  231. data/lib/ext/uuidtools-2.1.1/tasks/benchmark.rake +38 -0
  232. data/lib/ext/uuidtools-2.1.1/tasks/clobber.rake +2 -0
  233. data/lib/ext/uuidtools-2.1.1/tasks/gem.rake +68 -0
  234. data/lib/ext/uuidtools-2.1.1/tasks/git.rake +40 -0
  235. data/lib/ext/uuidtools-2.1.1/tasks/metrics.rake +22 -0
  236. data/lib/ext/uuidtools-2.1.1/tasks/rdoc.rake +29 -0
  237. data/lib/ext/uuidtools-2.1.1/tasks/rubyforge.rake +89 -0
  238. data/lib/ext/uuidtools-2.1.1/tasks/spec.rake +64 -0
  239. data/lib/ext/uuidtools-2.1.1/website/index.html +95 -0
  240. data/lib/sidekick/client/sidekick_client.rb +46 -0
  241. data/lib/sidekick/shared/sidekick_logger.rb +14 -0
  242. data/lib/sidekick/shared/sidekick_queue_publisher.rb +91 -0
  243. data/lib/sidekick-client.rb +7 -0
  244. data/sidekick-client.gemspec +289 -0
  245. data/test/helper.rb +10 -0
  246. data/test/test_sidekick-client.rb +7 -0
  247. metadata +311 -0
@@ -0,0 +1,65 @@
1
+ # bunny_spec.rb
2
+
3
+ # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
4
+ # and that it is running on 'localhost'.
5
+
6
+ # If this is not the case, please change the 'Bunny.new' call below to include
7
+ # the relevant arguments e.g. @b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
8
+
9
+ require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. lib bunny]))
10
+
11
+ describe Bunny do
12
+
13
+ before(:each) do
14
+ @b = Bunny.new
15
+ @b.start
16
+ end
17
+
18
+ it "should connect to an AMQP server" do
19
+ @b.status.should == :connected
20
+ end
21
+
22
+ it "should be able to create and open a new channel" do
23
+ c = @b.create_channel
24
+ c.number.should == 2
25
+ c.should be_an_instance_of(Bunny::Channel)
26
+ @b.channels.size.should == 3
27
+ c.open.should == :open_ok
28
+ @b.channel.number.should == 2
29
+ end
30
+
31
+ it "should be able to switch between channels" do
32
+ @b.channel.number.should == 1
33
+ @b.switch_channel(0)
34
+ @b.channel.number.should == 0
35
+ end
36
+
37
+ it "should raise an error if trying to switch to a non-existent channel" do
38
+ lambda { @b.switch_channel(5)}.should raise_error(RuntimeError)
39
+ end
40
+
41
+ it "should be able to create an exchange" do
42
+ exch = @b.exchange('test_exchange')
43
+ exch.should be_an_instance_of(Bunny::Exchange)
44
+ exch.name.should == 'test_exchange'
45
+ @b.exchanges.has_key?('test_exchange').should be(true)
46
+ end
47
+
48
+ it "should be able to create a queue" do
49
+ q = @b.queue('test1')
50
+ q.should be_an_instance_of(Bunny::Queue)
51
+ q.name.should == 'test1'
52
+ @b.queues.has_key?('test1').should be(true)
53
+ end
54
+
55
+ # Current RabbitMQ has not implemented some functionality
56
+ it "should raise an error if setting of QoS fails" do
57
+ lambda { @b.qos(:global => true) }.should raise_error(Bunny::ForcedConnectionCloseError)
58
+ @b.status.should == :not_connected
59
+ end
60
+
61
+ it "should be able to set QoS" do
62
+ @b.qos.should == :qos_ok
63
+ end
64
+
65
+ end
@@ -0,0 +1,12 @@
1
+ # connection_spec.rb
2
+
3
+ require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. lib bunny]))
4
+
5
+ describe Bunny do
6
+
7
+ it "should raise an error if the wrong user name or password is used" do
8
+ b = Bunny.new(:user => 'wrong')
9
+ lambda { b.start}.should raise_error(Bunny::ProtocolError)
10
+ end
11
+
12
+ end
@@ -0,0 +1,162 @@
1
+ # exchange_spec.rb
2
+
3
+ # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
4
+ # and that it is running on 'localhost'.
5
+
6
+ # If this is not the case, please change the 'Bunny.new' call below to include
7
+ # the relevant arguments e.g. @b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
8
+
9
+ require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. lib bunny]))
10
+
11
+ describe 'Exchange' do
12
+
13
+ before(:each) do
14
+ @b = Bunny.new
15
+ @b.start
16
+ end
17
+
18
+ it "should raise an error if instantiated as non-existent type" do
19
+ lambda { @b.exchange('bogus_ex', :type => :bogus) }.should raise_error(Bunny::ForcedConnectionCloseError)
20
+ @b.status.should == :not_connected
21
+ end
22
+
23
+ it "should allow a default direct exchange to be instantiated by specifying :type" do
24
+ exch = @b.exchange('amq.direct', :type => :direct)
25
+ exch.should be_an_instance_of(Bunny::Exchange)
26
+ exch.name.should == 'amq.direct'
27
+ exch.type.should == :direct
28
+ @b.exchanges.has_key?('amq.direct').should be(true)
29
+ end
30
+
31
+ it "should allow a default direct exchange to be instantiated without specifying :type" do
32
+ exch = @b.exchange('amq.direct')
33
+ exch.should be_an_instance_of(Bunny::Exchange)
34
+ exch.name.should == 'amq.direct'
35
+ exch.type.should == :direct
36
+ @b.exchanges.has_key?('amq.direct').should be(true)
37
+ end
38
+
39
+ it "should allow a default fanout exchange to be instantiated without specifying :type" do
40
+ exch = @b.exchange('amq.fanout')
41
+ exch.should be_an_instance_of(Bunny::Exchange)
42
+ exch.name.should == 'amq.fanout'
43
+ exch.type.should == :fanout
44
+ @b.exchanges.has_key?('amq.fanout').should be(true)
45
+ end
46
+
47
+ it "should allow a default topic exchange to be instantiated without specifying :type" do
48
+ exch = @b.exchange('amq.topic')
49
+ exch.should be_an_instance_of(Bunny::Exchange)
50
+ exch.name.should == 'amq.topic'
51
+ exch.type.should == :topic
52
+ @b.exchanges.has_key?('amq.topic').should be(true)
53
+ end
54
+
55
+ it "should allow a default headers (amq.match) exchange to be instantiated without specifying :type" do
56
+ exch = @b.exchange('amq.match')
57
+ exch.should be_an_instance_of(Bunny::Exchange)
58
+ exch.name.should == 'amq.match'
59
+ exch.type.should == :headers
60
+ @b.exchanges.has_key?('amq.match').should be(true)
61
+ end
62
+
63
+ it "should allow a default headers (amq.headers) exchange to be instantiated without specifying :type" do
64
+ exch = @b.exchange('amq.headers')
65
+ exch.should be_an_instance_of(Bunny::Exchange)
66
+ exch.name.should == 'amq.headers'
67
+ exch.type.should == :headers
68
+ @b.exchanges.has_key?('amq.headers').should be(true)
69
+ end
70
+
71
+ it "should create an exchange as direct by default" do
72
+ exch = @b.exchange('direct_defaultex')
73
+ exch.should be_an_instance_of(Bunny::Exchange)
74
+ exch.name.should == 'direct_defaultex'
75
+ exch.type.should == :direct
76
+ @b.exchanges.has_key?('direct_defaultex').should be(true)
77
+ end
78
+
79
+ it "should be able to be instantiated as a direct exchange" do
80
+ exch = @b.exchange('direct_exchange', :type => :direct)
81
+ exch.should be_an_instance_of(Bunny::Exchange)
82
+ exch.name.should == 'direct_exchange'
83
+ exch.type.should == :direct
84
+ @b.exchanges.has_key?('direct_exchange').should be(true)
85
+ end
86
+
87
+ it "should be able to be instantiated as a topic exchange" do
88
+ exch = @b.exchange('topic_exchange', :type => :topic)
89
+ exch.should be_an_instance_of(Bunny::Exchange)
90
+ exch.name.should == 'topic_exchange'
91
+ exch.type.should == :topic
92
+ @b.exchanges.has_key?('topic_exchange').should be(true)
93
+ end
94
+
95
+ it "should be able to be instantiated as a fanout exchange" do
96
+ exch = @b.exchange('fanout_exchange', :type => :fanout)
97
+ exch.should be_an_instance_of(Bunny::Exchange)
98
+ exch.name.should == 'fanout_exchange'
99
+ exch.type.should == :fanout
100
+ @b.exchanges.has_key?('fanout_exchange').should be(true)
101
+ end
102
+
103
+ it "should be able to be instantiated as a headers exchange" do
104
+ exch = @b.exchange('headers_exchange', :type => :headers)
105
+ exch.should be_an_instance_of(Bunny::Exchange)
106
+ exch.name.should == 'headers_exchange'
107
+ exch.type.should == :headers
108
+ @b.exchanges.has_key?('headers_exchange').should be(true)
109
+ end
110
+
111
+ it "should ignore the :nowait option when instantiated" do
112
+ exch = @b.exchange('direct2_exchange', :nowait => true)
113
+ end
114
+
115
+ it "should be able to publish a message" do
116
+ exch = @b.exchange('direct_exchange')
117
+ exch.publish('This is a published message')
118
+ end
119
+
120
+ it "should not modify the passed options hash when publishing a message" do
121
+ exch = @b.exchange('direct_exchange')
122
+ opts = {:key => 'a', :persistent => true}
123
+ exch.publish('', opts)
124
+ opts.should == {:key => 'a', :persistent => true}
125
+ end
126
+
127
+ it "should be able to return an undeliverable message" do
128
+ exch = @b.exchange('return_exch')
129
+ exch.publish('This message should be undeliverable', :immediate => true)
130
+ ret_msg = @b.returned_message
131
+ ret_msg.should be_an_instance_of(Hash)
132
+ ret_msg[:payload].should == 'This message should be undeliverable'
133
+ end
134
+
135
+ it "should be able to return a message that exceeds maximum frame size" do
136
+ exch = @b.exchange('return_exch')
137
+ lg_msg = 'z' * 142000
138
+ exch.publish(lg_msg, :immediate => true)
139
+ ret_msg = @b.returned_message
140
+ ret_msg.should be_an_instance_of(Hash)
141
+ ret_msg[:payload].should == lg_msg
142
+ end
143
+
144
+ it "should report an error if delete fails" do
145
+ exch = @b.exchange('direct_exchange')
146
+ lambda { exch.delete(:exchange => 'bogus_ex') }.should raise_error(Bunny::ForcedChannelCloseError)
147
+ @b.channel.active.should == false
148
+ end
149
+
150
+ it "should be able to be deleted" do
151
+ exch = @b.exchange('direct_exchange')
152
+ res = exch.delete
153
+ res.should == :delete_ok
154
+ @b.exchanges.has_key?('direct_exchange').should be(false)
155
+ end
156
+
157
+ it "should ignore the :nowait option when deleted" do
158
+ exch = @b.exchange('direct2_exchange')
159
+ exch.delete(:nowait => true)
160
+ end
161
+
162
+ end
@@ -0,0 +1,206 @@
1
+ # queue_spec.rb
2
+
3
+ # Assumes that target message broker/server has a user called 'guest' with a password 'guest'
4
+ # and that it is running on 'localhost'.
5
+
6
+ # If this is not the case, please change the 'Bunny.new' call below to include
7
+ # the relevant arguments e.g. @b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
8
+
9
+ require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. lib bunny]))
10
+
11
+ describe 'Queue' do
12
+
13
+ before(:each) do
14
+ @b = Bunny.new
15
+ @b.start
16
+ end
17
+
18
+ it "should ignore the :nowait option when instantiated" do
19
+ q = @b.queue('test0', :nowait => true)
20
+ end
21
+
22
+ it "should ignore the :nowait option when binding to an exchange" do
23
+ exch = @b.exchange('direct_exch')
24
+ q = @b.queue('test0')
25
+ q.bind(exch, :nowait => true).should == :bind_ok
26
+ end
27
+
28
+ it "should raise an error when trying to bind to a non-existent exchange" do
29
+ q = @b.queue('test1')
30
+ lambda {q.bind('bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
31
+ @b.channel.active.should == false
32
+ end
33
+
34
+ it "should be able to bind to an existing exchange" do
35
+ exch = @b.exchange('direct_exch')
36
+ q = @b.queue('test1')
37
+ q.bind(exch).should == :bind_ok
38
+ end
39
+
40
+ it "should ignore the :nowait option when unbinding from an exchange" do
41
+ exch = @b.exchange('direct_exch')
42
+ q = @b.queue('test0')
43
+ q.unbind(exch, :nowait => true).should == :unbind_ok
44
+ end
45
+
46
+ it "should raise an error if unbinding from a non-existent exchange" do
47
+ q = @b.queue('test1')
48
+ lambda {q.unbind('bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
49
+ @b.channel.active.should == false
50
+ end
51
+
52
+ it "should be able to unbind from an existing exchange" do
53
+ exch = @b.exchange('direct_exch')
54
+ q = @b.queue('test1')
55
+ q.unbind(exch).should == :unbind_ok
56
+ end
57
+
58
+ it "should be able to publish a message" do
59
+ q = @b.queue('test1')
60
+ q.publish('This is a test message')
61
+ q.message_count.should == 1
62
+ end
63
+
64
+ it "should be able to pop a message complete with header and delivery details" do
65
+ q = @b.queue('test1')
66
+ msg = q.pop()
67
+ msg.should be_an_instance_of(Hash)
68
+ msg[:header].should be_an_instance_of(Bunny::Protocol::Header)
69
+ msg[:payload].should == 'This is a test message'
70
+ msg[:delivery_details].should be_an_instance_of(Hash)
71
+ q.message_count.should == 0
72
+ end
73
+
74
+ it "should be able to pop a message and just get the payload" do
75
+ q = @b.queue('test1')
76
+ q.publish('This is another test message')
77
+ msg = q.pop[:payload]
78
+ msg.should == 'This is another test message'
79
+ q.message_count.should == 0
80
+ end
81
+
82
+ it "should be able to pop a message where body length exceeds max frame size" do
83
+ q = @b.queue('test1')
84
+ lg_msg = 'z' * 142000
85
+ q.publish(lg_msg)
86
+ msg = q.pop[:payload]
87
+ msg.should == lg_msg
88
+ end
89
+
90
+ it "should be able call a block when popping a message" do
91
+ q = @b.queue('test1')
92
+ q.publish('This is another test message')
93
+ q.pop { |msg| msg[:payload].should == 'This is another test message' }
94
+ q.pop { |msg| msg[:payload].should == :queue_empty }
95
+ end
96
+
97
+ it "should raise an error if purge fails" do
98
+ q = @b.queue('test1')
99
+ 5.times {q.publish('This is another test message')}
100
+ q.message_count.should == 5
101
+ lambda {q.purge(:queue => 'bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
102
+ end
103
+
104
+ it "should be able to be purged to remove all of its messages" do
105
+ q = @b.queue('test1')
106
+ q.message_count.should == 5
107
+ q.purge.should == :purge_ok
108
+ q.message_count.should == 0
109
+ end
110
+
111
+ it "should return an empty message when popping an empty queue" do
112
+ q = @b.queue('test1')
113
+ q.publish('This is another test message')
114
+ q.pop
115
+ msg = q.pop[:payload]
116
+ msg.should == :queue_empty
117
+ end
118
+
119
+ it "should stop subscription without processing messages if max specified is 0" do
120
+ q = @b.queue('test1')
121
+ 5.times {q.publish('Yet another test message')}
122
+ q.message_count.should == 5
123
+ q.subscribe(:message_max => 0)
124
+ q.message_count.should == 5
125
+ q.purge.should == :purge_ok
126
+ end
127
+
128
+ it "should stop subscription after processing number of messages specified > 0" do
129
+ q = @b.queue('test1')
130
+ 5.times {q.publish('Yet another test message')}
131
+ q.message_count.should == 5
132
+ q.subscribe(:message_max => 5)
133
+ end
134
+
135
+ it "should stop subscription after processing message_max messages < total in queue" do
136
+ q = @b.queue('test1')
137
+ @b.qos()
138
+ 10.times {q.publish('Yet another test message')}
139
+ q.message_count.should == 10
140
+ q.subscribe(:message_max => 5, :ack => true)
141
+ q.message_count.should == 5
142
+ q.purge.should == :purge_ok
143
+ end
144
+
145
+ it "should raise an error when delete fails" do
146
+ q = @b.queue('test1')
147
+ lambda {q.delete(:queue => 'bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
148
+ @b.channel.active.should == false
149
+ end
150
+
151
+ it "should pass correct block parameters through on subscribe" do
152
+ q = @b.queue('test1')
153
+ q.publish("messages pop\'n")
154
+
155
+ q.subscribe do |msg|
156
+ msg[:header].should be_an_instance_of Qrack::Protocol::Header
157
+ msg[:payload].should == "messages pop'n"
158
+ msg[:delivery_details].should_not be_nil
159
+
160
+ q.unsubscribe
161
+ break
162
+ end
163
+
164
+ end
165
+
166
+ it "should finish processing subscription messages if break is called in block" do
167
+ q = @b.queue('test1')
168
+ q.publish('messages in my quezen')
169
+
170
+ q.subscribe do |msg|
171
+ msg[:payload].should == 'messages in my quezen'
172
+ q.unsubscribe
173
+ break
174
+ end
175
+
176
+ 5.times {|i| q.publish("#{i}")}
177
+ q.subscribe do |msg|
178
+ if msg[:payload] == '4'
179
+ q.unsubscribe
180
+ break
181
+ end
182
+ end
183
+
184
+ end
185
+
186
+ it "should be able to be deleted" do
187
+ q = @b.queue('test1')
188
+ res = q.delete
189
+ res.should == :delete_ok
190
+ @b.queues.has_key?('test1').should be(false)
191
+ end
192
+
193
+ it "should ignore the :nowait option when deleted" do
194
+ q = @b.queue('test0')
195
+ q.delete(:nowait => true)
196
+ end
197
+
198
+ it "should support server named queues" do
199
+ q = @b.queue
200
+ q.name.should_not == nil
201
+
202
+ @b.queue(q.name).should == q
203
+ q.delete
204
+ end
205
+
206
+ end