On 9/18/06, Richard Liang <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Andrew Zhang
China Software Development Lab, IBM

Reply via email to