From d4db53a0e00f06e44b583156359258aa213fda52 Mon Sep 17 00:00:00 2001 From: kosaki Date: Mon, 19 Sep 2011 09:47:27 +0000 Subject: * test/-ext-/old_thread_select/test_old_thread_select.rb: select() with timeout may return early in old Linux kernels with 250 Hz tickrate and no dynticks, so skip everything older than 2.6.32 (which has long term support). And, Make the timing assertions consistently use assert_operator with timing difference in error message Patch by Eric Wong. [Bug #5335] [ruby-core:39618] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33296 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- .../-ext-/old_thread_select/test_old_thread_select.rb | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'test/-ext-/old_thread_select') diff --git a/test/-ext-/old_thread_select/test_old_thread_select.rb b/test/-ext-/old_thread_select/test_old_thread_select.rb index b70e1d3862..5653dbc021 100644 --- a/test/-ext-/old_thread_select/test_old_thread_select.rb +++ b/test/-ext-/old_thread_select/test_old_thread_select.rb @@ -3,6 +3,8 @@ require 'test/unit' class TestOldThreadSelect < Test::Unit::TestCase require '-test-/old_thread_select/old_thread_select' + ANCIENT_LINUX = RUBY_PLATFORM =~ /linux/ && `uname -r`.chomp < '2.6.32' + def with_pipe r, w = IO.pipe begin @@ -19,9 +21,9 @@ class TestOldThreadSelect < Test::Unit::TestCase rc = IO.old_thread_select([r.fileno], nil, nil, 0.001) diff = Time.now - t0 assert_equal 0, rc - assert_operator diff, :>=, 0.001, "returned too early" + assert_operator diff, :>=, 0.001, "returned too early: diff=#{diff}" end - end + end unless ANCIENT_LINUX def test_old_select_error_timeout bug5299 = '[ruby-core:39380]' @@ -30,9 +32,9 @@ class TestOldThreadSelect < Test::Unit::TestCase rc = IO.old_thread_select(nil, nil, [r.fileno], 0.001) diff = Time.now - t0 assert_equal 0, rc, bug5299 - assert_operator diff, :>=, 0.001, "returned too early" + assert_operator diff, :>=, 0.001, "returned too early: diff=#{diff}" end - end + end unless ANCIENT_LINUX def test_old_select_false_positive bug5306 = '[ruby-core:39435]' @@ -76,15 +78,18 @@ class TestOldThreadSelect < Test::Unit::TestCase end rc = nil - t0 = Time.now + diff = nil with_pipe do |r,w| assert_nothing_raised do + t0 = Time.now rc = IO.old_thread_select([r.fileno], nil, nil, 1) + diff = Time.now - t0 end end - diff = Time.now - t0 - assert_operator diff, :>=, 1.0, "interrupted or short wait" + unless ANCIENT_LINUX + assert_operator diff, :>=, 1, "interrupted or short wait: diff=#{diff}" + end assert_equal 0, rc assert_equal true, thr.value assert_not_equal false, received, "SIGINT not received" -- cgit v1.2.3