RI has the different behaviors on Linux and Windows in this test case, and Harmony has the exactly the same behaviors, so I think our implementation is OK.

And there are some other similar cases in SocketTest, which failed on Linux but passed on Windows, I think it's why it is in exclude.linux.x86.drl. If we fixed them, SocketTest could be moved from exclude list.


Tim Ellison wrote:
Is this necessary? I thought it was already fixed during M9 close down?

I object to having platform specific Java code like this.  We push these
behavior differences into the native code.

Regards,
Tim

[email protected] wrote:
Author: regisxu
Date: Fri Apr 17 02:36:00 2009
New Revision: 765837

URL: http://svn.apache.org/viewvc?rev=765837&view=rev
Log:
Apply fix for HARMONY-6092

Since SocketTest.test_getInputStream are failed both on RI and Harmony with the 
same behaviors, fix the test case to pass on Linux.

Modified:
    
harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketTest.java

Modified: 
harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketTest.java
URL: 
http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketTest.java?rev=765837&r1=765836&r2=765837&view=diff
==============================================================================
--- 
harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketTest.java
 (original)
+++ 
harmony/enhanced/classlib/trunk/modules/luni/src/test/api/common/org/apache/harmony/luni/tests/java/net/SocketTest.java
 Fri Apr 17 02:36:00 2009
@@ -35,6 +35,7 @@
 import java.net.SocketTimeoutException;
 import java.net.UnknownHostException;
 import java.security.Permission;
+import java.util.Locale;
import org.apache.harmony.luni.net.PlainSocketImpl; @@ -860,19 +861,55 @@ InputStream in = pingClient.getInputStream();
         in.read(new byte[42]);
-
-        // Check EOF
-        assertEquals(-1, in.read());
+        if (isUnix()) {
+            try {
+                in.read();
+                fail("Should throw SocketException");
+            } catch (SocketException e) {
+                // expected
+            }
+        } else {
+            // Check EOF
+            assertEquals(-1, in.read());
+        }
in.close(); - // No exception when reading a closed stream
-        assertEquals(-1, in.read());
+        if (isUnix()) {
+            try {
+                in.read();
+                fail("Should throw SocketException");
+            } catch (SocketException e) {
+                // expected
+            }
+            try {
+                in.read(new byte[5]);
+                fail("Should throw SocketException");
+            } catch (SocketException e) {
+                // expected
+            }
+        } else {
+            // No exception when reading a closed stream
+            assertEquals(-1, in.read());
+            assertEquals(-1, in.read(new byte[5]));
+        }
pingClient.close();
         pingServer.close();
     }
+ private boolean isUnix() {
+        String osName = System.getProperty("os.name");
+
+        // only comparing ASCII, so assume english locale
+        osName = (osName == null ? null : osName.toLowerCase(Locale.ENGLISH));
+
+        if (osName != null && osName.startsWith("windows")) { //$NON-NLS-1$
+            return false;
+        }
+        return true;
+    }
+
     /**
      * @tests java.net.Socket#getKeepAlive()
      */






--
Best Regards,
Regis.

Reply via email to