From 3eaae72855b23158e2148566bb8a7667bfb395cb Mon Sep 17 00:00:00 2001 From: Jun Aruga Date: Sat, 28 Oct 2023 11:10:30 +0200 Subject: 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. --- test/fiber/test_queue.rb | 20 ++++++++++++++++---- 1 file 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 -- cgit v1.2.3