about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2012-03-20 22:00:47 +0000
committerEric Wong <normalperson@yhbt.net>2012-03-23 23:48:37 +0000
commite26358413c9d87e1ce8f6cda5cf0b8dd53979ed2 (patch)
tree7fa033b6f91868eb98875fe85046e7017397e910
parent2cab4f2fa642241dbcaf8881d39bd275a59dc67b (diff)
downloadkgio-e26358413c9d87e1ce8f6cda5cf0b8dd53979ed2.tar.gz
Under load, TCP sockets may not register as readable right away
after the writer finishes.  This can be expected for
implementations where loopback TCP is a closer simulation of
non-local TCP traffic.

These test failures were noticed under FreeBSD 9.0.
-rw-r--r--test/lib_read_write.rb5
-rw-r--r--test/test_tcp_connect.rb1
2 files changed, 6 insertions, 0 deletions
diff --git a/test/lib_read_write.rb b/test/lib_read_write.rb
index cf2f781..c5a60d9 100644
--- a/test/lib_read_write.rb
+++ b/test/lib_read_write.rb
@@ -57,6 +57,7 @@ module LibReadWriteTest
     a = "." * 0x1000
     b = a.dup
     @wr.syswrite("a")
+    IO.select([@rd]) # this seems needed on FreeBSD 9.0
     assert_equal "a", @rd.kgio_tryread(0x1000, b)
     assert_equal "a", b
     assert_equal "." * 0x1000, a
@@ -66,6 +67,7 @@ module LibReadWriteTest
     a = "." * 0x1000
     b = a.dup
     @wr.syswrite("a")
+    IO.select([@rd]) # this seems needed on FreeBSD 9.0
     assert_equal "a", @rd.kgio_tryread(0x1000, a)
     assert_equal "a", a
     assert_equal "." * 0x1000, b
@@ -88,6 +90,7 @@ module LibReadWriteTest
 
   def test_tryread_eof
     @wr.close
+    IO.select([@rd]) # this seems needed on FreeBSD 9.0
     assert_nil @rd.kgio_tryread(5)
   end
 
@@ -157,6 +160,7 @@ module LibReadWriteTest
 
   def test_trywrite_conv
     assert_equal nil, @wr.kgio_trywrite(10)
+    IO.select([@rd]) # this seems needed on FreeBSD 9.0
     assert_equal "10", @rd.kgio_tryread(2)
   end
 
@@ -182,6 +186,7 @@ module LibReadWriteTest
 
   def test_tryread_short
     assert_equal nil, @wr.kgio_trywrite("hi")
+    IO.select([@rd]) # this seems needed on FreeBSD 9.0
     assert_equal "h", @rd.kgio_tryread(1)
     assert_equal "i", @rd.kgio_tryread(1)
   end
diff --git a/test/test_tcp_connect.rb b/test/test_tcp_connect.rb
index 2dbe541..2cf1b86 100644
--- a/test/test_tcp_connect.rb
+++ b/test/test_tcp_connect.rb
@@ -78,6 +78,7 @@ class TestKgioTcpConnect < Test::Unit::TestCase
   def test_wait_writable_set
     sock = SubSocket.new(@addr)
     assert_equal "waited", sock.foo if RUBY_PLATFORM =~ /linux/
+    IO.select(nil, [sock]) if RUBY_PLATFORM !~ /linux/
     assert_equal nil, sock.kgio_write("HELLO")
   end
 end