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.