You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.1 KiB
50 lines
1.1 KiB
https://github.com/socketry/async/commit/8f590415c08943372e0227f01d3c32e92dbcbed0
|
|
https://github.com/socketry/async/issues/218
|
|
|
|
From 8f590415c08943372e0227f01d3c32e92dbcbed0 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Williams <samuel.williams@oriontransfer.co.nz>
|
|
Date: Sun, 12 Mar 2023 20:33:48 +1300
|
|
Subject: [PATCH] Improve robustness of test, fixes #218.
|
|
|
|
--- a/spec/async/semaphore_spec.rb
|
|
+++ b/spec/async/semaphore_spec.rb
|
|
@@ -62,7 +62,7 @@
|
|
3.times.map do |i|
|
|
semaphore.async do |task|
|
|
order << i
|
|
- task.sleep(0.1)
|
|
+ task.yield
|
|
order << i
|
|
end
|
|
end.collect(&:result)
|
|
@@ -72,17 +72,22 @@
|
|
|
|
it 'allows tasks to execute concurrently' do
|
|
semaphore = Async::Semaphore.new(3)
|
|
- order = []
|
|
+ concurrency = 0
|
|
+ latch = Async::Condition.new
|
|
|
|
3.times.map do |i|
|
|
semaphore.async do |task|
|
|
- order << i
|
|
- task.sleep(0.1)
|
|
- order << i
|
|
+ concurrency += 1
|
|
+
|
|
+ if concurrency == 3
|
|
+ latch.signal
|
|
+ else
|
|
+ latch.wait
|
|
+ end
|
|
end
|
|
- end.collect(&:result)
|
|
+ end.each(&:wait)
|
|
|
|
- expect(order).to be == [0, 1, 2, 0, 1, 2]
|
|
+ expect(concurrency).to be == 3
|
|
end
|
|
end
|
|
|
|
|