bunny 0.4.4 → 0.5.1
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.
- data/Rakefile +21 -3
- data/bunny.gemspec +34 -20
- data/examples/{simple.rb → simple_08.rb} +0 -0
- data/examples/simple_09.rb +30 -0
- data/examples/{simple_ack.rb → simple_ack_08.rb} +0 -0
- data/examples/simple_ack_09.rb +33 -0
- data/examples/{simple_consumer.rb → simple_consumer_08.rb} +0 -0
- data/examples/simple_consumer_09.rb +55 -0
- data/examples/{simple_fanout.rb → simple_fanout_08.rb} +0 -0
- data/examples/simple_fanout_09.rb +39 -0
- data/examples/{simple_headers.rb → simple_headers_08.rb} +0 -0
- data/examples/simple_headers_09.rb +40 -0
- data/examples/{simple_publisher.rb → simple_publisher_08.rb} +0 -0
- data/examples/simple_publisher_09.rb +27 -0
- data/examples/{simple_topic.rb → simple_topic_08.rb} +0 -0
- data/examples/simple_topic_09.rb +59 -0
- data/lib/bunny.rb +19 -14
- data/lib/bunny/channel08.rb +38 -0
- data/lib/bunny/channel09.rb +38 -0
- data/lib/bunny/client08.rb +167 -74
- data/lib/bunny/{client091.rb → client09.rb} +195 -92
- data/lib/bunny/{exchange091.rb → exchange09.rb} +12 -11
- data/lib/bunny/queue08.rb +1 -0
- data/lib/bunny/{queue091.rb → queue09.rb} +38 -28
- data/lib/qrack/client.rb +7 -0
- data/lib/qrack/protocol/{protocol.rb → protocol08.rb} +1 -4
- data/lib/qrack/protocol/protocol09.rb +133 -0
- data/lib/qrack/protocol/{spec091.rb → spec09.rb} +5 -5
- data/lib/qrack/qrack08.rb +2 -10
- data/lib/qrack/qrack09.rb +20 -0
- data/lib/qrack/transport/{buffer.rb → buffer08.rb} +0 -0
- data/lib/qrack/transport/buffer09.rb +276 -0
- data/lib/qrack/transport/{frame091.rb → frame09.rb} +8 -8
- data/spec/{bunny_spec.rb → spec_08/bunny_spec.rb} +4 -4
- data/spec/{exchange_spec.rb → spec_08/exchange_spec.rb} +3 -10
- data/spec/{queue_spec.rb → spec_08/queue_spec.rb} +1 -1
- data/spec/spec_09/bunny_spec.rb +40 -0
- data/spec/spec_09/exchange_spec.rb +131 -0
- data/spec/spec_09/queue_spec.rb +106 -0
- metadata +38 -22
- data/lib/qrack/qrack091.rb +0 -28
@@ -6,7 +6,7 @@
|
|
6
6
|
# If this is not the case, please change the 'Bunny.new' call below to include
|
7
7
|
# the relevant arguments e.g. @b = Bunny.new(:user => 'john', :pass => 'doe', :host => 'foobar')
|
8
8
|
|
9
|
-
require File.expand_path(File.join(File.dirname(__FILE__), %w[.. lib bunny]))
|
9
|
+
require File.expand_path(File.join(File.dirname(__FILE__), %w[.. .. lib bunny]))
|
10
10
|
|
11
11
|
describe Bunny do
|
12
12
|
|
@@ -0,0 +1,40 @@
|
|
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(:spec => '09')
|
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 an exchange" do
|
23
|
+
exch = @b.exchange('test_exchange')
|
24
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
25
|
+
exch.name.should == 'test_exchange'
|
26
|
+
@b.exchanges.has_key?('test_exchange').should be true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should be able to create a queue" do
|
30
|
+
q = @b.queue('test1')
|
31
|
+
q.should be_an_instance_of Bunny::Queue09
|
32
|
+
q.name.should == 'test1'
|
33
|
+
@b.queues.has_key?('test1').should be true
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should be able to set QoS" do
|
37
|
+
@b.qos.should == :qos_ok
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
@@ -0,0 +1,131 @@
|
|
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 Bunny do
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
@b = Bunny.new(:spec => '09')
|
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::ProtocolError)
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should allow a default direct exchange to be instantiated by specifying :type" do
|
23
|
+
exch = @b.exchange('amq.direct', :type => :direct)
|
24
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
25
|
+
exch.name.should == 'amq.direct'
|
26
|
+
exch.type.should == :direct
|
27
|
+
@b.exchanges.has_key?('amq.direct').should be true
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should allow a default direct exchange to be instantiated without specifying :type" do
|
31
|
+
exch = @b.exchange('amq.direct')
|
32
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
33
|
+
exch.name.should == 'amq.direct'
|
34
|
+
exch.type.should == :direct
|
35
|
+
@b.exchanges.has_key?('amq.direct').should be true
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should allow a default fanout exchange to be instantiated without specifying :type" do
|
39
|
+
exch = @b.exchange('amq.fanout')
|
40
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
41
|
+
exch.name.should == 'amq.fanout'
|
42
|
+
exch.type.should == :fanout
|
43
|
+
@b.exchanges.has_key?('amq.fanout').should be true
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should allow a default topic exchange to be instantiated without specifying :type" do
|
47
|
+
exch = @b.exchange('amq.topic')
|
48
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
49
|
+
exch.name.should == 'amq.topic'
|
50
|
+
exch.type.should == :topic
|
51
|
+
@b.exchanges.has_key?('amq.topic').should be true
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should allow a default headers (amq.match) exchange to be instantiated without specifying :type" do
|
55
|
+
exch = @b.exchange('amq.match')
|
56
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
57
|
+
exch.name.should == 'amq.match'
|
58
|
+
exch.type.should == :headers
|
59
|
+
@b.exchanges.has_key?('amq.match').should be true
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should allow a default headers (amq.headers) exchange to be instantiated without specifying :type" do
|
63
|
+
exch = @b.exchange('amq.headers')
|
64
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
65
|
+
exch.name.should == 'amq.headers'
|
66
|
+
exch.type.should == :headers
|
67
|
+
@b.exchanges.has_key?('amq.headers').should be true
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should create an exchange as direct by default" do
|
71
|
+
exch = @b.exchange('direct_defaultex')
|
72
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
73
|
+
exch.name.should == 'direct_defaultex'
|
74
|
+
exch.type.should == :direct
|
75
|
+
@b.exchanges.has_key?('direct_defaultex').should be true
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should be able to be instantiated as a direct exchange" do
|
79
|
+
exch = @b.exchange('direct_exchange', :type => :direct)
|
80
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
81
|
+
exch.name.should == 'direct_exchange'
|
82
|
+
exch.type.should == :direct
|
83
|
+
@b.exchanges.has_key?('direct_exchange').should be true
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should be able to be instantiated as a topic exchange" do
|
87
|
+
exch = @b.exchange('topic_exchange', :type => :topic)
|
88
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
89
|
+
exch.name.should == 'topic_exchange'
|
90
|
+
exch.type.should == :topic
|
91
|
+
@b.exchanges.has_key?('topic_exchange').should be true
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should be able to be instantiated as a fanout exchange" do
|
95
|
+
exch = @b.exchange('fanout_exchange', :type => :fanout)
|
96
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
97
|
+
exch.name.should == 'fanout_exchange'
|
98
|
+
exch.type.should == :fanout
|
99
|
+
@b.exchanges.has_key?('fanout_exchange').should be true
|
100
|
+
end
|
101
|
+
|
102
|
+
it "should be able to be instantiated as a headers exchange" do
|
103
|
+
exch = @b.exchange('headers_exchange', :type => :headers)
|
104
|
+
exch.should be_an_instance_of Bunny::Exchange09
|
105
|
+
exch.name.should == 'headers_exchange'
|
106
|
+
exch.type.should == :headers
|
107
|
+
@b.exchanges.has_key?('headers_exchange').should be true
|
108
|
+
end
|
109
|
+
|
110
|
+
it "should ignore the :nowait option when instantiated" do
|
111
|
+
exch = @b.exchange('direct2_exchange', :nowait => true)
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should be able to publish a message" do
|
115
|
+
exch = @b.exchange('direct_exchange')
|
116
|
+
exch.publish('This is a published message')
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should be able to be deleted" do
|
120
|
+
exch = @b.exchange('direct_exchange')
|
121
|
+
res = exch.delete
|
122
|
+
res.should == :delete_ok
|
123
|
+
@b.exchanges.has_key?('direct_exchange').should be false
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should ignore the :nowait option when deleted" do
|
127
|
+
exch = @b.exchange('direct2_exchange')
|
128
|
+
exch.delete(:nowait => true)
|
129
|
+
end
|
130
|
+
|
131
|
+
end
|
@@ -0,0 +1,106 @@
|
|
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 Bunny do
|
12
|
+
|
13
|
+
before(:each) do
|
14
|
+
@b = Bunny.new(:spec => '09')
|
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 be able to bind to an exchange" do
|
29
|
+
exch = @b.exchange('direct_exch')
|
30
|
+
q = @b.queue('test1')
|
31
|
+
q.bind(exch).should == :bind_ok
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should ignore the :nowait option when unbinding from an exchange" do
|
35
|
+
exch = @b.exchange('direct_exch')
|
36
|
+
q = @b.queue('test0')
|
37
|
+
q.unbind(exch, :nowait => true).should == :unbind_ok
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should be able to unbind from an exchange" do
|
41
|
+
exch = @b.exchange('direct_exch')
|
42
|
+
q = @b.queue('test1')
|
43
|
+
q.unbind(exch).should == :unbind_ok
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should be able to publish a message" do
|
47
|
+
q = @b.queue('test1')
|
48
|
+
q.publish('This is a test message')
|
49
|
+
q.message_count.should == 1
|
50
|
+
end
|
51
|
+
|
52
|
+
it "should be able to pop a message complete with header and delivery details" do
|
53
|
+
q = @b.queue('test1')
|
54
|
+
msg = q.pop(:header => true)
|
55
|
+
msg.should be_an_instance_of Hash
|
56
|
+
msg[:header].should be_an_instance_of Bunny::Protocol09::Header
|
57
|
+
msg[:payload].should == 'This is a test message'
|
58
|
+
msg[:delivery_details].should be_an_instance_of Hash
|
59
|
+
q.message_count.should == 0
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should be able to pop a message and just get the payload" do
|
63
|
+
q = @b.queue('test1')
|
64
|
+
q.publish('This is another test message')
|
65
|
+
msg = q.pop
|
66
|
+
msg.should == 'This is another test message'
|
67
|
+
q.message_count.should == 0
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should be able to be purged to remove all of its messages" do
|
71
|
+
q = @b.queue('test1')
|
72
|
+
5.times {q.publish('This is another test message')}
|
73
|
+
q.message_count.should == 5
|
74
|
+
q.purge
|
75
|
+
q.message_count.should == 0
|
76
|
+
end
|
77
|
+
|
78
|
+
it "should return an empty message when popping an empty queue" do
|
79
|
+
q = @b.queue('test1')
|
80
|
+
q.publish('This is another test message')
|
81
|
+
q.pop
|
82
|
+
msg = q.pop
|
83
|
+
msg.should == :queue_empty
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should be able to be deleted" do
|
87
|
+
q = @b.queue('test1')
|
88
|
+
res = q.delete
|
89
|
+
res.should == :delete_ok
|
90
|
+
@b.queues.has_key?('test1').should be false
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should ignore the :nowait option when deleted" do
|
94
|
+
q = @b.queue('test0')
|
95
|
+
q.delete(:nowait => true)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should support server named queues" do
|
99
|
+
q = @b.queue
|
100
|
+
q.name.should_not == nil
|
101
|
+
|
102
|
+
@b.queue(q.name).should == q
|
103
|
+
q.delete
|
104
|
+
end
|
105
|
+
|
106
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bunny
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Duncan
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-08-08 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -26,34 +26,50 @@ files:
|
|
26
26
|
- README
|
27
27
|
- Rakefile
|
28
28
|
- bunny.gemspec
|
29
|
-
- examples/
|
30
|
-
- examples/
|
31
|
-
- examples/
|
32
|
-
- examples/
|
33
|
-
- examples/
|
34
|
-
- examples/
|
35
|
-
- examples/
|
29
|
+
- examples/simple_08.rb
|
30
|
+
- examples/simple_ack_08.rb
|
31
|
+
- examples/simple_consumer_08.rb
|
32
|
+
- examples/simple_fanout_08.rb
|
33
|
+
- examples/simple_publisher_08.rb
|
34
|
+
- examples/simple_topic_08.rb
|
35
|
+
- examples/simple_headers_08.rb
|
36
|
+
- examples/simple_09.rb
|
37
|
+
- examples/simple_ack_09.rb
|
38
|
+
- examples/simple_consumer_09.rb
|
39
|
+
- examples/simple_fanout_09.rb
|
40
|
+
- examples/simple_publisher_09.rb
|
41
|
+
- examples/simple_topic_09.rb
|
42
|
+
- examples/simple_headers_09.rb
|
36
43
|
- lib/bunny.rb
|
44
|
+
- lib/bunny/channel08.rb
|
45
|
+
- lib/bunny/channel09.rb
|
37
46
|
- lib/bunny/client08.rb
|
38
|
-
- lib/bunny/
|
47
|
+
- lib/bunny/client09.rb
|
39
48
|
- lib/bunny/exchange08.rb
|
40
|
-
- lib/bunny/
|
49
|
+
- lib/bunny/exchange09.rb
|
41
50
|
- lib/bunny/queue08.rb
|
42
|
-
- lib/bunny/
|
51
|
+
- lib/bunny/queue09.rb
|
43
52
|
- lib/qrack/client.rb
|
44
|
-
- lib/qrack/protocol/
|
53
|
+
- lib/qrack/protocol/protocol08.rb
|
54
|
+
- lib/qrack/protocol/protocol09.rb
|
45
55
|
- lib/qrack/protocol/spec08.rb
|
46
|
-
- lib/qrack/protocol/
|
56
|
+
- lib/qrack/protocol/spec09.rb
|
47
57
|
- lib/qrack/qrack08.rb
|
48
|
-
- lib/qrack/
|
49
|
-
- lib/qrack/transport/
|
58
|
+
- lib/qrack/qrack09.rb
|
59
|
+
- lib/qrack/transport/buffer08.rb
|
60
|
+
- lib/qrack/transport/buffer09.rb
|
50
61
|
- lib/qrack/transport/frame08.rb
|
51
|
-
- lib/qrack/transport/
|
52
|
-
- spec/bunny_spec.rb
|
53
|
-
- spec/exchange_spec.rb
|
54
|
-
- spec/queue_spec.rb
|
62
|
+
- lib/qrack/transport/frame09.rb
|
63
|
+
- spec/spec_08/bunny_spec.rb
|
64
|
+
- spec/spec_08/exchange_spec.rb
|
65
|
+
- spec/spec_08/queue_spec.rb
|
66
|
+
- spec/spec_09/bunny_spec.rb
|
67
|
+
- spec/spec_09/exchange_spec.rb
|
68
|
+
- spec/spec_09/queue_spec.rb
|
55
69
|
has_rdoc: true
|
56
70
|
homepage: http://github.com/celldee/bunny/tree/master
|
71
|
+
licenses: []
|
72
|
+
|
57
73
|
post_install_message:
|
58
74
|
rdoc_options:
|
59
75
|
- --main
|
@@ -75,9 +91,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
91
|
requirements: []
|
76
92
|
|
77
93
|
rubyforge_project: bunny-amqp
|
78
|
-
rubygems_version: 1.3.
|
94
|
+
rubygems_version: 1.3.4
|
79
95
|
signing_key:
|
80
|
-
specification_version:
|
96
|
+
specification_version: 3
|
81
97
|
summary: A synchronous Ruby AMQP client that enables interaction with AMQP-compliant brokers/servers.
|
82
98
|
test_files: []
|
83
99
|
|
data/lib/qrack/qrack091.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
$: << File.expand_path(File.dirname(__FILE__))
|
2
|
-
|
3
|
-
require 'protocol/spec091'
|
4
|
-
require 'protocol/protocol'
|
5
|
-
|
6
|
-
require 'transport/buffer'
|
7
|
-
require 'transport/frame091'
|
8
|
-
|
9
|
-
require 'qrack/client'
|
10
|
-
|
11
|
-
module Qrack
|
12
|
-
|
13
|
-
include Protocol
|
14
|
-
include Transport
|
15
|
-
|
16
|
-
# Errors
|
17
|
-
class BufferOverflowError < StandardError; end
|
18
|
-
class InvalidTypeError < StandardError; end
|
19
|
-
|
20
|
-
# Qrack version number
|
21
|
-
VERSION = '0.0.1'
|
22
|
-
|
23
|
-
# Return the Qrack version
|
24
|
-
def self.version
|
25
|
-
VERSION
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|