harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Zhang" <zhanghuang...@gmail.com>
Subject Re: [classlib][io][nio] Sync issue of java.io.FileOutputStream and java.nio.channels.FileChannel
Date Mon, 18 Sep 2006 10:21:23 GMT
On 9/18/06, Richard Liang <richard.liangyx@gmail.com> wrote:
>
> Hello,
>
> One Apache Derby test[1] fails on Harmony. It seems that RI always
> sync the FileOutputStream and FileChannel after each "write", which is
> different from Harmony. But there is no explicit description in Java
> Spec. Shall we follow RI? Thanks a lot.
>
> The following test cases could demonstrate this issue.
>
>    public void testFile() {
>        File derbyLog = new File("d:\\", "derby1.log");
>
>        try {
>            FileOutputStream fos = new FileOutputStream(derbyLog);
>            fos.write(0x41);
>            assertEquals(1, derbyLog.length());
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>    }
>
>    public void testFileChannel() {
>        File derbyLog = new File("d:\\", "derby2.log");
>
>        try {
>            FileOutputStream fos = new FileOutputStream(derbyLog);
>            FileChannel fc = fos.getChannel();
>            fc.write(ByteBuffer.wrap(new byte[]{0x41, 0x42}));
>            assertEquals(2, derbyLog.length());
>        } catch (Exception e) {
>            e.printStackTrace();
>        }
>    }


Interesting. I think we'd better follow RI although it's implementation
dependent. Otherwise, it breaks existing application.

To make test more interesting, I wrote a similar test:


 public void testFile() throws Exception {
        File derbyLog = File.createTempFile("test", "log");
        derbyLog.deleteOnExit();
        RandomAccessFile fos = new RandomAccessFile(derbyLog, "rws");
        for (int i = 0; i < 1000; i++) {
            fos.write(0x41);
            assertEquals(1 + i, derbyLog.length());
        }

 }

Run it and you'll be surprised. :-)

[1]
> http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/logStream.java?view=co
> --
> Richard Liang
> China 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
>
>


-- 
Andrew Zhang
China Software Development Lab, IBM

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message