about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@yhbt.net>2010-09-25 08:15:13 +0000
committerEric Wong <e@yhbt.net>2010-09-25 08:15:13 +0000
commit0beb82437f4ab0b8422e225080b234361092315e (patch)
treeb36702eb9303531553acbd53f46856057963b330
parent460e6b025896dee64b39d194d4c1a536129654de (diff)
downloadkgio-0beb82437f4ab0b8422e225080b234361092315e.tar.gz
We need to test server <-> client interaction
more thoroughly since some systems don't implement
everything right.
-rw-r--r--test/lib_read_write.rb8
-rw-r--r--test/test_tcp_client_read_server_write.rb13
-rw-r--r--test/test_tcp_server_read_client_write.rb13
-rw-r--r--test/test_unix_client_read_server_write.rb17
-rw-r--r--test/test_unix_server_read_client_write.rb17
5 files changed, 65 insertions, 3 deletions
diff --git a/test/lib_read_write.rb b/test/lib_read_write.rb
index 7fd24d5..c4c4457 100644
--- a/test/lib_read_write.rb
+++ b/test/lib_read_write.rb
@@ -21,7 +21,7 @@ module LibReadWriteTest
 
   def test_write_closed
     @rd.close
-    assert_raises(Errno::EPIPE) { @wr.kgio_write "HI" }
+    assert_raises(Errno::EPIPE) { loop { @wr.kgio_write "HI" } }
   end
 
   def test_write_conv
@@ -86,7 +86,7 @@ module LibReadWriteTest
       foo = @rd.kgio_read(5)
       elapsed = Time.now - t0
     end
-    assert elapsed >= 1.0
+    assert elapsed >= 1.0, "elapsed: #{elapsed}"
     assert_equal "HELLO", foo
     thr.join
     assert_equal 5, thr.value
@@ -113,7 +113,9 @@ module LibReadWriteTest
       elapsed = Time.now - t0
     end
     assert_nil foo
-    assert elapsed >= 1.0
+    if @wr.stat.pipe?
+      assert elapsed >= 1.0, "elapsed: #{elapsed}"
+    end
     assert(String === foo || foo == nil)
     assert_kind_of String, thr.value
   end
diff --git a/test/test_tcp_client_read_server_write.rb b/test/test_tcp_client_read_server_write.rb
new file mode 100644
index 0000000..13714e9
--- /dev/null
+++ b/test/test_tcp_client_read_server_write.rb
@@ -0,0 +1,13 @@
+require './test/lib_read_write'
+
+class TesTcpClientReadServerWrite < Test::Unit::TestCase
+  def setup
+    @host = ENV["TEST_HOST"] || '127.0.0.1'
+    @srv = Kgio::TCPServer.new(@host, 0)
+    @port = @srv.addr[1]
+    @wr = Kgio::TCPSocket.new(@host, @port)
+    @rd = @srv.kgio_accept
+  end
+
+  include LibReadWriteTest
+end
diff --git a/test/test_tcp_server_read_client_write.rb b/test/test_tcp_server_read_client_write.rb
new file mode 100644
index 0000000..68cada3
--- /dev/null
+++ b/test/test_tcp_server_read_client_write.rb
@@ -0,0 +1,13 @@
+require './test/lib_read_write'
+
+class TesTcpServerReadClientWrite < Test::Unit::TestCase
+  def setup
+    @host = ENV["TEST_HOST"] || '127.0.0.1'
+    @srv = Kgio::TCPServer.new(@host, 0)
+    @port = @srv.addr[1]
+    @wr = Kgio::TCPSocket.new(@host, @port)
+    @rd = @srv.kgio_accept
+  end
+
+  include LibReadWriteTest
+end
diff --git a/test/test_unix_client_read_server_write.rb b/test/test_unix_client_read_server_write.rb
new file mode 100644
index 0000000..cf2c5f1
--- /dev/null
+++ b/test/test_unix_client_read_server_write.rb
@@ -0,0 +1,17 @@
+require './test/lib_read_write'
+require 'tempfile'
+
+class TestUnixServerReadClientWrite < Test::Unit::TestCase
+  def setup
+    tmp = Tempfile.new('kgio_unix')
+    @path = tmp.path
+    File.unlink(@path)
+    tmp.close rescue nil
+    @srv = Kgio::UNIXServer.new(@path)
+    @rd = Kgio::UNIXSocket.new(@path)
+    @wr = @srv.kgio_accept
+  end
+
+  include LibReadWriteTest
+end
+
diff --git a/test/test_unix_server_read_client_write.rb b/test/test_unix_server_read_client_write.rb
new file mode 100644
index 0000000..532989e
--- /dev/null
+++ b/test/test_unix_server_read_client_write.rb
@@ -0,0 +1,17 @@
+require './test/lib_read_write'
+require 'tempfile'
+
+class TestUnixServerReadClientWrite < Test::Unit::TestCase
+  def setup
+    tmp = Tempfile.new('kgio_unix')
+    @path = tmp.path
+    File.unlink(@path)
+    tmp.close rescue nil
+    @srv = Kgio::UNIXServer.new(@path)
+    @wr = Kgio::UNIXSocket.new(@path)
+    @rd = @srv.kgio_accept
+  end
+
+  include LibReadWriteTest
+end
+