diff options
| author | nagachika <nagachika@ruby-lang.org> | 2023-11-19 22:01:21 +0900 |
|---|---|---|
| committer | nagachika <nagachika@ruby-lang.org> | 2023-11-19 22:01:21 +0900 |
| commit | 5e9948336e95ea8e5ff7f0554ae57be8d498af70 (patch) | |
| tree | 489492cf8c58993dbc954f45fda1e6e135b6cb76 | |
| parent | 1cc38d5a2f84733e1c2e42548639e2891fe61e69 (diff) | |
merge revision(s) 3eaae72855b23158e2148566bb8a7667bfb395cb:
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(-)
| -rw-r--r-- | test/fiber/test_queue.rb | 20 | ||||
| -rw-r--r-- | version.h | 2 |
2 files changed, 17 insertions, 5 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 @@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 2 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 131 +#define RUBY_PATCHLEVEL 132 #include "ruby/version.h" #include "ruby/internal/abi.h" |
