summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--test/-ext-/old_thread_select/test_old_thread_select.rb19
2 files changed, 22 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index cce2edf25f..7e50c99bc5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+Mon Sep 19 18:42:58 2011 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
+
+ * 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]
+
Mon Sep 19 09:28:06 2011 Eric Hodel <drbrain@segment7.net>
* test/openssl/test_ssl.rb (class OpenSSL): Test
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"