diff options
author | Jun Aruga <[email protected]> | 2023-10-28 11:10:30 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2023-10-28 11:10:30 +0200 |
commit | 3eaae72855b23158e2148566bb8a7667bfb395cb (patch) | |
tree | 7757a8fb5ff018a714c6a0a3a91767638823f026 | |
parent | f7605db8c5c5917417c4c204b3f4ea8a3ce8b11a (diff) |
test/fiber/test_queue.rb: Make the stuck test fail. (#8791)
test/fiber/test_queue.rb: Make the stuck tests fail.
We observed the 2 tests in the `test/fiber/test_queue.rb` getting stuck
in some GCC compilers in Ubuntu ppc64le focal/jammy, even when the timeout
`queue.pop(timeout: 0.0001)` is set in the code.
This commit is to make the tests fail rather than getting stuck.
-rw-r--r-- | test/fiber/test_queue.rb | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/test/fiber/test_queue.rb b/test/fiber/test_queue.rb index 10d9540492..d78b026f11 100644 --- a/test/fiber/test_queue.rb +++ b/test/fiber/test_queue.rb @@ -5,9 +5,10 @@ require_relative 'scheduler' class TestFiberQueue < Test::Unit::TestCase def test_pop_with_timeout queue = Thread::Queue.new + kill = false result = :unspecified - Thread.new do + thread = Thread.new do scheduler = Scheduler.new Fiber.set_scheduler(scheduler) @@ -16,17 +17,23 @@ class TestFiberQueue < Test::Unit::TestCase end scheduler.run - end.join + end + until thread.join(2) + kill = true + thread.kill + end + assert_false(kill, 'Getting stuck due to a possible compiler bug.') assert_nil result end def test_pop_with_timeout_and_value queue = Thread::Queue.new queue.push(:something) + kill = false result = :unspecified - Thread.new do + thread = Thread.new do scheduler = Scheduler.new Fiber.set_scheduler(scheduler) @@ -35,8 +42,13 @@ class TestFiberQueue < Test::Unit::TestCase end scheduler.run - end.join + end + until thread.join(2) + kill = true + thread.kill + end + assert_false(kill, 'Getting stuck due to a possible compiler bug.') assert_equal :something, result end end |