bunny 0.7.6 → 0.7.8

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/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ = Version 0.7.8
2
+
3
+ * test suite cleanup (eliminated some race conditions related to queue.message_count)
4
+
5
+ = Version 0.7.7
6
+
7
+ * avoid warnings caused by duplicating code from the amq-client gem
8
+
1
9
  = Version 0.7.6
2
10
 
3
11
  * API mismatch between Timer/SystemTimer on Ruby 1.9 vs Ruby 1.8 is resolved.
data/Rakefile CHANGED
@@ -1,26 +1,14 @@
1
1
  # encoding: utf-8
2
2
 
3
- desc "Run AMQP 0-8 rspec tests"
4
- task :spec08 do
5
- require 'rspec/core/rake_task'
6
- puts "===== Running 0-8 tests ====="
7
- RSpec::Core::RakeTask.new("spec08") do |t|
8
- t.pattern = "spec/spec_08/*_spec.rb"
9
- t.rspec_opts = ['--color']
10
- end
11
- end
3
+ require "bundler/gem_tasks"
12
4
 
13
- desc "Run AMQP 0-9 rspec tests"
14
- task :spec09 do
5
+ desc "Run rspec tests"
6
+ task :spec do
15
7
  require 'rspec/core/rake_task'
16
- puts "===== Running 0-9 tests ====="
17
- RSpec::Core::RakeTask.new("spec09") do |t|
18
- t.pattern = "spec/spec_09/*_spec.rb"
19
- t.rspec_opts = ['--color']
8
+ RSpec::Core::RakeTask.new("spec") do |t|
9
+ t.pattern = "spec/spec_*/*_spec.rb"
10
+ t.rspec_opts = ['--color', '--format doc']
20
11
  end
21
12
  end
22
13
 
23
- task :default => [ :spec08 ]
24
-
25
- desc "Run all rspec tests"
26
- task :all => [:spec08, :spec09]
14
+ task :default => [ :spec ]
@@ -39,7 +39,6 @@ Gem::Specification.new do |s|
39
39
  require "changelog"
40
40
  s.post_install_message = CHANGELOG.new.version_changes
41
41
  rescue LoadError
42
- warn "You have to install the changelog gem for post install message."
43
42
  end
44
43
 
45
44
  # RubyForge
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module Bunny
4
- VERSION = "0.7.6"
4
+ VERSION = "0.7.8"
5
5
  end
@@ -1,6 +1,12 @@
1
1
  # encoding: utf-8
2
2
 
3
- require "qrack/amq-client-url"
3
+ begin
4
+ # try loading AMQ::Client::Setttings form the amq client gem, if it has been already loaded
5
+ # this avoids "warning: already initialized constant AMQP_PORTS"
6
+ require "amq/client/settings"
7
+ rescue LoadError
8
+ require "qrack/amq-client-url"
9
+ end
4
10
 
5
11
  module Qrack
6
12
 
@@ -17,6 +17,15 @@ describe Bunny do
17
17
  @b.start
18
18
  end
19
19
 
20
+ after(:each) do
21
+ begin
22
+ @b.stop
23
+ rescue Exception
24
+ ensure
25
+ @b = nil
26
+ end
27
+ end
28
+
20
29
  it "should connect to an AMQP server" do
21
30
  @b.status.should == :connected
22
31
  end
@@ -13,10 +13,10 @@ describe Bunny do
13
13
 
14
14
  it "should be able to open a TCPSocket with a timeout" do
15
15
  b = Bunny.new(:spec => "0.8")
16
- connect_timeout = 1
17
- lambda {
16
+ connect_timeout = 5
17
+ lambda {
18
18
  Bunny::Timer::timeout(connect_timeout, Qrack::ConnectionTimeout) do
19
- TCPSocket.new(b.host, b.port)
19
+ TCPSocket.new(b.host, b.port)
20
20
  end
21
21
  }.should_not raise_error(Exception)
22
22
  end
@@ -17,6 +17,15 @@ describe 'Exchange' do
17
17
  @b.start
18
18
  end
19
19
 
20
+ after(:each) do
21
+ begin
22
+ @b.stop
23
+ rescue Exception
24
+ ensure
25
+ @b = nil
26
+ end
27
+ end
28
+
20
29
  it "should raise an error if instantiated as non-existent type" do
21
30
  lambda { @b.exchange('bogus_ex', :type => :bogus) }.should raise_error(Bunny::ForcedConnectionCloseError)
22
31
  @b.status.should == :not_connected
@@ -16,11 +16,25 @@ describe 'Queue' do
16
16
  Bunny.should_receive(:deprecation_warning).with("Qrack::Queue#publish", "0.8", anything).exactly(n).times
17
17
  end
18
18
 
19
+ def message_count(queue, sleep_time = 0.1)
20
+ sleep sleep_time
21
+ queue.message_count
22
+ end
23
+
19
24
  before(:each) do
20
25
  @b = Bunny.new
21
26
  @b.start
22
27
  end
23
28
 
29
+ after(:each) do
30
+ begin
31
+ @b.stop
32
+ rescue Exception
33
+ ensure
34
+ @b = nil
35
+ end
36
+ end
37
+
24
38
  it "should ignore the :nowait option when instantiated" do
25
39
  q = @b.queue('test0', :nowait => true)
26
40
  end
@@ -65,7 +79,7 @@ describe 'Queue' do
65
79
  q = @b.queue('test1')
66
80
  expect_deprecation_warning_for_publishing_on_queue(q)
67
81
  q.publish('This is a test message')
68
- q.message_count.should == 1
82
+ message_count(q).should == 1
69
83
  end
70
84
 
71
85
  it "should be able to pop a message complete with header and delivery details" do
@@ -75,7 +89,7 @@ describe 'Queue' do
75
89
  msg[:header].should be_an_instance_of(Bunny::Protocol::Header)
76
90
  msg[:payload].should == 'This is a test message'
77
91
  msg[:delivery_details].should be_an_instance_of(Hash)
78
- q.message_count.should == 0
92
+ message_count(q).should == 0
79
93
  end
80
94
 
81
95
  it "should be able to pop a message and just get the payload" do
@@ -84,7 +98,7 @@ describe 'Queue' do
84
98
  q.publish('This is another test message')
85
99
  msg = q.pop[:payload]
86
100
  msg.should == 'This is another test message'
87
- q.message_count.should == 0
101
+ message_count(q).should == 0
88
102
  end
89
103
 
90
104
  it "should be able to pop a message where body length exceeds max frame size" do
@@ -108,15 +122,15 @@ describe 'Queue' do
108
122
  q = @b.queue('test1')
109
123
  expect_deprecation_warning_for_publishing_on_queue(q, 5)
110
124
  5.times {q.publish('This is another test message')}
111
- q.message_count.should == 5
125
+ message_count(q).should == 5
112
126
  lambda {q.purge(:queue => 'bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
113
127
  end
114
128
 
115
129
  it "should be able to be purged to remove all of its messages" do
116
130
  q = @b.queue('test1')
117
- q.message_count.should == 5
131
+ message_count(q).should == 5
118
132
  q.purge.should == :purge_ok
119
- q.message_count.should == 0
133
+ message_count(q).should == 0
120
134
  end
121
135
 
122
136
  it "should return an empty message when popping an empty queue" do
@@ -132,9 +146,9 @@ describe 'Queue' do
132
146
  q = @b.queue('test1')
133
147
  expect_deprecation_warning_for_publishing_on_queue(q, 5)
134
148
  5.times {q.publish('Yet another test message')}
135
- q.message_count.should == 5
149
+ message_count(q).should == 5
136
150
  q.subscribe(:message_max => 0)
137
- q.message_count.should == 5
151
+ message_count(q).should == 5
138
152
  q.purge.should == :purge_ok
139
153
  end
140
154
 
@@ -142,7 +156,7 @@ describe 'Queue' do
142
156
  q = @b.queue('test1')
143
157
  expect_deprecation_warning_for_publishing_on_queue(q, 5)
144
158
  5.times {q.publish('Yet another test message')}
145
- q.message_count.should == 5
159
+ message_count(q).should == 5
146
160
  q.subscribe(:message_max => 5)
147
161
  end
148
162
 
@@ -151,9 +165,9 @@ describe 'Queue' do
151
165
  @b.qos()
152
166
  expect_deprecation_warning_for_publishing_on_queue(q, 10)
153
167
  10.times {q.publish('Yet another test message')}
154
- q.message_count.should == 10
168
+ message_count(q).should == 10
155
169
  q.subscribe(:message_max => 5, :ack => true)
156
- q.message_count.should == 5
170
+ message_count(q).should == 5
157
171
  q.purge.should == :purge_ok
158
172
  end
159
173
 
@@ -13,6 +13,7 @@ describe Bunny do
13
13
  it "handles port properly" do
14
14
  bunny = Bunny.new("amqp://dev.rabbitmq.com:1212")
15
15
  bunny.port.should eql(1212)
16
+ bunny.stop
16
17
  end
17
18
  end
18
19
  end
@@ -17,6 +17,15 @@ describe Bunny do
17
17
  @b.start
18
18
  end
19
19
 
20
+ after(:each) do
21
+ begin
22
+ @b.stop
23
+ rescue Exception
24
+ ensure
25
+ @b = nil
26
+ end
27
+ end
28
+
20
29
  it "should connect to an AMQP server" do
21
30
  @b.status.should == :connected
22
31
  end
@@ -18,10 +18,10 @@ describe Bunny do
18
18
 
19
19
  it "should be able to open a TCPSocket with a timeout" do
20
20
  b = Bunny.new(:spec => "0.9")
21
- connect_timeout = 1
22
- lambda {
21
+ connect_timeout = 5
22
+ lambda {
23
23
  Bunny::Timer::timeout(connect_timeout, Qrack::ConnectionTimeout) do
24
- TCPSocket.new(b.host, b.port)
24
+ TCPSocket.new(b.host, b.port)
25
25
  end
26
26
  }.should_not raise_error(Exception)
27
27
  end
@@ -17,6 +17,15 @@ describe 'Exchange' do
17
17
  @b.start
18
18
  end
19
19
 
20
+ after(:each) do
21
+ begin
22
+ @b.stop
23
+ rescue Exception
24
+ ensure
25
+ @b = nil
26
+ end
27
+ end
28
+
20
29
  it "should raise an error if instantiated as non-existent type" do
21
30
  lambda { @b.exchange('bogus_ex', :type => :bogus) }.should raise_error(Bunny::ForcedConnectionCloseError)
22
31
  @b.status.should == :not_connected
@@ -19,6 +19,20 @@ describe 'Queue' do
19
19
  @default_exchange = @b.exchange("")
20
20
  end
21
21
 
22
+ after(:each) do
23
+ begin
24
+ @b.stop
25
+ rescue Exception
26
+ ensure
27
+ @b = nil
28
+ end
29
+ end
30
+
31
+ def message_count(queue, sleep_time = 0.1)
32
+ sleep sleep_time
33
+ queue.message_count
34
+ end
35
+
22
36
  it "should ignore the :nowait option when instantiated" do
23
37
  q = @b.queue('test0', :nowait => true)
24
38
  end
@@ -67,7 +81,7 @@ describe 'Queue' do
67
81
  msg[:header].should be_an_instance_of(Bunny::Protocol09::Header)
68
82
  msg[:payload].should == 'This is a test message'
69
83
  msg[:delivery_details].should be_an_instance_of(Hash)
70
- q.message_count.should == 0
84
+ message_count(q).should == 0
71
85
  end
72
86
 
73
87
  it "should be able to pop a message and just get the payload" do
@@ -75,7 +89,7 @@ describe 'Queue' do
75
89
  @default_exchange.publish('This is another test message', :key => 'test1')
76
90
  msg = q.pop[:payload]
77
91
  msg.should == 'This is another test message'
78
- q.message_count.should == 0
92
+ message_count(q).should == 0
79
93
  end
80
94
 
81
95
  it "should be able to pop a message where body length exceeds max frame size" do
@@ -96,15 +110,15 @@ describe 'Queue' do
96
110
  it "should raise an error if purge fails" do
97
111
  q = @b.queue('test1')
98
112
  5.times { @default_exchange.publish('This is another test message', :key => 'test1') }
99
- q.message_count.should == 5
113
+ message_count(q).should == 5
100
114
  lambda {q.purge(:queue => 'bogus')}.should raise_error(Bunny::ForcedChannelCloseError)
101
115
  end
102
116
 
103
117
  it "should be able to be purged to remove all of its messages" do
104
118
  q = @b.queue('test1')
105
- q.message_count.should == 5
119
+ message_count(q).should == 5
106
120
  q.purge.should == :purge_ok
107
- q.message_count.should == 0
121
+ message_count(q).should == 0
108
122
  end
109
123
 
110
124
  it "should return an empty message when popping an empty queue" do
@@ -118,16 +132,16 @@ describe 'Queue' do
118
132
  it "should stop subscription without processing messages if max specified is 0" do
119
133
  q = @b.queue('test1')
120
134
  5.times { @default_exchange.publish('Yet another test message', :key => 'test1') }
121
- q.message_count.should == 5
135
+ message_count(q).should == 5
122
136
  q.subscribe(:message_max => 0)
123
- q.message_count.should == 5
137
+ message_count(q).should == 5
124
138
  q.purge.should == :purge_ok
125
139
  end
126
140
 
127
141
  it "should stop subscription after processing number of messages specified > 0" do
128
142
  q = @b.queue('test1')
129
143
  5.times { @default_exchange.publish('Yet another test message', :key => 'test1') }
130
- q.message_count.should == 5
144
+ message_count(q).should == 5
131
145
  q.subscribe(:message_max => 5)
132
146
  end
133
147
 
@@ -135,9 +149,9 @@ describe 'Queue' do
135
149
  q = @b.queue('test1')
136
150
  @b.qos()
137
151
  10.times { @default_exchange.publish('Yet another test message', :key => 'test1') }
138
- q.message_count.should == 10
152
+ message_count(q).should == 10
139
153
  q.subscribe(:message_max => 5, :ack => true)
140
- q.message_count.should == 5
154
+ message_count(q).should == 5
141
155
  q.purge.should == :purge_ok
142
156
  end
143
157
 
metadata CHANGED
@@ -1,15 +1,10 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bunny
3
- version: !ruby/object:Gem::Version
4
- hash: 15
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.8
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 7
9
- - 6
10
- version: 0.7.6
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Chris Duncan
14
9
  - Eric Lindvall
15
10
  - Jakub Stastny aka botanicus
@@ -18,25 +13,22 @@ authors:
18
13
  autorequire:
19
14
  bindir: bin
20
15
  cert_chain: []
21
-
22
- date: 2011-09-21 00:00:00 +04:00
16
+ date: 2011-10-11 00:00:00.000000000 +02:00
23
17
  default_executable:
24
18
  dependencies: []
25
-
26
- description: A synchronous Ruby AMQP client that enables interaction with AMQP-compliant brokers.
27
- email:
19
+ description: A synchronous Ruby AMQP client that enables interaction with AMQP-compliant
20
+ brokers.
21
+ email:
28
22
  - celldee@gmail.com
29
23
  - eric@5stops.com
30
24
  - stastny@101ideas.cz
31
25
  - michael@novemberain.com
32
26
  - skaes@railsexpress.de
33
27
  executables: []
34
-
35
28
  extensions: []
36
-
37
- extra_rdoc_files:
29
+ extra_rdoc_files:
38
30
  - README.textile
39
- files:
31
+ files:
40
32
  - .gitignore
41
33
  - .rspec
42
34
  - .travis.yml
@@ -107,39 +99,32 @@ files:
107
99
  has_rdoc: true
108
100
  homepage: http://github.com/ruby-amqp/bunny
109
101
  licenses: []
110
-
111
- post_install_message: "[\e[32mVersion 0.7.6\e[0m] API mismatch between Timer/SystemTimer on Ruby 1.9 vs Ruby 1.8 is resolved.\n"
112
- rdoc_options:
102
+ post_install_message: ! "[\e[32mVersion 0.7.8\e[0m] test suite cleanup (eliminated
103
+ some race conditions related to queue.message_count)\n"
104
+ rdoc_options:
113
105
  - --main
114
106
  - README.rdoc
115
- require_paths:
107
+ require_paths:
116
108
  - lib
117
- required_ruby_version: !ruby/object:Gem::Requirement
109
+ required_ruby_version: !ruby/object:Gem::Requirement
118
110
  none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- hash: 3
123
- segments:
124
- - 0
125
- version: "0"
126
- required_rubygems_version: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
127
116
  none: false
128
- requirements:
129
- - - ">="
130
- - !ruby/object:Gem::Version
131
- hash: 3
132
- segments:
133
- - 0
134
- version: "0"
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
135
121
  requirements: []
136
-
137
122
  rubyforge_project: bunny-amqp
138
123
  rubygems_version: 1.6.2
139
124
  signing_key:
140
125
  specification_version: 3
141
126
  summary: Synchronous Ruby AMQP 0.9.1 client
142
- test_files:
127
+ test_files:
143
128
  - spec/spec_08/bunny_spec.rb
144
129
  - spec/spec_08/connection_spec.rb
145
130
  - spec/spec_08/exchange_spec.rb