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