test/mock_client_test.rb in xing-gearman-ruby-1.0.0 vs test/mock_client_test.rb in xing-gearman-ruby-1.1.0
- old
+ new
@@ -55,10 +55,131 @@
assert_equal(7, res1)
assert_equal(15, res2)
end
##
+ # Tests that the high priority option can be set in a job request
+ def test_client_submit_priority_high
+ server = FakeJobServer.new(self)
+ client, task1, task2, taskset, sock, res1, res2 = nil
+
+ s = TestScript.new
+ c = TestScript.new
+
+ server_thread = Thread.new { s.loop_forever }.run
+ client_thread = Thread.new { c.loop_forever }.run
+
+ c.exec { client = Gearman::Client.new("localhost:#{server.port}") }
+
+ c.exec { task1 = Gearman::Task.new('add', '5 2', { :priority => :high }) }
+ c.exec { task1.on_complete {|d| res1 = d.to_i } }
+ c.exec { taskset = Gearman::TaskSet.new(client) }
+ c.exec { taskset.add_task(task1) }
+ s.exec { sock = server.expect_connection }
+ s.wait
+
+ s.exec { server.expect_request(sock, :submit_job_high, "add\000\0005 2") }
+ end
+
+ ##
+ # Tests that the low priority option can be set in a job request
+ def test_client_submit_priority_low
+ server = FakeJobServer.new(self)
+ client, task1, task2, taskset, sock, res1, res2 = nil
+
+ s = TestScript.new
+ c = TestScript.new
+
+ server_thread = Thread.new { s.loop_forever }.run
+ client_thread = Thread.new { c.loop_forever }.run
+
+ c.exec { client = Gearman::Client.new("localhost:#{server.port}") }
+
+ c.exec { task1 = Gearman::Task.new('add', '5 2', { :priority => :low }) }
+ c.exec { task1.on_complete {|d| res1 = d.to_i } }
+ c.exec { taskset = Gearman::TaskSet.new(client) }
+ c.exec { taskset.add_task(task1) }
+ s.exec { sock = server.expect_connection }
+ s.wait
+
+ s.exec { server.expect_request(sock, :submit_job_low, "add\000\0005 2") }
+ end
+
+
+ ##
+ # Check that the client sends a correct background job request
+ def test_client_submit_background
+ server = FakeJobServer.new(self)
+ client, task1, task2, taskset, sock, res1, res2 = nil
+
+ s = TestScript.new
+ c = TestScript.new
+
+ server_thread = Thread.new { s.loop_forever }.run
+ client_thread = Thread.new { c.loop_forever }.run
+
+ c.exec { client = Gearman::Client.new("localhost:#{server.port}") }
+
+ c.exec { task1 = Gearman::Task.new('add', '5 2', { :background => :true }) }
+ c.exec { task1.on_complete {|d| res1 = d.to_i } }
+ c.exec { taskset = Gearman::TaskSet.new(client) }
+ c.exec { taskset.add_task(task1) }
+ s.exec { sock = server.expect_connection }
+ s.wait
+
+ s.exec { server.expect_request(sock, :submit_job_bg, "add\000\0005 2") }
+ end
+
+ ##
+ # Check that the client sends a correct background job with high priority request
+ def test_client_submit_background
+ server = FakeJobServer.new(self)
+ client, task1, task2, taskset, sock, res1, res2 = nil
+
+ s = TestScript.new
+ c = TestScript.new
+
+ server_thread = Thread.new { s.loop_forever }.run
+ client_thread = Thread.new { c.loop_forever }.run
+
+ c.exec { client = Gearman::Client.new("localhost:#{server.port}") }
+
+ c.exec { task1 = Gearman::Task.new('add', '5 2', { :background => :true, :priority => :high }) }
+ c.exec { task1.on_complete {|d| res1 = d.to_i } }
+ c.exec { taskset = Gearman::TaskSet.new(client) }
+ c.exec { taskset.add_task(task1) }
+ s.exec { sock = server.expect_connection }
+ s.wait
+
+ s.exec { server.expect_request(sock, :submit_job_high_bg, "add\000\0005 2") }
+ end
+
+ ##
+ # Check that the client sends a correct background job with low priority request
+ def test_client_submit_background
+ server = FakeJobServer.new(self)
+ client, task1, task2, taskset, sock, res1, res2 = nil
+
+ s = TestScript.new
+ c = TestScript.new
+
+ server_thread = Thread.new { s.loop_forever }.run
+ client_thread = Thread.new { c.loop_forever }.run
+
+ c.exec { client = Gearman::Client.new("localhost:#{server.port}") }
+
+ c.exec { task1 = Gearman::Task.new('add', '5 2', { :background => :true, :priority => :low }) }
+ c.exec { task1.on_complete {|d| res1 = d.to_i } }
+ c.exec { taskset = Gearman::TaskSet.new(client) }
+ c.exec { taskset.add_task(task1) }
+ s.exec { sock = server.expect_connection }
+ s.wait
+
+ s.exec { server.expect_request(sock, :submit_job_low_bg, "add\000\0005 2") }
+ end
+
+ ##
# Test Client#do_task.
def test_do_task
server = FakeJobServer.new(self)
client, sock, res = nil
@@ -181,9 +302,42 @@
assert_equal('a1', res1)
assert_equal(nil, res2)
assert_equal(nil, fail1)
assert_equal(true, fail2)
assert_equal(false, setres)
+ end
+
+ def test_exception
+ server = FakeJobServer.new(self)
+ client, task, taskset, sock = nil
+ res,exception, setres = nil
+
+ s = TestScript.new
+ c = TestScript.new
+
+ server_thread = Thread.new { s.loop_forever }.run
+ client_thread = Thread.new { c.loop_forever }.run
+
+ c.exec { client = Gearman::Client.new("localhost:#{server.port}") }
+
+ c.exec { task = Gearman::Task.new('func2', 'b') }
+ c.exec { task.on_complete {|d| res = d } }
+ c.exec { task.on_exception {|message| exception=message; false } }
+ c.exec { taskset = Gearman::TaskSet.new(client) }
+ c.exec { taskset.add_task(task) }
+ s.exec { sock = server.expect_connection }
+
+ s.exec { server.expect_request(sock, :submit_job, "func2\000\000b") }
+ s.exec { server.send_response(sock, :job_created, 'b') }
+
+ s.exec { server.send_response(sock, :work_exception, "b\0exceptionmsg") }
+
+ c.exec { setres = taskset.wait }
+ c.wait
+ s.wait
+
+ assert_equal(nil, res)
+ assert_equal('exceptionmsg',exception)
end
##
# Test that user-supplied uniq values are handled correctly.
def test_uniq