forked from andyt/gearman-ruby
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathworker_test.rb
executable file
·61 lines (54 loc) · 1.48 KB
/
worker_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/env ruby
require 'rubygems'
require 'mocha'
$:.unshift('../lib')
require 'gearman'
require 'gearman/testlib'
require 'test/unit'
class TestClient < Test::Unit::TestCase
##
# Test Gearman::Worker::Ability.
def test_ability
data, job = nil
ability = Gearman::Worker::Ability.new(
Proc.new {|d, j| data = d; job = j; true }, 5)
assert_equal(5, ability.timeout)
assert_equal(true, ability.run(1, 2))
assert_equal(1, data)
assert_equal(2, job)
end
##
# Test Gearman::Worker::Job.
def test_job
server = FakeJobServer.new(self)
Thread.new do
sock = TCPSocket.new('localhost', server.port)
job = Gearman::Worker::Job.new(sock, 'handle')
job.report_status(10, 20)
end.run
sock = server.expect_connection
server.expect_request(sock, :work_status, "handle\00010\00020")
end
def test_job_reconnection
server = FakeJobServer.new(self)
Thread.new do
sock = server.expect_connection
server.expect_anything_and_close_socket(sock)
end
servers = ["localhost:#{server.port}"]
w = Gearman::Worker.new(servers)
Gearman::Util.stubs(:send_request).raises(Exception.new)
w.add_ability('sleep') do |data,job|
seconds = data
(1..seconds.to_i).each do |i|
sleep 1
print i
# Report our progress to the job server every second.
job.report_status(i, seconds)
end
# Report success.
true
end
assert(w.bad_servers.size == 1)
end
end