harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paulex Yang <paulex.y...@gmail.com>
Subject Re: [classlib][nio]the conflict of RI and spec?
Date Thu, 20 Jul 2006 06:41:31 GMT
Andrew Zhang wrote:
> On 7/19/06, Paulex Yang <paulex.yang@gmail.com> wrote:
>>
>> I tried the test, and it failed as you said with RI on my WinXP. And I
>> also tried to pass in a read/write FileChannel got from
>> RandomAccessFile, the test passes.
>
>
> Paulex, the test fails on my machine!
>
> Seems RI returns 2*length instead of length.
>
> For failure details, please refer to [1].
Oops, I meant it didn't throw exception, I didn't assert the return 
value :-[ . Anyway, the fact remains: RI has different behavior for 
readonly and readwrite channels.
>
>
>
>> I consider this is RI's bug, because
>> no way to have such different behavior in this clear test. So I think we
>> should follow spec.
>
>
>
>> I also suggest to report this to Sun JDK bug db as well, because I think
>> it is not trivial. And I don't believe Sun will at last decide, instead
>> to fix this, to modify the document as "the behavior is implementation
>> dependent if the source channel has fewer than count bytes remaining..."
>> ;-)
>
>
> Maybe it will be fixed as: "For FileChannel, the channel will be 
> resized to
> the postion+count bytes if  position+count is greater than current file
> channel size. " :) Just kidding.
>
> As our compatiblity guideline, we should comply with spec.
> But will the behaviour of RI  be considered as illogical? Personally I
> think RI's behaviour breaks spec, and is only a bit(very limited)  
> logical.
>
> Any suggestions/comments?
>
> Thanks.
>
> Jimmy, Jing Lv wrote:
>> > Hi:
>> >
>> >     I find a conflict that RI does not behave as spec says in
>> > java.nio.channels.FileChannel.transforFrom(ReadableByteChannel src,
>> >                              long position,long count).
>> >     The spec says:"...Fewer than the requested number of bytes will be
>> > transferred if the source channel has fewer than count bytes
>> > remaining..."[1]. As expected, invoking this method with a count
>> > larger than the number of bytes remaining in the ReadableByteChannel,
>> > RI should return a number of bytes exactly transfered. But in fact, RI
>> > throws an IOException. I run the test[2] on windowsXP SP2 with
>> > RI1.5.0_01 and RI1.5.0_06, and on Linux(redhat 9) with RI1.5.0_02 and
>> > RI1.5.0_06, and get the same result.
>> >     Currently Harmony behave well on this. I guess this is a bug of
>> > RI, and Harmony implementation is good. If no objection, I suggest add
>> > this test to Harmony.
>> >     Any opinions? Thanks!
>> >
>> >
>> > [1] spec of FileChannel:
>> >
>> http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/FileChannel.html 
>>
>> >
>> > [2] the test:
>> >     public void test_transferFromLReadableByteChannelJJ_overflow()
>> >             throws Exception {
>> >         String content = "test content";
>> >         int length = content.length();
>> >         File readFile = File.createTempFile("testfile1", "tmp");
>> >         File writeFile = File.createTempFile("testfile2", "tmp");
>> >         FileOutputStream fos = new FileOutputStream(readFile);
>> >         try {
>> >             fos.write(content.getBytes());
>> >         } finally {
>> >             fos.close();
>> >         }
>> >         FileChannel fc1 = new FileInputStream(readFile).getChannel();
>> >         FileChannel fc2 = new 
>> FileOutputStream(writeFile).getChannel();
>> >         try {
>> >             long result = fc2.transferFrom(fc1, 0, length * 2);
>> >             assertEquals(length, result);
>> >         } finally {
>> >             fc1.close();
>> >             fc2.close();
>> >         }
>> >     }
>> >
>>
>>
>> -- 
>> Paulex Yang
>> China Software Development Lab
>> IBM
>>
>>
>>
>> ---------------------------------------------------------------------
>> Terms of use : http://incubator.apache.org/harmony/mailing.html
>> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
>> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>>
>>
> [1]
> junit.framework.AssertionFailedError: expected:<12> but was:<24>
> at junit.framework.Assert.fail(Assert.java:47)
> at junit.framework.Assert.failNotEquals(Assert.java:282)
> at junit.framework.Assert.assertEquals(Assert.java:64)
> at junit.framework.Assert.assertEquals(Assert.java:136)
> at junit.framework.Assert.assertEquals(Assert.java:142)
> at
> com.andrew.FileChannelTest.test_transferFromLReadableByteChannelJJ_overflow2 
>
> (FileChannelTest.java:55)
> ... ...
>
>


-- 
Paulex Yang
China Software Development Lab
IBM



---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message