bumbleworks 0.0.36 → 0.0.37

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/.gitignore CHANGED
@@ -14,3 +14,4 @@ spec/reports
14
14
  test/tmp
15
15
  test/version_tmp
16
16
  tmp
17
+ .bash_color
@@ -70,12 +70,14 @@ module Bumbleworks
70
70
  options[:method] = :cancel
71
71
  end
72
72
 
73
- dashboard.processes.each do |ps|
74
- dashboard.send(options[:method], ps.wfid)
75
- end
73
+ notified_processes = []
76
74
 
77
75
  start_time = Time.now
78
76
  while dashboard.processes.count > 0
77
+ new_processes = dashboard.processes - notified_processes
78
+ send_cancellation_message(options[:method], new_processes)
79
+ notified_processes += new_processes
80
+
79
81
  if (Time.now - start_time) > options[:timeout]
80
82
  error_type = options[:method] == :cancel ? CancelTimeout : KillTimeout
81
83
  raise error_type, "Process #{options[:method]} taking too long - #{dashboard.processes.count} processes remain. Errors: #{dashboard.errors}"
@@ -84,6 +86,12 @@ module Bumbleworks
84
86
  end
85
87
  end
86
88
 
89
+ def send_cancellation_message(method, processes)
90
+ processes.each do |ps|
91
+ dashboard.send(method, ps.wfid)
92
+ end
93
+ end
94
+
87
95
  def kill_all_processes!(options = {})
88
96
  cancel_all_processes!(options.merge(:method => :kill))
89
97
  end
@@ -1,3 +1,3 @@
1
1
  module Bumbleworks
2
- VERSION = "0.0.36"
2
+ VERSION = "0.0.37"
3
3
  end
@@ -87,6 +87,48 @@ describe Bumbleworks::Ruote do
87
87
  Bumbleworks.dashboard.processes.count.should == 0
88
88
  end
89
89
 
90
+
91
+ it 'cancels processes which show up while waiting' do
92
+ class Bumbleworks::Ruote
93
+ class << self
94
+ alias_method :original, :send_cancellation_message
95
+ def send_cancellation_message(method, processes)
96
+ # 2. call original method to cancel the processes kicked off below
97
+ original(method, processes)
98
+
99
+ # 3. launch some more processes before returning, but only do it once.
100
+ # These should also be cancelled.
101
+ if !@kicked_off
102
+ Bumbleworks.define_process "do_more_nothing" do
103
+ participant :ref => "lazy_guy_bob", :task => 'absolutely_nothing'
104
+ end
105
+
106
+ 10.times do
107
+ Bumbleworks.launch!("do_more_nothing")
108
+ end
109
+ @kicked_off = true
110
+ end
111
+ end
112
+ end
113
+ end
114
+
115
+ # 1. kick off some processes, wait for them then cancel them.
116
+ 5.times do |i|
117
+ Bumbleworks.define_process "do_nothing_#{i}" do
118
+ participant :ref => "lazy_guy_#{i}", :task => 'absolutely_nothing'
119
+ end
120
+ Bumbleworks.launch!("do_nothing_#{i}")
121
+ Bumbleworks.dashboard.wait_for("lazy_guy_#{i}".to_sym)
122
+ end
123
+
124
+ Bumbleworks.dashboard.processes.count.should == 5
125
+
126
+ described_class.cancel_all_processes!(:timeout => 30)
127
+
128
+ # 4. When this is all done, all processes should be cancelled.
129
+ Bumbleworks.dashboard.processes.count.should == 0
130
+ end
131
+
90
132
  it 'times out if processes are not cancelled in time' do
91
133
  Bumbleworks.define_process "time_hog" do
92
134
  sequence :on_cancel => 'ignore_parents' do
@@ -245,4 +287,4 @@ describe Bumbleworks::Ruote do
245
287
  described_class.dashboard.participant_list.first.classname.should == 'Bumbleworks::StorageParticipant'
246
288
  end
247
289
  end
248
- end
290
+ end
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.36
4
+ version: 0.0.37
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-09-23 00:00:00.000000000 Z
15
+ date: 2013-09-27 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: ruote
@@ -236,7 +236,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
236
236
  version: '0'
237
237
  segments:
238
238
  - 0
239
- hash: 1823599650182375009
239
+ hash: -2225895181847802927
240
240
  required_rubygems_version: !ruby/object:Gem::Requirement
241
241
  none: false
242
242
  requirements:
@@ -245,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
245
  version: '0'
246
246
  segments:
247
247
  - 0
248
- hash: 1823599650182375009
248
+ hash: -2225895181847802927
249
249
  requirements: []
250
250
  rubyforge_project:
251
251
  rubygems_version: 1.8.23