Skip to content

Commit e1dcb08

Browse files
Add test for failures during concurrency.
1 parent b219101 commit e1dcb08

1 file changed

Lines changed: 18 additions & 0 deletions

File tree

test/async/service/policy.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# Released under the MIT License.
44
# Copyright, 2026, by Samuel Williams.
55

6+
require "async/container/best"
67
require "async/service/policy"
78
require "async/container/statistics"
89

@@ -157,4 +158,21 @@ def success_status.success?; true; end
157158
expect(statistics.failure_rate.window).to be == 60
158159
end
159160
end
161+
162+
with "concurrent failures" do
163+
it "only stops container once when multiple children fail simultaneously" do
164+
container = Async::Container.best_container_class.new(policy: policy)
165+
expect(container).to receive(:stop)
166+
167+
# Spawn 10 children that all fail immediately:
168+
10.times do |i|
169+
container.spawn(name: "worker-#{i}") do |instance|
170+
instance.ready!
171+
exit(1)
172+
end
173+
end
174+
175+
container.wait
176+
end
177+
end
160178
end

0 commit comments

Comments
 (0)