bumbleworks 0.0.57 → 0.0.58
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/bumbleworks/process.rb +8 -0
- data/lib/bumbleworks/ruote.rb +23 -10
- data/lib/bumbleworks/tracker.rb +8 -0
- data/lib/bumbleworks/version.rb +1 -1
- data/spec/lib/bumbleworks/process_spec.rb +10 -0
- data/spec/lib/bumbleworks/ruote_spec.rb +18 -7
- data/spec/lib/bumbleworks/tracker_spec.rb +15 -1
- metadata +3 -3
data/lib/bumbleworks/process.rb
CHANGED
data/lib/bumbleworks/ruote.rb
CHANGED
@@ -51,7 +51,12 @@ module Bumbleworks
|
|
51
51
|
options[:method] = :cancel
|
52
52
|
end
|
53
53
|
|
54
|
-
|
54
|
+
if options[:method] == :cancel
|
55
|
+
dashboard.cancel(wfid)
|
56
|
+
else
|
57
|
+
storage.remove_process(wfid)
|
58
|
+
end
|
59
|
+
|
55
60
|
start_time = Time.now
|
56
61
|
while dashboard.process(wfid)
|
57
62
|
if (Time.now - start_time) > options[:timeout]
|
@@ -72,25 +77,33 @@ module Bumbleworks
|
|
72
77
|
options[:method] = :cancel
|
73
78
|
end
|
74
79
|
|
75
|
-
|
80
|
+
notified_process_wfids = []
|
76
81
|
|
77
82
|
start_time = Time.now
|
78
|
-
while dashboard.
|
79
|
-
|
80
|
-
|
81
|
-
|
83
|
+
while dashboard.process_wfids.count > 0
|
84
|
+
new_process_wfids = dashboard.process_wfids - notified_process_wfids
|
85
|
+
if options[:method] == :cancel
|
86
|
+
send_cancellation_message(options[:method], new_process_wfids)
|
87
|
+
else
|
88
|
+
storage.clear
|
89
|
+
end
|
90
|
+
notified_process_wfids += new_process_wfids
|
82
91
|
|
83
92
|
if (Time.now - start_time) > options[:timeout]
|
84
93
|
error_type = options[:method] == :cancel ? CancelTimeout : KillTimeout
|
85
|
-
raise error_type, "Process #{options[:method]} taking too long - #{dashboard.
|
94
|
+
raise error_type, "Process #{options[:method]} taking too long - #{dashboard.process_wfids.count} processes remain. Errors: #{dashboard.errors}"
|
86
95
|
end
|
87
96
|
sleep 0.1
|
88
97
|
end
|
89
98
|
end
|
90
99
|
|
91
|
-
def send_cancellation_message(method,
|
92
|
-
|
93
|
-
|
100
|
+
def send_cancellation_message(method, process_wfids)
|
101
|
+
process_wfids.each do |wfid|
|
102
|
+
if method == :cancel
|
103
|
+
dashboard.cancel(wfid)
|
104
|
+
else
|
105
|
+
storage.remove_process(wfid)
|
106
|
+
end
|
94
107
|
end
|
95
108
|
end
|
96
109
|
|
data/lib/bumbleworks/tracker.rb
CHANGED
@@ -2,6 +2,14 @@ module Bumbleworks
|
|
2
2
|
class Tracker
|
3
3
|
attr_reader :id, :original_hash
|
4
4
|
|
5
|
+
class << self
|
6
|
+
def all
|
7
|
+
Bumbleworks.dashboard.get_trackers.map do |tid, attrs|
|
8
|
+
new(tid, attrs)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
5
13
|
def initialize(id, original_hash = nil)
|
6
14
|
@id = id
|
7
15
|
@original_hash = original_hash || Bumbleworks.dashboard.get_trackers[id]
|
data/lib/bumbleworks/version.rb
CHANGED
@@ -25,6 +25,16 @@ describe Bumbleworks::Process do
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
+
describe '.all' do
|
29
|
+
it 'returns instances for all process wfids' do
|
30
|
+
bp1 = Bumbleworks.launch!('going_to_the_dance')
|
31
|
+
bp2 = Bumbleworks.launch!('going_to_the_dance')
|
32
|
+
bp3 = Bumbleworks.launch!('straightening_the_rocks')
|
33
|
+
wait_until { Bumbleworks.dashboard.process_wfids.count == 3 }
|
34
|
+
described_class.all.should =~ [bp1, bp2, bp3]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
28
38
|
describe '.new' do
|
29
39
|
it 'sets workflow id' do
|
30
40
|
bp = described_class.new('apples')
|
@@ -60,7 +60,6 @@ describe Bumbleworks::Ruote do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it 'times out if process is not killed in time' do
|
63
|
-
Bumbleworks.dashboard.stub(:kill)
|
64
63
|
Bumbleworks.dashboard.stub(:process).with('woot').and_return(:i_exist)
|
65
64
|
expect {
|
66
65
|
described_class.kill_process!('woot', :timeout => 0.5)
|
@@ -121,12 +120,12 @@ describe Bumbleworks::Ruote do
|
|
121
120
|
Bumbleworks.dashboard.wait_for("lazy_guy_#{i}".to_sym)
|
122
121
|
end
|
123
122
|
|
124
|
-
Bumbleworks.dashboard.
|
123
|
+
Bumbleworks.dashboard.process_wfids.count.should == 5
|
125
124
|
|
126
125
|
described_class.cancel_all_processes!(:timeout => 30)
|
127
126
|
|
128
127
|
# 4. When this is all done, all processes should be cancelled.
|
129
|
-
Bumbleworks.dashboard.
|
128
|
+
Bumbleworks.dashboard.process_wfids.count.should == 0
|
130
129
|
end
|
131
130
|
|
132
131
|
it 'times out if processes are not cancelled in time' do
|
@@ -140,7 +139,7 @@ describe Bumbleworks::Ruote do
|
|
140
139
|
end
|
141
140
|
Bumbleworks.launch!('time_hog')
|
142
141
|
Bumbleworks.dashboard.wait_for(:pigheaded)
|
143
|
-
Bumbleworks.dashboard.
|
142
|
+
Bumbleworks.dashboard.process_wfids.count.should == 1
|
144
143
|
expect {
|
145
144
|
described_class.cancel_all_processes!(:timeout => 0.5)
|
146
145
|
}.to raise_error(Bumbleworks::Ruote::CancelTimeout)
|
@@ -172,15 +171,27 @@ describe Bumbleworks::Ruote do
|
|
172
171
|
end
|
173
172
|
|
174
173
|
it 'times out if processes are not killed in time' do
|
175
|
-
Bumbleworks.dashboard.stub(:
|
176
|
-
ps1 = double('process', :wfid => nil)
|
177
|
-
Bumbleworks.dashboard.stub(:processes).and_return([ps1])
|
174
|
+
Bumbleworks.dashboard.stub(:process_wfids).and_return(['immortal_wfid'])
|
178
175
|
expect {
|
179
176
|
described_class.kill_all_processes!(:timeout => 0.5)
|
180
177
|
}.to raise_error(Bumbleworks::Ruote::KillTimeout)
|
181
178
|
end
|
182
179
|
end
|
183
180
|
|
181
|
+
describe '.send_cancellation_message' do
|
182
|
+
it 'sends cancel message to given wfids if method is cancel' do
|
183
|
+
Bumbleworks.dashboard.should_receive(:cancel).with('wfid1')
|
184
|
+
Bumbleworks.dashboard.should_receive(:cancel).with('wfid2')
|
185
|
+
described_class.send_cancellation_message(:cancel, ['wfid1', 'wfid2'])
|
186
|
+
end
|
187
|
+
|
188
|
+
it 'removes given processes from storage if method is kill' do
|
189
|
+
Bumbleworks.dashboard.storage.should_receive(:remove_process).with('wfid1')
|
190
|
+
Bumbleworks.dashboard.storage.should_receive(:remove_process).with('wfid2')
|
191
|
+
described_class.send_cancellation_message(:kill, ['wfid1', 'wfid2'])
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
184
195
|
describe '.dashboard' do
|
185
196
|
it 'raises an error if no storage is defined' do
|
186
197
|
Bumbleworks.storage = nil
|
@@ -7,7 +7,21 @@ describe Bumbleworks::Tracker do
|
|
7
7
|
Bumbleworks.storage = {}
|
8
8
|
Bumbleworks.dashboard.stub(:get_trackers => fake_trackers)
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
|
+
describe '.all' do
|
12
|
+
it 'returns instances for each tracker in system' do
|
13
|
+
trackers = described_class.all
|
14
|
+
trackers.all? { |t| t.class == Bumbleworks::Tracker }.should be_true
|
15
|
+
trackers.map(&:id).should =~ [
|
16
|
+
'on_error',
|
17
|
+
'global_tracker',
|
18
|
+
'local_tracker',
|
19
|
+
'local_error_intercept',
|
20
|
+
'participant_tracker'
|
21
|
+
]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
11
25
|
describe '.new' do
|
12
26
|
it 'sets tracker id and fetches original_hash from dashboard' do
|
13
27
|
tr = described_class.new('global_tracker')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bumbleworks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.58
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -262,7 +262,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
262
|
version: '0'
|
263
263
|
segments:
|
264
264
|
- 0
|
265
|
-
hash:
|
265
|
+
hash: 1107263111673014541
|
266
266
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
267
|
none: false
|
268
268
|
requirements:
|
@@ -271,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
271
|
version: '0'
|
272
272
|
segments:
|
273
273
|
- 0
|
274
|
-
hash:
|
274
|
+
hash: 1107263111673014541
|
275
275
|
requirements: []
|
276
276
|
rubyforge_project:
|
277
277
|
rubygems_version: 1.8.23
|