resque_jobs_tree 0.3.4 → 0.4.0
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.rb +25 -3
- data/lib/resque_jobs_tree/definitions.rb +15 -0
- data/lib/resque_jobs_tree/definitions/node.rb +77 -0
- data/lib/resque_jobs_tree/definitions/tree.rb +39 -0
- data/lib/resque_jobs_tree/factory.rb +7 -7
- data/lib/resque_jobs_tree/job.rb +13 -31
- data/lib/resque_jobs_tree/node.rb +64 -60
- data/lib/resque_jobs_tree/resources_serializer.rb +2 -3
- data/lib/resque_jobs_tree/storage.rb +5 -112
- data/lib/resque_jobs_tree/storage/node.rb +80 -0
- data/lib/resque_jobs_tree/storage/tree.rb +26 -0
- data/lib/resque_jobs_tree/tree.rb +32 -27
- data/lib/resque_jobs_tree/version.rb +1 -1
- data/test/definitions_test.rb +99 -0
- data/test/factory_test.rb +3 -4
- data/test/job_test.rb +6 -8
- data/test/process_test.rb +214 -0
- data/test/resources_serializer_test.rb +6 -6
- data/test/storage_node_test.rb +117 -0
- data/test/storage_tree_test.rb +27 -0
- data/test/test_helper.rb +12 -8
- data/test/tree_test.rb +14 -109
- metadata +15 -6
- data/test/node_test.rb +0 -188
- data/test/storage_test.rb +0 -74
@@ -5,12 +5,12 @@ class ResourcesSerializerTest < MiniTest::Unit::TestCase
|
|
5
5
|
def test_serialization_deserialization
|
6
6
|
model = Model.new 42
|
7
7
|
input = [model, :pdf, [1,2]]
|
8
|
-
serialized_input = ResqueJobsTree::ResourcesSerializer.
|
9
|
-
|
10
|
-
assert_equal
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
serialized_input = ResqueJobsTree::ResourcesSerializer.argumentize(input)
|
9
|
+
|
10
|
+
assert_equal [['Model', model.id], :pdf, [1,2]], serialized_input
|
11
|
+
|
12
|
+
assert_equal [Model.new(42), :pdf, [1,2]],
|
13
|
+
ResqueJobsTree::ResourcesSerializer.instancize(serialized_input)
|
14
14
|
end
|
15
15
|
|
16
16
|
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class StorageNodeTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
create_tree
|
7
|
+
@resources = [1, 2, 3]
|
8
|
+
@root = @tree_definition.find(:job1).spawn @resources
|
9
|
+
@leaf = @tree_definition.find(:job2).spawn @resources, @root
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_serialize
|
13
|
+
assert_equal '["tree1","job2",1,2,3]', @leaf.send(:serialize)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_storing
|
17
|
+
@leaf.store
|
18
|
+
assert_parent_key(
|
19
|
+
'ResqueJobsTree:Node:["tree1","job2",1,2,3]' => 'ResqueJobsTree:Node:["tree1","job1",1,2,3]')
|
20
|
+
assert_equal ['ResqueJobsTree:Node:["tree1","job2",1,2,3]'], redis.smembers(@root.childs_key)
|
21
|
+
@leaf.unstore
|
22
|
+
assert_parent_key({})
|
23
|
+
assert_equal [], redis.smembers(@root.childs_key)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_cleanup_for_root
|
27
|
+
create_3_nodes
|
28
|
+
@spawn1.cleanup
|
29
|
+
assert_equal [], redis.keys
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_cleanup_for_leaf
|
33
|
+
create_3_nodes
|
34
|
+
@spawn3.cleanup
|
35
|
+
assert_equal [ 'ResqueJobsTree:Tree:Launched',
|
36
|
+
'ResqueJobsTree:Node:Parents',
|
37
|
+
'ResqueJobsTree:Node:["tree1","job1",1]:childs',
|
38
|
+
'ResqueJobsTree:Node:["tree1","job2"]:childs'], redis.keys
|
39
|
+
assert_parent_key( 'ResqueJobsTree:Node:["tree1","job2"]' => 'ResqueJobsTree:Node:["tree1","job1",1]',
|
40
|
+
'ResqueJobsTree:Node:["tree1","job3",2]' => 'ResqueJobsTree:Node:["tree1","job2"]')
|
41
|
+
assert_trees_key ['ResqueJobsTree:Tree:["tree1",1]']
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_cleanup_for_not_root_nor_leaf
|
45
|
+
create_3_nodes
|
46
|
+
@spawn2.cleanup
|
47
|
+
assert_equal [ 'ResqueJobsTree:Tree:Launched',
|
48
|
+
'ResqueJobsTree:Node:["tree1","job1",1]:childs'], redis.keys
|
49
|
+
assert_parent_key({})
|
50
|
+
assert_trees_key ['ResqueJobsTree:Tree:["tree1",1]']
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_parent
|
54
|
+
@leaf.store
|
55
|
+
@leaf.instance_variable_set :@parent, nil
|
56
|
+
assert_equal @root.name, @leaf.parent.name
|
57
|
+
assert_equal @root.resources, @leaf.parent.resources
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_only_stored_child
|
61
|
+
assert @leaf.only_stored_child?
|
62
|
+
@leaf.store
|
63
|
+
assert @leaf.only_stored_child?
|
64
|
+
resources2 = [4,5,6]
|
65
|
+
leaf2 = @tree_definition.find(:job2).spawn resources2, @root
|
66
|
+
leaf2.store
|
67
|
+
assert !@leaf.only_stored_child?
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_stored_childs
|
71
|
+
@leaf.store
|
72
|
+
resources2 = [4,5,6]
|
73
|
+
leaf2 = @tree_definition.find(:job2).spawn resources2, @root
|
74
|
+
leaf2.store
|
75
|
+
assert_equal %w(job2 job2), @root.stored_childs.map(&:name)
|
76
|
+
assert_equal [[4,5,6],[1,2,3]], @root.stored_childs.map(&:resources)
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_node_info_from_key
|
80
|
+
key = %Q{ResqueJobsTree:Node:["tree1","job1",1,2,3]}
|
81
|
+
result = ['job1', [1, 2, 3]]
|
82
|
+
assert_equal result, @root.send(:node_info_from_key, key)
|
83
|
+
end
|
84
|
+
|
85
|
+
private
|
86
|
+
|
87
|
+
def assert_parent_key expected
|
88
|
+
assert_equal expected, redis.hgetall(ResqueJobsTree::Storage::PARENTS_KEY)
|
89
|
+
end
|
90
|
+
|
91
|
+
def assert_trees_key expected
|
92
|
+
assert_equal expected, redis.smembers(ResqueJobsTree::Storage::LAUNCHED_TREES)
|
93
|
+
end
|
94
|
+
|
95
|
+
def create_3_nodes
|
96
|
+
@tree_definition = ResqueJobsTree::Factory.create :tree1 do
|
97
|
+
root :job1 do
|
98
|
+
perform {}
|
99
|
+
childs { [[:job2]] }
|
100
|
+
node :job2 do
|
101
|
+
perform {}
|
102
|
+
childs { [[:job3, 1],[:job3, 2]] }
|
103
|
+
node :job3 do
|
104
|
+
perform {|n|}
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
@tree = @tree_definition.spawn [1]
|
110
|
+
@spawn1 = @tree_definition.root.spawn [1]
|
111
|
+
@spawn2 = @tree_definition.find(:job2).spawn [], @spawn1
|
112
|
+
@spawn3 = @tree_definition.find(:job3).spawn [1], @spawn2
|
113
|
+
@spawn4 = @tree_definition.find(:job3).spawn [2], @spawn2
|
114
|
+
[@tree, @spawn2, @spawn3, @spawn4].each &:store
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class StorageTreeTest < MiniTest::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
create_tree
|
7
|
+
@resources = [Model.new(42), 2, 3]
|
8
|
+
@tree = @tree_definition.spawn @resources
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_serialize
|
12
|
+
assert_equal '["tree1",["Model",42],2,3]', @tree.send(:serialize)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_key
|
16
|
+
assert_equal 'ResqueJobsTree:Tree:["tree1",["Model",42],2,3]', @tree.key
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_storing
|
20
|
+
@tree.store
|
21
|
+
assert_equal ["ResqueJobsTree:Tree:[\"tree1\",[\"Model\",42],2,3]"],
|
22
|
+
redis.smembers(ResqueJobsTree::Storage::LAUNCHED_TREES)
|
23
|
+
@tree.unstore
|
24
|
+
assert_equal [], redis.smembers(ResqueJobsTree::Storage::LAUNCHED_TREES)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -12,8 +12,6 @@ $TESTING = true
|
|
12
12
|
require 'mock_redis'
|
13
13
|
Resque.redis = MockRedis.new
|
14
14
|
|
15
|
-
Resque.inline = true
|
16
|
-
|
17
15
|
#
|
18
16
|
# Fixtures
|
19
17
|
#
|
@@ -36,12 +34,22 @@ class ExpectedException < Exception ; end
|
|
36
34
|
|
37
35
|
class MiniTest::Unit::TestCase
|
38
36
|
|
37
|
+
def setup
|
38
|
+
Resque.inline = true
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
39
43
|
def teardown
|
40
44
|
redis.keys.each{ |key| redis.del key }
|
41
45
|
end
|
42
46
|
|
47
|
+
def redis
|
48
|
+
Resque.redis
|
49
|
+
end
|
50
|
+
|
43
51
|
def create_tree
|
44
|
-
@
|
52
|
+
@tree_definition = ResqueJobsTree::Factory.create :tree1 do
|
45
53
|
root :job1 do
|
46
54
|
perform do |*args|
|
47
55
|
Resque.redis.rpush 'history', 'tree1 job1'
|
@@ -62,12 +70,8 @@ class MiniTest::Unit::TestCase
|
|
62
70
|
end
|
63
71
|
end
|
64
72
|
|
65
|
-
def redis
|
66
|
-
Resque.redis
|
67
|
-
end
|
68
|
-
|
69
73
|
def create_nested_tree
|
70
|
-
@
|
74
|
+
@tree_definition = ResqueJobsTree::Factory.create :tree1 do
|
71
75
|
root :job1 do
|
72
76
|
perform { raise ExpectedException, 'job1' }
|
73
77
|
childs { [ [:job2] ] }
|
data/test/tree_test.rb
CHANGED
@@ -7,130 +7,35 @@ class TreeTest < MiniTest::Unit::TestCase
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_name
|
10
|
-
assert_equal @
|
10
|
+
assert_equal @tree_definition.name, 'tree1'
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
assert_equal @
|
13
|
+
def test_leaves
|
14
|
+
assert_equal @tree_definition.spawn([]).leaves, []
|
15
15
|
end
|
16
16
|
|
17
17
|
def test_root
|
18
|
-
assert @
|
18
|
+
assert @tree_definition.root.kind_of? ResqueJobsTree::Definitions::Node
|
19
19
|
end
|
20
20
|
|
21
|
-
def
|
22
|
-
|
23
|
-
@
|
24
|
-
|
21
|
+
def test_register_a_leaf
|
22
|
+
leaf = 'leaf'
|
23
|
+
tree = @tree_definition.spawn []
|
24
|
+
tree.register_a_leaf leaf
|
25
|
+
assert_equal tree.leaves, [leaf]
|
25
26
|
end
|
26
27
|
|
27
|
-
def
|
28
|
-
assert_equal 'job2', @
|
29
|
-
create_nested_tree
|
30
|
-
assert_equal 'job4',
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_launch
|
34
|
-
resources = [1, 2, 3]
|
35
|
-
@tree.launch *resources
|
36
|
-
history = ['tree1 job2']*3+['tree1 job1']
|
37
|
-
assert_equal history, redis.lrange('history', 0, -1)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_launch_with_no_resources
|
41
|
-
@tree.launch
|
28
|
+
def test_find
|
29
|
+
assert_equal 'job2', @tree_definition.find(:job2).name
|
30
|
+
tree_definition = create_nested_tree
|
31
|
+
assert_equal 'job4', tree_definition.find(:job4).name
|
42
32
|
end
|
43
33
|
|
44
34
|
def test_should_have_root
|
45
|
-
assert_raises ResqueJobsTree::
|
35
|
+
assert_raises ResqueJobsTree::TreeDefinitionInvalid do
|
46
36
|
ResqueJobsTree::Factory.create :tree1 do
|
47
37
|
end
|
48
38
|
end
|
49
39
|
end
|
50
40
|
|
51
|
-
def test_on_failure
|
52
|
-
create_tree_with_on_failure_hook
|
53
|
-
assert_raises ExpectedException do
|
54
|
-
@tree.launch
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_tree_with_resource
|
59
|
-
create_tree_with_resources
|
60
|
-
@tree.launch Model.new(1)
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_nested_tree
|
64
|
-
create_nested_tree
|
65
|
-
assert_raises RuntimeError do # job4 error !
|
66
|
-
@tree.launch
|
67
|
-
end
|
68
|
-
assert_raises NoMethodError do # job3 error !
|
69
|
-
Resque.enqueue_to 'tree1', ResqueJobsTree::Job, 'tree1', 'job3'
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_async_tree
|
74
|
-
tree = ResqueJobsTree::Factory.create :tree1 do
|
75
|
-
root :job1 do
|
76
|
-
perform { raise 'should not arrive here' }
|
77
|
-
childs { [ [:job2], [:job3] ] }
|
78
|
-
node :job2, async: true do
|
79
|
-
perform {}
|
80
|
-
end
|
81
|
-
node :job3 do
|
82
|
-
perform {}
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
tree.launch
|
87
|
-
assert_equal ["ResqueJobsTree:Node:[\"tree1\",\"job2\"]"],
|
88
|
-
Resque.redis.smembers("ResqueJobsTree:Node:[\"tree1\",\"job1\"]:childs")
|
89
|
-
parents_hash = { 'ResqueJobsTree:Node:["tree1","job2"]'=>'ResqueJobsTree:Node:["tree1","job1"]' }
|
90
|
-
assert_equal parents_hash, Resque.redis.hgetall(ResqueJobsTree::Storage::PARENTS_KEY)
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_async_tree_with_fail
|
94
|
-
tree = ResqueJobsTree::Factory.create :tree1 do
|
95
|
-
root :job1 do
|
96
|
-
perform { raise 'should not arrive here' }
|
97
|
-
childs { [ [:job2], [:job3] ] }
|
98
|
-
node :job2, async: true do
|
99
|
-
perform {}
|
100
|
-
end
|
101
|
-
node :job3, continue_on_failure: true do
|
102
|
-
perform { raise ExpectedException, 'an expected failure' }
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
assert_raises ExpectedException do
|
107
|
-
tree.launch
|
108
|
-
end
|
109
|
-
assert_equal ["ResqueJobsTree:Node:[\"tree1\",\"job2\"]"],
|
110
|
-
Resque.redis.smembers("ResqueJobsTree:Node:[\"tree1\",\"job1\"]:childs")
|
111
|
-
end
|
112
|
-
|
113
|
-
private
|
114
|
-
|
115
|
-
def create_tree_with_on_failure_hook
|
116
|
-
@tree = ResqueJobsTree::Factory.create :tree1 do
|
117
|
-
root :job1 do
|
118
|
-
perform { raise ExpectedException, 'job1' }
|
119
|
-
end
|
120
|
-
on_failure do
|
121
|
-
raise ExpectedException, 'called from on_failure block'
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def create_tree_with_resources
|
127
|
-
@tree = ResqueJobsTree::Factory.create :tree1 do
|
128
|
-
root :job1 do
|
129
|
-
perform do |resources|
|
130
|
-
raise 'unknown resource' unless resources.first.kind_of?(Model)
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
|
136
41
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque_jobs_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -105,19 +105,26 @@ files:
|
|
105
105
|
- README.md
|
106
106
|
- Rakefile
|
107
107
|
- lib/resque_jobs_tree.rb
|
108
|
+
- lib/resque_jobs_tree/definitions.rb
|
109
|
+
- lib/resque_jobs_tree/definitions/node.rb
|
110
|
+
- lib/resque_jobs_tree/definitions/tree.rb
|
108
111
|
- lib/resque_jobs_tree/factory.rb
|
109
112
|
- lib/resque_jobs_tree/job.rb
|
110
113
|
- lib/resque_jobs_tree/node.rb
|
111
114
|
- lib/resque_jobs_tree/resources_serializer.rb
|
112
115
|
- lib/resque_jobs_tree/storage.rb
|
116
|
+
- lib/resque_jobs_tree/storage/node.rb
|
117
|
+
- lib/resque_jobs_tree/storage/tree.rb
|
113
118
|
- lib/resque_jobs_tree/tree.rb
|
114
119
|
- lib/resque_jobs_tree/version.rb
|
115
120
|
- resque_jobs_tree.gemspec
|
121
|
+
- test/definitions_test.rb
|
116
122
|
- test/factory_test.rb
|
117
123
|
- test/job_test.rb
|
118
|
-
- test/
|
124
|
+
- test/process_test.rb
|
119
125
|
- test/resources_serializer_test.rb
|
120
|
-
- test/
|
126
|
+
- test/storage_node_test.rb
|
127
|
+
- test/storage_tree_test.rb
|
121
128
|
- test/test_helper.rb
|
122
129
|
- test/tree_test.rb
|
123
130
|
homepage: ''
|
@@ -146,11 +153,13 @@ signing_key:
|
|
146
153
|
specification_version: 3
|
147
154
|
summary: Organise Resque jobs as a tree.
|
148
155
|
test_files:
|
156
|
+
- test/definitions_test.rb
|
149
157
|
- test/factory_test.rb
|
150
158
|
- test/job_test.rb
|
151
|
-
- test/
|
159
|
+
- test/process_test.rb
|
152
160
|
- test/resources_serializer_test.rb
|
153
|
-
- test/
|
161
|
+
- test/storage_node_test.rb
|
162
|
+
- test/storage_tree_test.rb
|
154
163
|
- test/test_helper.rb
|
155
164
|
- test/tree_test.rb
|
156
165
|
has_rdoc:
|
data/test/node_test.rb
DELETED
@@ -1,188 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class NodeTest < MiniTest::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@tree = ResqueJobsTree::Tree.new :tree1
|
7
|
-
@root = ResqueJobsTree::Node.new :node1, @tree
|
8
|
-
@leaf = ResqueJobsTree::Node.new :node2, @tree, @root
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_ressources
|
12
|
-
variable = 1
|
13
|
-
@root.resources do |n|
|
14
|
-
variable = n
|
15
|
-
end
|
16
|
-
@root.resources.call 2
|
17
|
-
assert_equal variable, 2
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_perform
|
21
|
-
variable = 1
|
22
|
-
@root.perform do |n|
|
23
|
-
variable = n
|
24
|
-
end
|
25
|
-
@root.perform.call 2
|
26
|
-
assert_equal variable, 2
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_childs
|
30
|
-
variable = 1
|
31
|
-
@leaf.childs do |n|
|
32
|
-
variable = n
|
33
|
-
end
|
34
|
-
@leaf.childs.call 2
|
35
|
-
assert_equal variable, 2
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_node
|
39
|
-
node3 = @root.node :node3
|
40
|
-
assert_equal @root.find_node_by_name('node3').object_id, node3.object_id
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_leaf
|
44
|
-
resources = []
|
45
|
-
assert @leaf.leaf?(resources)
|
46
|
-
@root.childs do |resources|
|
47
|
-
[:node2, resources]
|
48
|
-
end
|
49
|
-
assert !@root.leaf?(resources)
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_root
|
53
|
-
assert @root.root?
|
54
|
-
assert !@leaf.root?
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_siblings
|
58
|
-
node3 = ResqueJobsTree::Node.new :node3, @tree, @root
|
59
|
-
assert @leaf.siblings, [node3]
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_launch
|
63
|
-
resources = [1, 2, 3]
|
64
|
-
@leaf.launch resources, resources
|
65
|
-
assert_equal @tree.jobs.first, ['tree1', 'node2', 1, 2, 3]
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_childs_validation
|
69
|
-
assert_raises ResqueJobsTree::NodeInvalid do
|
70
|
-
ResqueJobsTree::Factory.create :tree1 do
|
71
|
-
root :job1 do
|
72
|
-
perform {}
|
73
|
-
childs {}
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
ResqueJobsTree::Factory.create :tree1 do
|
78
|
-
root :job1 do
|
79
|
-
perform {}
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_perform_validation
|
85
|
-
assert_raises ResqueJobsTree::NodeInvalid do
|
86
|
-
ResqueJobsTree::Factory.create :tree1 do
|
87
|
-
root :job1 do
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_perform_validation
|
94
|
-
assert_raises ResqueJobsTree::NodeInvalid do
|
95
|
-
ResqueJobsTree::Factory.create :tree1 do
|
96
|
-
root :job1 do
|
97
|
-
perform {}
|
98
|
-
childs {}
|
99
|
-
node :job2 do
|
100
|
-
perform {}
|
101
|
-
end
|
102
|
-
node :job2 do
|
103
|
-
perform {}
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_options
|
111
|
-
create_async_tree
|
112
|
-
options = { async: true }
|
113
|
-
assert_equal options, @tree.find_node_by_name(:job2).options
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_launch_async
|
117
|
-
create_async_tree
|
118
|
-
resources = [1, 2, 3]
|
119
|
-
@tree.launch resources
|
120
|
-
assert @tree.jobs.empty?
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_launch_continue_on_failure
|
124
|
-
tree = ResqueJobsTree::Factory.create :tree1 do
|
125
|
-
root :job1 do
|
126
|
-
perform { raise ExpectedException, 'an expected failure' }
|
127
|
-
childs { [:job2] }
|
128
|
-
node :job2, continue_on_failure: true do
|
129
|
-
perform { raise 'an expected failure' }
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
resources = [1, 2, 3]
|
134
|
-
assert_raises ExpectedException do
|
135
|
-
tree.launch resources
|
136
|
-
end
|
137
|
-
assert_equal [], Resque.keys
|
138
|
-
end
|
139
|
-
|
140
|
-
def test_leaf_failure
|
141
|
-
tree = ResqueJobsTree::Factory.create :tree1 do
|
142
|
-
root :job1 do
|
143
|
-
perform {}
|
144
|
-
childs { [:job2] }
|
145
|
-
node :job2 do
|
146
|
-
perform { raise ExpectedException, 'an expected exception'}
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
resources = [1, 2, 3]
|
151
|
-
assert_raises ExpectedException do
|
152
|
-
tree.launch *resources
|
153
|
-
end
|
154
|
-
assert_equal [], Resque.keys
|
155
|
-
end
|
156
|
-
|
157
|
-
def test_root_failure
|
158
|
-
tree = ResqueJobsTree::Factory.create :tree1 do
|
159
|
-
root :job1 do
|
160
|
-
perform { raise ExpectedException, 'an expected exception' }
|
161
|
-
childs { [:job2] }
|
162
|
-
node :job2 do
|
163
|
-
perform {}
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|
167
|
-
resources = [1, 2, 3]
|
168
|
-
assert_raises ExpectedException do
|
169
|
-
tree.launch resources
|
170
|
-
end
|
171
|
-
assert_equal [], Resque.keys
|
172
|
-
end
|
173
|
-
|
174
|
-
private
|
175
|
-
|
176
|
-
def create_async_tree
|
177
|
-
@tree = ResqueJobsTree::Factory.create :tree1 do
|
178
|
-
root :job1 do
|
179
|
-
perform { raise 'should not arrive here' }
|
180
|
-
childs { [:job2] }
|
181
|
-
node :job2, async: true do
|
182
|
-
perform {}
|
183
|
-
end
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
end
|