On 9/19/06, Andrew Zhang <[EMAIL PROTECTED]> wrote:
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(); > } > }Richard, we're fooled by "derbyLog.length()". :-) That's the root of evil! Harmony uses "FindFirstFile" to get file attribute, which may not be latest information of file. MSND points out "In rare cases, file attribute information on NTFS file systems may not be current at the time you call this function." That's why the test failed against Harmony. If using "GetFileAttributeEx" instead, the test passes against Harmony. :-) But I don't think the test is theoretically stable, since the file is not opened with "sync" flag. :-) We could use RandomAccessFile("file","rwd(s)") for test. Let's file a JIRA and fix it!
Thank you very much, Andrew. I have raised a JIRA [1] for this issue. [1] https://issues.apache.org/jira/browse/HARMONY-1497
[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
-- 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]
