Regis wrote: > 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.
It wasn't the fact that there is a difference that I object to here, but the way you have achieved it does not fit in the Harmony architecture. These types of differences are pushed into the native code. I believe that this should be done here too. Regards, Tim > 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() >>> */ >>> >>> >>> >> > >
