resque_jobs_tree 0.4.2 → 0.4.3
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.
- data/lib/resque_jobs_tree/job.rb +15 -1
- data/lib/resque_jobs_tree/storage/node.rb +8 -0
- data/lib/resque_jobs_tree/storage/tree.rb +4 -0
- data/lib/resque_jobs_tree/version.rb +1 -1
- data/test/job_test.rb +9 -0
- data/test/process_test.rb +0 -8
- data/test/storage_node_test.rb +16 -0
- data/test/test_helper.rb +8 -0
- metadata +1 -1
data/lib/resque_jobs_tree/job.rb
CHANGED
@@ -23,9 +23,23 @@ class ResqueJobsTree::Job
|
|
23
23
|
def node tree_name, job_name, *resources_arguments
|
24
24
|
node_definition = ResqueJobsTree.find(tree_name).find job_name
|
25
25
|
resources = ResqueJobsTree::ResourcesSerializer.instancize resources_arguments
|
26
|
-
node_definition.spawn
|
26
|
+
node = node_definition.spawn(resources)
|
27
|
+
if node.exists?
|
28
|
+
node
|
29
|
+
else
|
30
|
+
puts "Warning, the job #{node.definition.tree.name}##{node.definition.name}##{node.resources.inspect} " \
|
31
|
+
"doesn't exist. Cleaning-up."
|
32
|
+
node.cleanup
|
33
|
+
FakeNode.new
|
34
|
+
end
|
27
35
|
end
|
28
36
|
|
29
37
|
end
|
30
38
|
|
39
|
+
class FakeNode
|
40
|
+
def method_missing *args
|
41
|
+
# do nothing
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
31
45
|
end
|
data/test/job_test.rb
CHANGED
@@ -5,9 +5,18 @@ class JobTest < MiniTest::Unit::TestCase
|
|
5
5
|
def test_node
|
6
6
|
create_tree
|
7
7
|
args = [@tree_definition.name, @tree_definition.find('job1').name, 1, 2, 3]
|
8
|
+
redis.sadd ResqueJobsTree::Storage::LAUNCHED_TREES, @tree_definition.spawn([1,2,3]).key
|
8
9
|
assert_equal @tree_definition.find(:job1), ResqueJobsTree::Job.send(:node, *args).definition
|
9
10
|
assert_equal ResqueJobsTree.find(:tree1), ResqueJobsTree::Job.send(:node, *args).definition.tree
|
10
11
|
assert_equal [1, 2, 3], ResqueJobsTree::Job.send(:node, *args).resources
|
11
12
|
end
|
12
13
|
|
14
|
+
def test_unregistred_node
|
15
|
+
create_tree
|
16
|
+
args = [@tree_definition.name, @tree_definition.find('job1').name, 1, 2, 3]
|
17
|
+
silenced_stdout do
|
18
|
+
assert ResqueJobsTree::Job.send(:node, *args).kind_of?(ResqueJobsTree::Job::FakeNode)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
13
22
|
end
|
data/test/process_test.rb
CHANGED
@@ -244,12 +244,4 @@ class ProcessTest < MiniTest::Unit::TestCase
|
|
244
244
|
redis.srem 'queues', queue_name
|
245
245
|
end
|
246
246
|
|
247
|
-
def silenced_stdout
|
248
|
-
orig_stdout = $stdout
|
249
|
-
$stdout = File.new('/dev/null', 'w')
|
250
|
-
yield
|
251
|
-
ensure
|
252
|
-
$stdout = orig_stdout
|
253
|
-
end
|
254
|
-
|
255
247
|
end
|
data/test/storage_node_test.rb
CHANGED
@@ -82,6 +82,22 @@ class StorageNodeTest < MiniTest::Unit::TestCase
|
|
82
82
|
assert_equal result, @root.send(:node_info_from_key, key)
|
83
83
|
end
|
84
84
|
|
85
|
+
def test_exists
|
86
|
+
create_tree
|
87
|
+
leaf = @tree_definition.find(:job2).spawn([])
|
88
|
+
assert !leaf.exists?, 'leaf not registred'
|
89
|
+
redis.hset ResqueJobsTree::Storage::PARENTS_KEY, leaf.key, true
|
90
|
+
assert leaf.exists?, 'leaf with parent'
|
91
|
+
redis.hdel ResqueJobsTree::Storage::PARENTS_KEY, leaf.key
|
92
|
+
redis.set leaf.childs_key, true
|
93
|
+
assert leaf.exists?, 'leaf with child'
|
94
|
+
|
95
|
+
root = @tree_definition.find(:job1).spawn([])
|
96
|
+
assert !root.exists?, 'root not registred'
|
97
|
+
redis.sadd ResqueJobsTree::Storage::LAUNCHED_TREES, root.tree.key
|
98
|
+
assert root.exists?, 'root with tree registred'
|
99
|
+
end
|
100
|
+
|
85
101
|
private
|
86
102
|
|
87
103
|
def assert_parent_key expected
|
data/test/test_helper.rb
CHANGED