gearman-ruby 2.0.0 → 3.0.1

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.
Files changed (50) hide show
  1. data/Rakefile +5 -6
  2. data/VERSION.yml +2 -2
  3. data/examples/calculus_client.rb +8 -10
  4. data/examples/calculus_worker.rb +4 -1
  5. data/examples/client.php +23 -0
  6. data/examples/client.rb +6 -10
  7. data/examples/client_background.rb +7 -7
  8. data/examples/client_data.rb +4 -4
  9. data/examples/client_epoch.rb +23 -0
  10. data/examples/client_exception.rb +4 -2
  11. data/examples/client_prefix.rb +4 -2
  12. data/examples/client_reverse.rb +27 -0
  13. data/examples/scale_image.rb +4 -3
  14. data/examples/scale_image_worker.rb +1 -1
  15. data/examples/worker.rb +2 -4
  16. data/examples/worker_data.rb +2 -2
  17. data/examples/worker_exception.rb +1 -1
  18. data/examples/worker_prefix.rb +1 -1
  19. data/examples/worker_reverse_string.rb +27 -0
  20. data/examples/worker_reverse_to_file.rb +18 -0
  21. data/examples/{evented_worker.rb → worker_signals.rb} +18 -8
  22. data/lib/gearman.rb +68 -21
  23. data/lib/gearman/client.rb +137 -65
  24. data/lib/gearman/server.rb +4 -4
  25. data/lib/gearman/task.rb +140 -20
  26. data/lib/gearman/taskset.rb +280 -5
  27. data/lib/gearman/testlib.rb +95 -0
  28. data/lib/gearman/util.rb +184 -28
  29. data/lib/gearman/worker.rb +356 -20
  30. data/test/client_test.rb +145 -0
  31. data/test/mock_client_test.rb +629 -0
  32. data/test/mock_worker_test.rb +321 -0
  33. data/test/util_test.rb +8 -3
  34. data/test/worker_test.rb +50 -34
  35. metadata +41 -41
  36. data/examples/client_echo.rb +0 -16
  37. data/examples/evented_client.rb +0 -23
  38. data/examples/worker_echo.rb +0 -20
  39. data/examples/worker_echo_pprof.rb +0 -5
  40. data/gearman-ruby.gemspec +0 -111
  41. data/lib/gearman/evented/client.rb +0 -99
  42. data/lib/gearman/evented/reactor.rb +0 -86
  43. data/lib/gearman/evented/worker.rb +0 -118
  44. data/lib/gearman/job.rb +0 -38
  45. data/lib/gearman/protocol.rb +0 -110
  46. data/test/basic_integration_test.rb +0 -121
  47. data/test/crash_test.rb +0 -69
  48. data/test/job_test.rb +0 -30
  49. data/test/protocol_test.rb +0 -132
  50. data/test/test_helper.rb +0 -31
@@ -0,0 +1,321 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift('../lib')
4
+ require 'gearman'
5
+ require 'gearman/testlib'
6
+ require 'test/unit'
7
+ require 'thread'
8
+
9
+ Thread.abort_on_exception = true
10
+
11
+ class TestWorker < Test::Unit::TestCase
12
+ def setup
13
+ @server = FakeJobServer.new(self)
14
+ @server2 = FakeJobServer.new(self)
15
+ end
16
+
17
+ def teardown
18
+ @server.stop
19
+ @server2.stop
20
+ end
21
+
22
+ def test_complete
23
+ @server = FakeJobServer.new(self)
24
+ worker = nil
25
+ sock = nil
26
+
27
+ s = TestScript.new
28
+ w = TestScript.new
29
+
30
+ server_thread = Thread.new { s.loop_forever }.run
31
+ worker_thread = Thread.new { w.loop_forever }.run
32
+
33
+ # Create a worker and wait for it to connect to us.
34
+ w.exec {
35
+ worker = Gearman::Worker.new(
36
+ "localhost:#{@server.port}", { :client_id => 'test' })
37
+ }
38
+ s.exec { sock = @server.expect_connection }
39
+ s.wait
40
+
41
+ # After it connects, it should send its ID, and it should tell us its
42
+ # abilities when we report them.
43
+ s.exec { @server.expect_request(sock, :set_client_id, 'test') }
44
+ w.exec do
45
+ worker.add_ability('echo') do |data, job|
46
+ job.report_status(1, 1);
47
+ part1, part2 = data.split(//, 2)
48
+ job.send_data(part1) # send partial data first
49
+ part2
50
+ end
51
+ end
52
+ s.exec { @server.expect_request(sock, :can_do, 'echo') }
53
+
54
+ # It should try to grab a job when we tell it to work.
55
+ w.exec { worker.work }
56
+ s.exec { @server.expect_request(sock, :grab_job) }
57
+
58
+ # If we tell it there aren't any jobs, it should go to sleep.
59
+ s.exec { @server.send_response(sock, :no_job) }
60
+ s.exec { @server.expect_request(sock, :pre_sleep) }
61
+
62
+ # When we send it a noop, it should wake up and ask for a job again.
63
+ s.exec { @server.send_response(sock, :noop) }
64
+ s.exec { @server.expect_request(sock, :grab_job) }
65
+
66
+ # When we give it a job, it should do it.
67
+ s.exec { @server.send_response(sock, :job_assign, "a\0echo\0foo") }
68
+ s.exec { @server.expect_request(sock, :work_status, "a\0001\0001") }
69
+ s.exec { @server.expect_request(sock, :work_data, "a\000f") }
70
+ s.exec { @server.expect_request(sock, :work_complete, "a\0oo") }
71
+
72
+ # Test that functions are unregistered correctly.
73
+ w.exec { worker.remove_ability('echo') }
74
+ s.exec { @server.expect_request(sock, :cant_do, 'echo') }
75
+ s.wait
76
+ end
77
+
78
+ def test_multiple_servers
79
+ # This is cheesy. We want to know the order that Worker#work will
80
+ # iterate through the servers, so we make sure that server1 will be the
81
+ # first one when the names are lexographically sorted.
82
+ if @server2.port.to_s < @server.port.to_s
83
+ tmp = @server
84
+ @server = @server2
85
+ @server2 = tmp
86
+ end
87
+ worker = nil
88
+ sock1, sock2 = nil
89
+
90
+ s1 = TestScript.new
91
+ s2 = TestScript.new
92
+ w = TestScript.new
93
+
94
+ @server_thread = Thread.new { s1.loop_forever }.run
95
+ @server2_thread = Thread.new { s2.loop_forever }.run
96
+ worker_thread = Thread.new { w.loop_forever }.run
97
+
98
+ # Create a worker, which should connect to both servers.
99
+ w.exec {
100
+ worker = Gearman::Worker.new(
101
+ nil, { :client_id => 'test', :reconnect_sec => 0.1 }) }
102
+ w.exec { worker.add_ability('foo') {|d,j| 'bar' } }
103
+ w.exec {
104
+ worker.job_servers =
105
+ [ "localhost:#{@server.port}", "localhost:#{@server2.port}" ]
106
+ }
107
+ s1.exec { sock1 = @server.expect_connection }
108
+ s2.exec { sock2 = @server2.expect_connection }
109
+ s1.wait
110
+ s2.wait
111
+
112
+ # It should register itself with both.
113
+ s1.exec { @server.expect_request(sock1, :set_client_id, 'test') }
114
+ s1.exec { @server.expect_request(sock1, :can_do, 'foo') }
115
+ s2.exec { @server2.expect_request(sock2, :set_client_id, 'test') }
116
+ s2.exec { @server2.expect_request(sock2, :can_do, 'foo') }
117
+
118
+ # It should try to get a job from both servers and then sleep.
119
+ w.exec { worker.work }
120
+ s1.exec { @server.expect_request(sock1, :grab_job) }
121
+ s1.exec { @server.send_response(sock1, :no_job) }
122
+ s2.exec { @server2.expect_request(sock2, :grab_job) }
123
+ s2.exec { @server2.send_response(sock2, :no_job) }
124
+ s1.exec { @server.expect_request(sock1, :pre_sleep) }
125
+ s2.exec { @server2.expect_request(sock2, :pre_sleep) }
126
+
127
+ # If the second server wakes it up, it should again try to get a job
128
+ # and then do it.
129
+ s2.exec { @server2.send_response(sock2, :noop) }
130
+ s1.exec { @server.expect_request(sock1, :grab_job) }
131
+ s1.exec { @server.send_response(sock1, :no_job) }
132
+ s2.exec { @server2.expect_request(sock2, :grab_job) }
133
+ s2.exec { @server2.send_response(sock2, :job_assign, "a\0foo\0") }
134
+ s2.exec { @server2.expect_request(sock2, :work_complete, "a\0bar") }
135
+
136
+ w.wait
137
+ s1.wait
138
+ s2.wait
139
+
140
+ # Stop the first job server and make the worker try to reconnect to
141
+ # both.
142
+ old_servers = worker.job_servers
143
+ @server.stop
144
+ worker.job_servers = []
145
+ worker.job_servers = old_servers
146
+ s2.exec { sock2 = @server2.expect_connection }
147
+ s2.wait
148
+
149
+ # It shouldn't have any trouble with the second server. Tell it to go
150
+ # to work.
151
+ s2.exec { @server2.expect_request(sock2, :set_client_id, 'test') }
152
+ s2.exec { @server2.expect_request(sock2, :can_do, 'foo') }
153
+ w.exec { worker.work }
154
+ s2.exec { @server2.expect_request(sock2, :grab_job) }
155
+ s2.exec { @server2.send_response(sock2, :no_job) }
156
+ s2.exec { @server2.expect_request(sock2, :pre_sleep) }
157
+ s2.wait
158
+
159
+ # Start the first server and wait for the worker to connect to it and
160
+ # register.
161
+ @server.start
162
+ s1.exec { sock1 = @server.expect_connection }
163
+ s1.wait
164
+ s1.exec { @server.expect_request(sock1, :set_client_id, 'test') }
165
+ s1.exec { @server.expect_request(sock1, :can_do, 'foo') }
166
+ s1.wait
167
+
168
+ # Let the second server wake the worker up and then give it a job.
169
+ s2.exec { @server2.send_response(sock2, :noop) }
170
+ s1.exec { @server.expect_request(sock1, :grab_job) }
171
+ s1.exec { @server.send_response(sock1, :no_job) }
172
+ s2.exec { @server2.expect_request(sock2, :grab_job) }
173
+ s2.exec { @server2.send_response(sock2, :job_assign, "a\0foo\0") }
174
+ s2.exec { @server2.expect_request(sock2, :work_complete, "a\0bar") }
175
+ s1.wait
176
+ s2.wait
177
+ w.wait
178
+ end
179
+
180
+ def test_timeout
181
+ worker = nil
182
+ sock = nil
183
+
184
+ s = TestScript.new
185
+ w = TestScript.new
186
+
187
+ server_thread = Thread.new { s.loop_forever }.run
188
+ worker_thread = Thread.new { w.loop_forever }.run
189
+
190
+ w.exec {
191
+ worker = Gearman::Worker.new("localhost:#{@server.port}",
192
+ { :client_id => 'test',
193
+ :reconnect_sec => 0.15,
194
+ :network_timeout_sec => 0.1 })
195
+ }
196
+ s.exec { sock = @server.expect_connection }
197
+ s.wait
198
+ s.exec { @server.expect_request(sock, :set_client_id, 'test') }
199
+
200
+ w.exec { worker.add_ability('foo') {|d,j| 'bar' } }
201
+ s.exec { @server.expect_request(sock, :can_do, 'foo') }
202
+
203
+ # Don't do anything after the client asks for a job.
204
+ w.exec { worker.work }
205
+ s.exec { @server.expect_request(sock, :grab_job) }
206
+ s.exec { sleep 0.16 }
207
+ s.wait
208
+
209
+ # The client should reconnect and ask for a job again.
210
+ s.exec { sock = @server.expect_connection }
211
+ s.wait
212
+
213
+ s.exec { @server.expect_request(sock, :set_client_id, 'test') }
214
+ s.exec { @server.expect_request(sock, :can_do, 'foo') }
215
+ s.exec { @server.expect_request(sock, :grab_job) }
216
+ s.exec { @server.send_response(sock, :job_assign, "a\0foo\0") }
217
+ s.exec { @server.expect_request(sock, :work_complete, "a\0bar") }
218
+ s.wait
219
+ w.wait
220
+ end
221
+
222
+ def test_exception
223
+ @server = FakeJobServer.new(self)
224
+ worker = nil
225
+ sock = nil
226
+
227
+ s = TestScript.new
228
+ w = TestScript.new
229
+
230
+ server_thread = Thread.new { s.loop_forever }.run
231
+ worker_thread = Thread.new { w.loop_forever }.run
232
+
233
+ # Create a worker and wait for it to connect to us.
234
+ w.exec {
235
+ worker = Gearman::Worker.new(
236
+ "localhost:#{@server.port}", { :client_id => 'test' })
237
+ }
238
+ s.exec { sock = @server.expect_connection }
239
+ s.wait
240
+
241
+ # After it connects, it should send its ID, and it should tell us its
242
+ # abilities when we report them.
243
+ s.exec { @server.expect_request(sock, :set_client_id, 'test') }
244
+ w.exec { worker.add_ability('echo') {|d,j| raise Exception.new("fooexception") } }
245
+ s.exec { @server.expect_request(sock, :can_do, 'echo') }
246
+
247
+ # It should try to grab a job when we tell it to work.
248
+ w.exec { worker.work }
249
+ s.exec { @server.expect_request(sock, :grab_job) }
250
+
251
+ # If we tell it there aren't any jobs, it should go to sleep.
252
+ s.exec { @server.send_response(sock, :no_job) }
253
+ s.exec { @server.expect_request(sock, :pre_sleep) }
254
+
255
+ # When we send it a noop, it should wake up and ask for a job again.
256
+ s.exec { @server.send_response(sock, :noop) }
257
+ s.exec { @server.expect_request(sock, :grab_job) }
258
+
259
+ # When we give it a job, it should raise an excpetion and notify the server
260
+ s.exec { @server.send_response(sock, :job_assign, "a\0echo\0foo") }
261
+ s.exec do
262
+ @server.expect_request(sock, :work_warning, "a\0fooexception")
263
+ @server.expect_request(sock, :work_fail, "a")
264
+ end
265
+
266
+ s.wait
267
+ end
268
+
269
+ def test_worker_enabled
270
+ @server = FakeJobServer.new(self)
271
+ worker = nil
272
+ sock = nil
273
+ @result = nil
274
+
275
+ s = TestScript.new
276
+ w = TestScript.new
277
+
278
+ server_thread = Thread.new { s.loop_forever }.run
279
+ worker_thread = Thread.new { w.loop_forever }.run
280
+
281
+ # Create a worker and wait for it to connect to us.
282
+ w.exec {
283
+ worker = Gearman::Worker.new(
284
+ "localhost:#{@server.port}", { :client_id => 'test' })
285
+ }
286
+ s.exec { sock = @server.expect_connection }
287
+ s.wait
288
+
289
+ # After it connects, it should send its ID, and it should tell us its
290
+ # abilities when we report them.
291
+ s.exec { @server.expect_request(sock, :set_client_id, 'test') }
292
+ w.exec do
293
+ worker.add_ability('echo') do |data, job|
294
+ job.report_status(1, 1);
295
+ part1, part2 = data.split(//, 2)
296
+ job.send_data(part1) # send partial data first
297
+ part2
298
+ end
299
+ end
300
+ s.exec { @server.expect_request(sock, :can_do, 'echo') }
301
+
302
+ # When we set to false worker_enabled, worker.work shall return false
303
+ s.exec { @server.send_response(sock, :job_assign, "a\0echo\0foo") }
304
+ w.exec { worker.worker_enabled = false; @result = worker.work }
305
+ w.wait
306
+ assert_equal false, @result
307
+
308
+ # When we set to true worker_enabled, worker.work shall return true
309
+ s.exec { @server.send_response(sock, :job_assign, "a\0echo\0foo") }
310
+ w.exec { worker.worker_enabled = true; @result = worker.work }
311
+ w.wait
312
+ assert_equal true, @result
313
+
314
+ # when there are no jobs pending, and set to false worker_enabled, worker.work shall return false
315
+ s.exec { @server.send_response(sock, :no_job) }
316
+ w.exec { worker.worker_enabled = false; @result = worker.work }
317
+ w.wait
318
+ assert_equal false, @result
319
+ end
320
+
321
+ end
data/test/util_test.rb CHANGED
@@ -1,6 +1,11 @@
1
- require File.dirname(__FILE__) + '/test_helper'
1
+ #!/usr/bin/env ruby
2
2
 
3
- class UtilTest < Test::Unit::TestCase
3
+ $:.unshift('../lib')
4
+ require 'gearman'
5
+ require 'gearman/testlib'
6
+ require 'test/unit'
7
+
8
+ class TestUtil < Test::Unit::TestCase
4
9
 
5
10
  def test_ability_prefix_name_builder
6
11
  assert_equal(Gearman::Util.ability_name_with_prefix("test","a"),"test\ta")
@@ -8,5 +13,5 @@ class UtilTest < Test::Unit::TestCase
8
13
 
9
14
  def test_ability_name_for_perl
10
15
  assert_equal(Gearman::Util.ability_name_for_perl("test","a"),"test\ta")
11
- end
16
+ end
12
17
  end
data/test/worker_test.rb CHANGED
@@ -1,45 +1,61 @@
1
- require File.dirname(__FILE__) + '/test_helper'
2
-
3
- class WorkerTest < Test::Unit::TestCase
4
-
5
- def test_accepts_multiple_job_servers
6
- Gearman::Evented::WorkerReactor.expects(:connect).times(2)
7
-
8
- EM.run do
9
- EM.add_timer(0.1) { EM.stop_event_loop }
10
- Gearman::Worker.new(["localhost:4730", "localhost:4731"]).work
11
- end
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'mocha'
4
+
5
+ $:.unshift('../lib')
6
+ require 'gearman'
7
+ require 'gearman/testlib'
8
+ require 'test/unit'
9
+
10
+ class TestClient < Test::Unit::TestCase
11
+ ##
12
+ # Test Gearman::Worker::Ability.
13
+ def test_ability
14
+ data, job = nil
15
+ ability = Gearman::Worker::Ability.new(
16
+ Proc.new {|d, j| data = d; job = j; true }, 5)
17
+ assert_equal(5, ability.timeout)
18
+ assert_equal(true, ability.run(1, 2))
19
+ assert_equal(1, data)
20
+ assert_equal(2, job)
12
21
  end
13
22
 
14
- def test_accepts_exactly_one_job_server
15
- Gearman::Evented::WorkerReactor.expects(:connect).with("localhost", "4730", {:abilities => {}}).times(1)
16
-
17
- EM.run do
18
- EM.add_timer(0.1) { EM.stop_event_loop }
19
- Gearman::Worker.new("localhost:4730").work
20
- end
23
+ ##
24
+ # Test Gearman::Worker::Job.
25
+ def test_job
26
+ server = FakeJobServer.new(self)
27
+ Thread.new do
28
+ sock = TCPSocket.new('localhost', server.port)
29
+ job = Gearman::Worker::Job.new(sock, 'handle')
30
+ job.report_status(10, 20)
31
+ end.run
32
+ sock = server.expect_connection
33
+ server.expect_request(sock, :work_status, "handle\00010\00020")
21
34
  end
22
35
 
23
- def test_passes_abilities_to_reactor
24
- worker = Gearman::Worker.new("localhost:4730")
25
- worker.add_ability("foo") {|data, job| "noop!"}
26
- worker.add_ability("bar") {|data, job| "nothing to see here!" }
27
- worker.remove_ability("bar")
28
36
 
29
- assert_equal true, worker.has_ability?("foo")
30
- assert_equal false, worker.has_ability?("bar")
37
+ def test_job_reconnection
38
+ server = FakeJobServer.new(self)
39
+ Thread.new do
40
+ sock = server.expect_connection
41
+ server.expect_anything_and_close_socket(sock)
42
+ end
31
43
 
32
- Gearman::Evented::WorkerReactor.expects(:connect).with do |host, port, opts|
33
- assert_equal "localhost", host
34
- assert_equal 4730, port.to_i
35
- assert_equal 1, opts[:abilities].size
36
- assert_equal true, opts[:abilities]['foo'][:callback].is_a?(Proc)
44
+ servers = ["localhost:#{server.port}"]
45
+ w = Gearman::Worker.new(servers)
46
+ Gearman::Util.stubs(:send_request).raises(Exception.new)
47
+ w.add_ability('sleep') do |data,job|
48
+ seconds = data
49
+ (1..seconds.to_i).each do |i|
50
+ sleep 1
51
+ print i
52
+ # Report our progress to the job server every second.
53
+ job.report_status(i, seconds)
54
+ end
55
+ # Report success.
37
56
  true
38
57
  end
39
58
 
40
- EM.run do
41
- EM.add_timer(0.1) { EM.stop_event_loop }
42
- worker.work
43
- end
59
+ assert(w.bad_servers.size == 1)
44
60
  end
45
61
  end
metadata CHANGED
@@ -1,29 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gearman-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ prerelease: false
5
+ segments:
6
+ - 3
7
+ - 0
8
+ - 1
9
+ version: 3.0.1
5
10
  platform: ruby
6
11
  authors:
12
+ - John Ewart
13
+ - Colin Curtin
14
+ - Daniel Erat
15
+ - Ladislav Martincik
16
+ - Pablo Delgado
17
+ - Mauro Pompilio
18
+ - Antonio Garrote
7
19
  - Kim Altintop
8
20
  autorequire:
9
21
  bindir: bin
10
22
  cert_chain: []
11
23
 
12
- date: 2009-12-11 00:00:00 +01:00
24
+ date: 2010-07-19 00:00:00 -07:00
13
25
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: eventmachine
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 0.12.8
24
- version:
26
+ dependencies: []
27
+
25
28
  description: Library for the Gearman distributed job system
26
- email: kim.altintop@gmail.com
29
+ email: john@unixninjas.org
27
30
  executables: []
28
31
 
29
32
  extensions: []
@@ -41,13 +44,14 @@ files:
41
44
  - VERSION.yml
42
45
  - examples/calculus_client.rb
43
46
  - examples/calculus_worker.rb
47
+ - examples/client.php
44
48
  - examples/client.rb
45
49
  - examples/client_background.rb
46
50
  - examples/client_data.rb
51
+ - examples/client_epoch.rb
47
52
  - examples/client_exception.rb
48
53
  - examples/client_prefix.rb
49
- - examples/evented_client.rb
50
- - examples/evented_worker.rb
54
+ - examples/client_reverse.rb
51
55
  - examples/gearman_environment.sh
52
56
  - examples/scale_image.rb
53
57
  - examples/scale_image_worker.rb
@@ -56,28 +60,24 @@ files:
56
60
  - examples/worker_data.rb
57
61
  - examples/worker_exception.rb
58
62
  - examples/worker_prefix.rb
59
- - gearman-ruby.gemspec
63
+ - examples/worker_reverse_string.rb
64
+ - examples/worker_reverse_to_file.rb
65
+ - examples/worker_signals.rb
60
66
  - lib/gearman.rb
61
67
  - lib/gearman/client.rb
62
- - lib/gearman/evented/client.rb
63
- - lib/gearman/evented/reactor.rb
64
- - lib/gearman/evented/worker.rb
65
- - lib/gearman/job.rb
66
- - lib/gearman/protocol.rb
67
68
  - lib/gearman/server.rb
68
69
  - lib/gearman/task.rb
69
70
  - lib/gearman/taskset.rb
71
+ - lib/gearman/testlib.rb
70
72
  - lib/gearman/util.rb
71
73
  - lib/gearman/worker.rb
72
- - test/basic_integration_test.rb
73
- - test/crash_test.rb
74
- - test/job_test.rb
75
- - test/protocol_test.rb
76
- - test/test_helper.rb
74
+ - test/client_test.rb
75
+ - test/mock_client_test.rb
76
+ - test/mock_worker_test.rb
77
77
  - test/util_test.rb
78
78
  - test/worker_test.rb
79
79
  has_rdoc: true
80
- homepage: http://github.com/kim/gearman-ruby
80
+ homepage: http://github.com/gearman-ruby/gearman-ruby
81
81
  licenses: []
82
82
 
83
83
  post_install_message:
@@ -89,27 +89,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
89
  requirements:
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
+ segments:
93
+ - 0
92
94
  version: "0"
93
- version:
94
95
  required_rubygems_version: !ruby/object:Gem::Requirement
95
96
  requirements:
96
97
  - - ">="
97
98
  - !ruby/object:Gem::Version
99
+ segments:
100
+ - 0
98
101
  version: "0"
99
- version:
100
102
  requirements: []
101
103
 
102
104
  rubyforge_project:
103
- rubygems_version: 1.3.5
105
+ rubygems_version: 1.3.6
104
106
  signing_key:
105
107
  specification_version: 3
106
108
  summary: Library for the Gearman distributed job system
107
109
  test_files:
108
- - test/basic_integration_test.rb
109
- - test/crash_test.rb
110
- - test/job_test.rb
111
- - test/protocol_test.rb
112
- - test/test_helper.rb
110
+ - test/client_test.rb
111
+ - test/mock_client_test.rb
112
+ - test/mock_worker_test.rb
113
113
  - test/util_test.rb
114
114
  - test/worker_test.rb
115
115
  - examples/calculus_client.rb
@@ -117,17 +117,17 @@ test_files:
117
117
  - examples/client.rb
118
118
  - examples/client_background.rb
119
119
  - examples/client_data.rb
120
- - examples/client_echo.rb
120
+ - examples/client_epoch.rb
121
121
  - examples/client_exception.rb
122
122
  - examples/client_prefix.rb
123
- - examples/evented_client.rb
124
- - examples/evented_worker.rb
123
+ - examples/client_reverse.rb
125
124
  - examples/scale_image.rb
126
125
  - examples/scale_image_worker.rb
127
126
  - examples/server.rb
128
127
  - examples/worker.rb
129
128
  - examples/worker_data.rb
130
- - examples/worker_echo.rb
131
- - examples/worker_echo_pprof.rb
132
129
  - examples/worker_exception.rb
133
130
  - examples/worker_prefix.rb
131
+ - examples/worker_reverse_string.rb
132
+ - examples/worker_reverse_to_file.rb
133
+ - examples/worker_signals.rb