beaneater 0.3.0 → 1.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.
- checksums.yaml +7 -0
- data/.travis.yml +14 -0
- data/CHANGELOG.md +31 -1
- data/Gemfile +5 -1
- data/README.md +50 -26
- data/Rakefile +3 -1
- data/beaneater.gemspec +1 -1
- data/examples/demo.rb +1 -2
- data/lib/beaneater.rb +57 -4
- data/lib/beaneater/configuration.rb +3 -1
- data/lib/beaneater/connection.rb +135 -30
- data/lib/beaneater/errors.rb +4 -4
- data/lib/beaneater/job/collection.rb +67 -37
- data/lib/beaneater/job/record.rb +42 -30
- data/lib/beaneater/stats.rb +28 -5
- data/lib/beaneater/stats/fast_struct.rb +1 -1
- data/lib/beaneater/stats/stat_struct.rb +8 -2
- data/lib/beaneater/tube/collection.rb +67 -26
- data/lib/beaneater/tube/record.rb +45 -27
- data/lib/beaneater/version.rb +2 -2
- data/test/beaneater_test.rb +5 -11
- data/test/connection_test.rb +55 -1
- data/test/errors_test.rb +9 -2
- data/test/job_test.rb +8 -12
- data/test/jobs_test.rb +15 -43
- data/test/prompt_regexp_test.rb +14 -2
- data/test/stat_struct_test.rb +12 -2
- data/test/stats_test.rb +9 -9
- data/test/test_helper.rb +34 -10
- data/test/tube_test.rb +12 -23
- data/test/tubes_test.rb +61 -56
- metadata +25 -65
- data/lib/beaneater/pool.rb +0 -166
- data/lib/beaneater/pool_command.rb +0 -79
- data/test/pool_command_test.rb +0 -90
- data/test/pool_test.rb +0 -180
data/test/errors_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/errors_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -23,4 +23,11 @@ describe "Beaneater::Errors" do
|
|
23
23
|
assert_equal 'reserve 0', @klazz.cmd
|
24
24
|
assert_equal 'DEADLINE_SOON', @klazz.status
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
|
+
it 'should raise proper exception for invalid status EXPECTED_CRLF' do
|
28
|
+
@klazz = Beaneater::UnexpectedResponse.from_status("EXPECTED_CRLF", "reserve 0")
|
29
|
+
assert_kind_of(Beaneater::ExpectedCrlfError, @klazz)
|
30
|
+
assert_equal 'reserve 0', @klazz.cmd
|
31
|
+
assert_equal 'EXPECTED_CRLF', @klazz.status
|
32
|
+
end
|
33
|
+
end
|
data/test/job_test.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
# test/
|
1
|
+
# test/job_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
5
5
|
describe Beaneater::Job do
|
6
6
|
before do
|
7
|
-
@
|
8
|
-
@tube = @
|
7
|
+
@beanstalk = Beaneater.new('localhost')
|
8
|
+
@tube = @beanstalk.tubes.find 'tube'
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "for #bury" do
|
@@ -139,7 +139,7 @@ describe Beaneater::Job do
|
|
139
139
|
assert_equal 'foo touch', job.body
|
140
140
|
job.bury
|
141
141
|
assert_equal 1, @tube.stats.current_jobs_buried
|
142
|
-
if @
|
142
|
+
if @beanstalk.stats.version.to_f > 1.7
|
143
143
|
job.kick
|
144
144
|
assert_equal 0, @tube.stats.current_jobs_buried
|
145
145
|
assert_equal 1, @tube.stats.current_jobs_ready
|
@@ -218,7 +218,7 @@ describe Beaneater::Job do
|
|
218
218
|
assert_equal 1, job.pri
|
219
219
|
job.release
|
220
220
|
end
|
221
|
-
end #
|
221
|
+
end # pri
|
222
222
|
|
223
223
|
|
224
224
|
describe "for #ttr" do
|
@@ -232,7 +232,7 @@ describe Beaneater::Job do
|
|
232
232
|
assert_equal 5, job.ttr
|
233
233
|
job.release
|
234
234
|
end
|
235
|
-
end #
|
235
|
+
end # ttr
|
236
236
|
|
237
237
|
describe "for #delay" do
|
238
238
|
before do
|
@@ -243,9 +243,5 @@ describe Beaneater::Job do
|
|
243
243
|
it("should return delay") do
|
244
244
|
assert_equal 5, @job.delay
|
245
245
|
end
|
246
|
-
end #
|
247
|
-
|
248
|
-
after do
|
249
|
-
cleanup_tubes!(['tube'])
|
250
|
-
end
|
251
|
-
end # Beaneater::Tubes
|
246
|
+
end # delay
|
247
|
+
end # Beaneater::Job
|
data/test/jobs_test.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
# test/
|
1
|
+
# test/jobs_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
5
5
|
describe Beaneater::Jobs do
|
6
6
|
before do
|
7
|
-
@
|
8
|
-
@jobs = Beaneater::Jobs.new(@
|
9
|
-
@tube = @
|
7
|
+
@beanstalk = Beaneater.new('localhost')
|
8
|
+
@jobs = Beaneater::Jobs.new(@beanstalk)
|
9
|
+
@tube = @beanstalk.tubes.find('baz')
|
10
10
|
end
|
11
11
|
|
12
12
|
describe "for #find" do
|
@@ -33,30 +33,6 @@ describe Beaneater::Jobs do
|
|
33
33
|
end
|
34
34
|
end # find
|
35
35
|
|
36
|
-
describe "for #find_all" do
|
37
|
-
before do
|
38
|
-
@time = Time.now.to_i
|
39
|
-
@tube.put("foo find #{@time}")
|
40
|
-
@job = @tube.peek(:ready)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should return job from id" do
|
44
|
-
assert_equal "foo find #{@time}", @jobs.find_all(@job.id).first.body
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should return job using peek" do
|
48
|
-
assert_equal "foo find #{@time}", @jobs.find_all(@job.id).first.body
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should return job using hash syntax" do
|
52
|
-
assert_equal "foo find #{@time}", @jobs.find_all(@job.id).first.body
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should return nil for invalid id" do
|
56
|
-
assert_equal [], @jobs.find_all(-1)
|
57
|
-
end
|
58
|
-
end # find_all
|
59
|
-
|
60
36
|
describe "for #register!" do
|
61
37
|
before do
|
62
38
|
$foo = 0
|
@@ -98,10 +74,10 @@ describe Beaneater::Jobs do
|
|
98
74
|
|
99
75
|
cleanup_tubes!(['tube_success', 'tube_release', 'tube_buried'])
|
100
76
|
|
101
|
-
@
|
102
|
-
@
|
103
|
-
@
|
104
|
-
@
|
77
|
+
@beanstalk.tubes.find('tube_success').put("success abort", :pri => 2**31 + 1)
|
78
|
+
@beanstalk.tubes.find('tube_success').put("success 2", :pri => 1)
|
79
|
+
@beanstalk.tubes.find('tube_release').put("released")
|
80
|
+
@beanstalk.tubes.find('tube_buried').put("buried")
|
105
81
|
|
106
82
|
@jobs.process!(:release_delay => 0)
|
107
83
|
end
|
@@ -111,21 +87,17 @@ describe Beaneater::Jobs do
|
|
111
87
|
end
|
112
88
|
|
113
89
|
it "should clear successful_jobs" do
|
114
|
-
assert_equal 0, @
|
115
|
-
assert_equal 1, @
|
116
|
-
assert_equal 0, @
|
90
|
+
assert_equal 0, @beanstalk.tubes.find('tube_success').stats.current_jobs_ready
|
91
|
+
assert_equal 1, @beanstalk.tubes.find('tube_success').stats.current_jobs_buried
|
92
|
+
assert_equal 0, @beanstalk.tubes.find('tube_success').stats.current_jobs_reserved
|
117
93
|
end
|
118
94
|
|
119
95
|
it "should retry release jobs 2 times" do
|
120
|
-
assert_equal 2, @
|
96
|
+
assert_equal 2, @beanstalk.tubes.find('tube_release').peek(:buried).stats.releases
|
121
97
|
end
|
122
98
|
|
123
99
|
it "should bury unexpected exception" do
|
124
|
-
assert_equal 1, @
|
100
|
+
assert_equal 1, @beanstalk.tubes.find('tube_buried').stats.current_jobs_buried
|
125
101
|
end
|
126
|
-
end
|
127
|
-
|
128
|
-
after do
|
129
|
-
cleanup_tubes!(['baz', 'tube_success', 'tube_release', 'tube_buried'])
|
130
|
-
end
|
131
|
-
end
|
102
|
+
end # for_process!
|
103
|
+
end # Beaneater::Jobs
|
data/test/prompt_regexp_test.rb
CHANGED
@@ -31,15 +31,27 @@ describe "Reading from socket client" do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
|
+
|
35
|
+
slept = 0
|
36
|
+
while @beanstalk.nil?
|
37
|
+
begin
|
38
|
+
@beanstalk = Beaneater.new("localhost:#{@fake_port}")
|
39
|
+
rescue Beaneater::NotConnected
|
40
|
+
raise 'Could not connect to fake beanstalkd server' if slept > 1
|
41
|
+
sleep 0.1
|
42
|
+
slept += 0.1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
34
46
|
end
|
35
47
|
|
36
48
|
it 'should reserve job with full body' do
|
37
|
-
|
38
|
-
job = pool.tubes[@tube_name].reserve
|
49
|
+
job = @beanstalk.tubes[@tube_name].reserve
|
39
50
|
assert_equal '[first part][second part]', job.body
|
40
51
|
end
|
41
52
|
|
42
53
|
after do
|
54
|
+
@beanstalk.close
|
43
55
|
@fake_server.kill
|
44
56
|
end
|
45
57
|
end
|
data/test/stat_struct_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# test/
|
1
|
+
# test/stat_struct_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
@@ -38,4 +38,14 @@ describe Beaneater::StatStruct do
|
|
38
38
|
assert_equal ['foo', 'bar', 'baz', 'under_score'].sort, @struct.keys.sort
|
39
39
|
end
|
40
40
|
end # keys
|
41
|
-
|
41
|
+
|
42
|
+
describe "for #to_h" do
|
43
|
+
it "should return 4 keys / values" do
|
44
|
+
assert_equal 4, @struct.to_h.size
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should return expect hash" do
|
48
|
+
assert_equal [['foo', 'bar'], ['bar', 'baz'], ['baz', 'foo'], ['under_score', 'demo']].sort, @struct.to_h.sort
|
49
|
+
end
|
50
|
+
end # to_h
|
51
|
+
end # Beaneater::StatStruct
|
data/test/stats_test.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
# test/
|
1
|
+
# test/stats_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
5
5
|
describe Beaneater::Stats do
|
6
6
|
before do
|
7
|
-
|
8
|
-
|
9
|
-
@stats = Beaneater::Stats.new(@
|
7
|
+
connection = stub(:transmit => { :body => { 'uptime' => 1, 'cmd-use' => 2 }, :status => "OK"})
|
8
|
+
@beanstalk = stub(:connection => connection)
|
9
|
+
@stats = Beaneater::Stats.new(@beanstalk)
|
10
10
|
end
|
11
11
|
|
12
12
|
describe 'for #[]' do
|
13
13
|
it "should return stats by key" do
|
14
|
-
assert_equal
|
14
|
+
assert_equal 1, @stats[:uptime]
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should return stats by underscore key" do
|
18
|
-
assert_equal
|
18
|
+
assert_equal 2, @stats[:'cmd_use']
|
19
19
|
end
|
20
20
|
end # []
|
21
21
|
|
@@ -29,15 +29,15 @@ describe Beaneater::Stats do
|
|
29
29
|
|
30
30
|
describe 'for #method_missing' do
|
31
31
|
it "should return stats by key" do
|
32
|
-
assert_equal
|
32
|
+
assert_equal 1, @stats.uptime
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should return stats by underscore key" do
|
36
|
-
assert_equal
|
36
|
+
assert_equal 2, @stats.cmd_use
|
37
37
|
end
|
38
38
|
|
39
39
|
it "should raise NoMethodError" do
|
40
40
|
assert_raises(NoMethodError) { @stats.cmd }
|
41
41
|
end
|
42
42
|
end # method_missing
|
43
|
-
end # Beaneater::Stats
|
43
|
+
end # Beaneater::Stats
|
data/test/test_helper.rb
CHANGED
@@ -1,22 +1,46 @@
|
|
1
1
|
ENV["TEST"] = 'true'
|
2
2
|
require 'rubygems'
|
3
|
+
require 'coveralls'
|
4
|
+
Coveralls.wear!
|
3
5
|
require 'minitest/autorun'
|
4
6
|
$:.unshift File.expand_path("../../lib")
|
5
7
|
require 'beaneater'
|
6
|
-
require '
|
7
|
-
|
8
|
+
require 'timeout'
|
9
|
+
begin
|
10
|
+
require 'mocha/setup'
|
11
|
+
rescue LoadError
|
12
|
+
require 'mocha'
|
13
|
+
end
|
8
14
|
require 'json'
|
9
15
|
|
10
|
-
FakeWeb.allow_net_connect = false
|
11
|
-
|
12
16
|
class MiniTest::Unit::TestCase
|
13
17
|
|
14
|
-
# Cleans up all jobs from tubes
|
15
|
-
#
|
16
|
-
|
17
|
-
|
18
|
+
# Cleans up all jobs from specific tubes
|
19
|
+
#
|
20
|
+
# @example
|
21
|
+
# cleanup_tubes!(['foo'], @beanstalk)
|
22
|
+
#
|
23
|
+
def cleanup_tubes!(tubes, client=nil)
|
24
|
+
client ||= @beanstalk
|
18
25
|
tubes.each do |name|
|
19
|
-
|
26
|
+
client.tubes.find(name).clear
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Cleans up all jobs from all tubes known to the connection
|
31
|
+
def flush_all(client=nil)
|
32
|
+
client ||= @beanstalk
|
33
|
+
|
34
|
+
# Do not continue if it is a mock or the connection has been closed
|
35
|
+
return if !client.is_a?(Beaneater) || !client.connection.connection
|
36
|
+
|
37
|
+
client.tubes.all.each do |tube|
|
38
|
+
tube.clear
|
20
39
|
end
|
21
40
|
end
|
22
|
-
|
41
|
+
|
42
|
+
# Run clean up after each test to ensure clean state in all tests
|
43
|
+
def teardown
|
44
|
+
flush_all
|
45
|
+
end
|
46
|
+
end
|
data/test/tube_test.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
# test/
|
1
|
+
# test/tube_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
5
5
|
describe Beaneater::Tube do
|
6
6
|
before do
|
7
|
-
@
|
8
|
-
@tube = Beaneater::Tube.new(@
|
7
|
+
@beanstalk = Beaneater.new('localhost')
|
8
|
+
@tube = Beaneater::Tube.new(@beanstalk, 'baz')
|
9
9
|
end
|
10
10
|
|
11
11
|
describe "for #put" do
|
@@ -26,22 +26,15 @@ describe Beaneater::Tube do
|
|
26
26
|
assert_equal "delayed put #{@time}", @tube.peek(:delayed).body
|
27
27
|
end
|
28
28
|
|
29
|
-
it "should
|
30
|
-
Beaneater
|
31
|
-
|
32
|
-
|
33
|
-
assert_equal 'foo', @tube.put("bar put #{@time}")
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should try to put 3 times before to raise" do
|
37
|
-
Beaneater::Connection.any_instance.expects(:transmit).once.with(includes('use baz'), {})
|
38
|
-
Beaneater::Connection.any_instance.expects(:transmit).with(includes("bar put #{@time}"), {}).
|
39
|
-
times(3).raises(Beaneater::DrainingError.new(nil, nil))
|
40
|
-
assert_raises(Beaneater::DrainingError) { @tube.put "bar put #{@time}" }
|
29
|
+
it "should support custom serializer" do
|
30
|
+
Beaneater.configure.job_serializer = lambda { |b| JSON.dump(b) }
|
31
|
+
@tube.put({ foo: "bar"})
|
32
|
+
assert_equal '{"foo":"bar"}', @tube.peek(:ready).body
|
41
33
|
end
|
42
34
|
|
43
35
|
after do
|
44
36
|
Beaneater::Connection.any_instance.unstub(:transmit)
|
37
|
+
Beaneater.configure.job_serializer = lambda { |b| b }
|
45
38
|
end
|
46
39
|
end # put
|
47
40
|
|
@@ -140,7 +133,7 @@ describe Beaneater::Tube do
|
|
140
133
|
describe "for #pause" do
|
141
134
|
before do
|
142
135
|
@time = Time.now.to_i
|
143
|
-
@tube = Beaneater::Tube.new(@
|
136
|
+
@tube = Beaneater::Tube.new(@beanstalk, 'bam')
|
144
137
|
@tube.put "foo pause #{@time}"
|
145
138
|
end
|
146
139
|
|
@@ -164,7 +157,7 @@ describe Beaneater::Tube do
|
|
164
157
|
end
|
165
158
|
|
166
159
|
it "should raise error for empty tube" do
|
167
|
-
assert_raises(Beaneater::NotFoundError) { @
|
160
|
+
assert_raises(Beaneater::NotFoundError) { @beanstalk.tubes.find('fake_tube').stats }
|
168
161
|
end
|
169
162
|
end # stats
|
170
163
|
|
@@ -198,12 +191,8 @@ describe Beaneater::Tube do
|
|
198
191
|
tube_counts = lambda { %w(ready buried delayed).map { |s| @tube.stats["current_jobs_#{s}"] } }
|
199
192
|
assert_equal [2, 2, 2], tube_counts.call
|
200
193
|
@tube.clear
|
201
|
-
|
194
|
+
@tube.stats
|
202
195
|
assert_equal [0, 0, 0], tube_counts.call
|
203
196
|
end
|
204
197
|
end # clear
|
205
|
-
|
206
|
-
after do
|
207
|
-
cleanup_tubes!(['baz'])
|
208
|
-
end
|
209
|
-
end # Beaneater::Tubes
|
198
|
+
end # Beaneater::Tube
|
data/test/tubes_test.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
# test/
|
1
|
+
# test/tubes_test.rb
|
2
2
|
|
3
3
|
require File.expand_path('../test_helper', __FILE__)
|
4
4
|
|
5
5
|
describe Beaneater::Tubes do
|
6
6
|
describe "for #find" do
|
7
7
|
before do
|
8
|
-
@
|
9
|
-
@tubes = Beaneater::Tubes.new(@
|
8
|
+
@beanstalk = stub
|
9
|
+
@tubes = Beaneater::Tubes.new(@beanstalk)
|
10
10
|
end
|
11
11
|
|
12
12
|
it("should return Tube obj") { assert_kind_of Beaneater::Tube, @tubes.find(:foo) }
|
@@ -16,143 +16,148 @@ describe Beaneater::Tubes do
|
|
16
16
|
|
17
17
|
describe "for #use" do
|
18
18
|
before do
|
19
|
-
@
|
19
|
+
@beanstalk = Beaneater.new('localhost')
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should switch to used tube for valid name" do
|
23
|
-
|
24
|
-
@
|
25
|
-
assert_equal 'some_name', @
|
23
|
+
Beaneater::Tube.new(@beanstalk, 'some_name')
|
24
|
+
@beanstalk.tubes.use('some_name')
|
25
|
+
assert_equal 'some_name', @beanstalk.tubes.used.name
|
26
26
|
end
|
27
27
|
|
28
28
|
it "should raise for invalid tube name" do
|
29
|
-
assert_raises(Beaneater::InvalidTubeName) { @
|
29
|
+
assert_raises(Beaneater::InvalidTubeName) { @beanstalk.tubes.use('; ') }
|
30
30
|
end
|
31
31
|
end # use
|
32
32
|
|
33
33
|
describe "for #watch & #watched" do
|
34
34
|
before do
|
35
|
-
@
|
35
|
+
@beanstalk = Beaneater.new('localhost')
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'should watch specified tubes' do
|
39
|
-
@
|
40
|
-
@
|
41
|
-
assert_equal ['default', 'foo', 'bar'].sort, @
|
39
|
+
@beanstalk.tubes.watch('foo')
|
40
|
+
@beanstalk.tubes.watch('bar')
|
41
|
+
assert_equal ['default', 'foo', 'bar'].sort, @beanstalk.tubes.watched.map(&:name).sort
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'should raise invalid name for bad tube' do
|
45
|
-
assert_raises(Beaneater::InvalidTubeName) { @
|
45
|
+
assert_raises(Beaneater::InvalidTubeName) { @beanstalk.tubes.watch('; ') }
|
46
46
|
end
|
47
47
|
end # watch! & watched
|
48
48
|
|
49
49
|
describe "for #all" do
|
50
50
|
before do
|
51
|
-
@
|
52
|
-
@
|
53
|
-
@
|
51
|
+
@beanstalk = Beaneater.new('localhost')
|
52
|
+
@beanstalk.tubes.find('foo').put 'bar'
|
53
|
+
@beanstalk.tubes.find('bar').put 'foo'
|
54
54
|
end
|
55
55
|
|
56
56
|
it 'should retrieve all tubes' do
|
57
57
|
['default', 'foo', 'bar'].each do |t|
|
58
|
-
assert @
|
58
|
+
assert @beanstalk.tubes.all.map(&:name).include?(t)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end # all
|
62
62
|
|
63
|
+
describe "for Enumerable" do
|
64
|
+
before do
|
65
|
+
@beanstalk = Beaneater.new('localhost')
|
66
|
+
@beanstalk.tubes.find('foo').put 'bar'
|
67
|
+
@beanstalk.tubes.find('bar').put 'foo'
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should map tubes' do
|
71
|
+
['default', 'foo', 'bar'].each do |t|
|
72
|
+
assert @beanstalk.tubes.map(&:name).include?(t)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
63
77
|
describe "for #used" do
|
64
78
|
before do
|
65
|
-
@
|
66
|
-
@
|
67
|
-
@
|
79
|
+
@beanstalk = Beaneater.new('localhost')
|
80
|
+
@beanstalk.tubes.find('foo').put 'bar'
|
81
|
+
@beanstalk.tubes.find('bar').put 'foo'
|
68
82
|
end
|
69
83
|
|
70
84
|
it 'should retrieve used tube' do
|
71
|
-
assert_equal 'bar', @
|
85
|
+
assert_equal 'bar', @beanstalk.tubes.used.name
|
72
86
|
end
|
73
87
|
|
74
88
|
it 'should support dashed tubes' do
|
75
|
-
@
|
76
|
-
assert_equal 'der-bam', @
|
89
|
+
@beanstalk.tubes.find('der-bam').put 'foo'
|
90
|
+
assert_equal 'der-bam', @beanstalk.tubes.used.name
|
77
91
|
end
|
78
92
|
end # used
|
79
93
|
|
80
94
|
describe "for #watch!" do
|
81
95
|
before do
|
82
|
-
@
|
96
|
+
@beanstalk = Beaneater.new('localhost')
|
83
97
|
end
|
84
98
|
|
85
99
|
it 'should watch specified tubes' do
|
86
|
-
@
|
87
|
-
@
|
88
|
-
assert_equal ['bar'].sort, @
|
100
|
+
@beanstalk.tubes.watch!(:foo)
|
101
|
+
@beanstalk.tubes.watch!('bar')
|
102
|
+
assert_equal ['bar'].sort, @beanstalk.tubes.watched.map(&:name).sort
|
89
103
|
end
|
90
104
|
end # watch!
|
91
105
|
|
92
106
|
describe "for #ignore" do
|
93
107
|
before do
|
94
|
-
@
|
108
|
+
@beanstalk = Beaneater.new('localhost')
|
95
109
|
end
|
96
110
|
|
97
111
|
it 'should ignore specified tubes' do
|
98
|
-
@
|
99
|
-
@
|
100
|
-
@
|
101
|
-
assert_equal ['default', 'bar'].sort, @
|
112
|
+
@beanstalk.tubes.watch('foo')
|
113
|
+
@beanstalk.tubes.watch('bar')
|
114
|
+
@beanstalk.tubes.ignore('foo')
|
115
|
+
assert_equal ['default', 'bar'].sort, @beanstalk.tubes.watched.map(&:name).sort
|
102
116
|
end
|
103
117
|
end # ignore
|
104
118
|
|
105
119
|
describe "for #reserve" do
|
106
120
|
before do
|
107
|
-
@
|
108
|
-
@tube = @
|
121
|
+
@beanstalk = Beaneater.new('localhost')
|
122
|
+
@tube = @beanstalk.tubes.find 'tube'
|
109
123
|
@time = Time.now.to_i
|
110
124
|
@tube.put "foo reserve #{@time}"
|
111
125
|
end
|
112
126
|
|
113
127
|
it("should reserve job") do
|
114
|
-
@
|
115
|
-
job = @
|
128
|
+
@beanstalk.tubes.watch 'tube'
|
129
|
+
job = @beanstalk.tubes.reserve
|
116
130
|
assert_equal "foo reserve #{@time}", job.body
|
117
131
|
job.delete
|
118
132
|
end
|
119
133
|
|
120
134
|
it("should reserve job with block") do
|
121
|
-
@
|
135
|
+
@beanstalk.tubes.watch 'tube'
|
122
136
|
job = nil
|
123
|
-
@
|
137
|
+
@beanstalk.tubes.reserve { |j| job = j; job.delete }
|
124
138
|
assert_equal "foo reserve #{@time}", job.body
|
125
139
|
end
|
126
140
|
|
127
141
|
it("should reserve job with block and timeout") do
|
128
|
-
@
|
142
|
+
@beanstalk.tubes.watch 'tube'
|
129
143
|
job = nil
|
130
|
-
|
144
|
+
@beanstalk.tubes.reserve(0) { |j| job = j; job.delete }
|
131
145
|
assert_equal "foo reserve #{@time}", job.body
|
132
146
|
end
|
133
147
|
|
134
148
|
it "should raise TimedOutError with timeout" do
|
135
|
-
@
|
136
|
-
@
|
137
|
-
assert_raises(Beaneater::TimedOutError) { @
|
138
|
-
end
|
139
|
-
|
140
|
-
it "should raise TimedOutError no delete, with timeout" do
|
141
|
-
@pool.tubes.watch 'tube'
|
142
|
-
@pool.tubes.reserve(0) { |j| job = j; job.delete }
|
143
|
-
assert_raises(Beaneater::TimedOutError) { @pool.tubes.reserve(0) }
|
149
|
+
@beanstalk.tubes.watch 'tube'
|
150
|
+
@beanstalk.tubes.reserve(0) { |j| job = j; job.delete }
|
151
|
+
assert_raises(Beaneater::TimedOutError) { @beanstalk.tubes.reserve(0) }
|
144
152
|
end
|
145
153
|
|
146
154
|
it "should raise DeadlineSoonError with ttr 1" do
|
147
155
|
@tube.reserve.delete
|
148
156
|
@tube.put "foo reserve #{@time}", :ttr => 1
|
149
|
-
@
|
150
|
-
@
|
151
|
-
assert_raises(Beaneater::DeadlineSoonError) { @
|
157
|
+
@beanstalk.tubes.watch 'tube'
|
158
|
+
@beanstalk.tubes.reserve
|
159
|
+
assert_raises(Beaneater::DeadlineSoonError) { @beanstalk.tubes.reserve(0) }
|
152
160
|
end
|
153
161
|
|
154
|
-
after do
|
155
|
-
cleanup_tubes!(['foo', 'tube'])
|
156
|
-
end
|
157
162
|
end # reserve
|
158
|
-
end # Beaneater::Tubes
|
163
|
+
end # Beaneater::Tubes
|