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
>>
>> regisxu@apache.org 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()
>>> */
>>>
>>>
>>>
>>
>
>
|