summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-15 14:31:47 +0000
committerngoto <ngoto@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-05-15 14:31:47 +0000
commit80bf542a6ccc8988e7ac6dbabcfe8955c587d402 (patch)
tree8af91edc02bcc40e57e1b087890826b98ce6a82a /test
parent6189f2263de9a1be233f6ec75fabb10a6c10c5e0 (diff)
Split TestThread#test_join_limits into peaces
* test/ruby/test_thread.rb (TestThread#test_join_limit_*): Split TestThread#test_join_limits for investigating hang-up on Solaris. Each method tests only a single limit value. [ruby-core:87045] [Bug #14761] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63437 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_thread.rb34
1 files changed, 25 insertions, 9 deletions
diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb
index eebedb053b..98a7d15c6a 100644
--- a/test/ruby/test_thread.rb
+++ b/test/ruby/test_thread.rb
@@ -2,6 +2,7 @@
# frozen_string_literal: false
require 'test/unit'
require "rbconfig/sizeof"
+require "timeout"
class TestThread < Test::Unit::TestCase
class Thread < ::Thread
@@ -228,19 +229,34 @@ class TestThread < Test::Unit::TestCase
t3.kill if t3
end
- def test_join_limits
- [ RbConfig::LIMITS['FIXNUM_MAX'], RbConfig::LIMITS['UINT64_MAX'],
- Float::INFINITY ].each do |limit|
+ { 'FIXNUM_MAX' => RbConfig::LIMITS['FIXNUM_MAX'],
+ 'UINT64_MAX' => RbConfig::LIMITS['UINT64_MAX'],
+ 'INFINITY' => Float::INFINITY
+ }.each do |name, limit|
+ define_method("test_join_limit_#{name}") do
t = Thread.new {}
assert_same t, t.join(limit), "limit=#{limit.inspect}"
end
- t = Thread.new { sleep }
- [ -1, -0.1, RbConfig::LIMITS['FIXNUM_MIN'], RbConfig::LIMITS['INT64_MIN'],
- -Float::INFINITY
- ].each do |limit|
- assert_nil t.join(limit), "limit=#{limit.inspect}"
+ end
+
+ { 'minus_1' => -1,
+ 'minus_0_1' => -0.1,
+ 'FIXNUM_MIN' => RbConfig::LIMITS['FIXNUM_MIN'],
+ 'INT64_MIN' => RbConfig::LIMITS['INT64_MIN'],
+ 'minus_INFINITY' => -Float::INFINITY
+ }.each do |name, limit|
+ define_method("test_join_limit_negative_#{name}") do
+ t = Thread.new { sleep }
+ begin
+ assert_nothing_raised(Timeout::Error) do
+ Timeout.timeout(30) do
+ assert_nil t.join(limit), "limit=#{limit.inspect}"
+ end
+ end
+ ensure
+ t.kill
+ end
end
- t.kill
end
def test_kill_main_thread