You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Alexey Petrenko (JIRA)" <ji...@apache.org> on 2007/04/17 11:09:15 UTC
[jira] Updated: (HARMONY-2417) [classlib][nio]
java.nio.MappedByteBuffer.isLoaded() returns true while RI returns false
[ https://issues.apache.org/jira/browse/HARMONY-2417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexey Petrenko updated HARMONY-2417:
-------------------------------------
Summary: [classlib][nio] java.nio.MappedByteBuffer.isLoaded() returns true while RI returns false (was: [luni] java.nio.MappedByteBuffer.isLoaded() returns true while RI returns false)
> [classlib][nio] java.nio.MappedByteBuffer.isLoaded() returns true while RI returns false
> ----------------------------------------------------------------------------------------
>
> Key: HARMONY-2417
> URL: https://issues.apache.org/jira/browse/HARMONY-2417
> Project: Harmony
> Issue Type: Bug
> Components: Classlib
> Reporter: Artem Aliev
> Priority: Minor
>
> According to J2SE API specifications of java.nio.MappedByteBuffer class
> public final boolean isLoaded()
> Tells whether or not this buffer's content is resident in physical memory.
> A return value of true implies that it is highly likely that all of the
> data in this buffer is resident in physical memory and may therefore be
> accessed without incurring any virtual-memory page faults or I/O
> operations. A return value of false does not necessarily imply that the
> buffer's content is not resident in physical memory.
> The returned value is a hint, rather than a guarantee, because the
> underlying operating system may have paged out some of the buffer's data by
> the time that an invocation of this method returns.
> Returns:
> true if it is likely that this buffer's content is resident in physical
> memory
> When some MappedByteBuffer was created by FaileChannel.map(...) method then
> all bytes from the file are put to the buffer but
> MappedByteBuffer.isloaded() returns on Harmony different results on Windows
> and Linux.
> This method returns:
> - On Harmony: false on Windows and true - on Linux
> - On RI: always returns false (on Windows and Linux)
> Code for reproducing:
> ---------------------HT.java--------------
> import java.nio.*;
> import java.nio.channels.*;
> import java.io.*;
> import junit.framework.TestCase;
> public class HT extends TestCase {
> public void testMap() {
> File tempFile = new File("./", "tempFile.txt");
> tempFile.deleteOnExit();
> String testString = "1234567890 - Proba pera";
> try {
> FileOutputStream fos = new FileOutputStream(tempFile);
> for (int i = 0; i < testString.length(); i++) {
> fos.write(testString.charAt(i));
> }
> fos.close();
> } catch (IOException e) {
> e.printStackTrace();
> fail("Unexpected error on file initialization");
> }
> FileInputStream fis = null;
> MappedByteBuffer mappedBuf = null;
> int fileLength = 0;
> try {
> fis = new FileInputStream(tempFile);
> } catch (FileNotFoundException e) {
> e.printStackTrace();
> fail("Unexpected exception: Can't open file");
> }
> FileChannel channel = fis.getChannel();
> try {
> fileLength = (int) channel.size();
> mappedBuf = channel.map(FileChannel.MapMode.READ_ONLY, 0,
> fileLength);
> } catch (IOException e) {
> e.printStackTrace();
> fail("Unexpected exception: "+e );
> }
> System.out.println("File length: "+fileLength+" Buf capacity:
> "+mappedBuf.capacity());
> if (fileLength != mappedBuf.capacity()) {
> fail("Incorrect capacity");
> }
> for (int i = 0; i < fileLength; i++) {
> int c1 = mappedBuf.get();
> int c2 = (int)testString.charAt(i);
> if (c1 != c2) {
> System.out.println("Incorrect char ("+i+") : "+c1 +" must be:
> "+c2);
> return;
> }
> }
> System.out.println("File and Buffer contain the same chars");
> System.out.println("isLoaded(): "+mappedBuf.isLoaded());
> }
> }
> ---------------------------------------
> Steps to Reproduce:
> Create HT class and run it
> java -cp .:junit.jar junit.textui.TestRunner HT
> Output:
> - On Linux (RI)
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
> BEA WebLogic JRockit(R) (build dra-38972-20041208-2001-linux-ia32, R25.0.0-75,
> GC: System optimized over throughput (initial strategy singleparpar))
> .File length: 23 Buf capacity: 23
> File and Buffer contain the same chars
> isLoaded(): false
> Time: 0.037
> OK (1 test)
> - On Linux (Harmony)
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
> Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = rsvn: '.' is not a working copy, (Sep 26 2006), Linux/ia32/gcc 3.3.3,
> release build
> http://incubator.apache.org/harmony
> .File length: 23 Buf capacity: 23
> File and Buffer contain the same chars
> isLoaded(): true
> F
> Time: 0.029
> There was 1 failure:
> 1) testMap(HT)junit.framework.AssertionFailedError: isLoaded()
> at HT.testMap(HT.java:60)
> at java.lang.reflect.VMReflection.invokeMethod(Native Method)
> FAILURES!!!
> Tests run: 1, Failures: 1, Errors: 0
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
> Foundation or its licensors, as applicable.
> .File length: 23 Buf capacity: 23
> File and Buffer contain the same chars
> isLoaded(): true
> F
> Time: 0.015
> There was 1 failure:
> 1) testMap(HT)junit.framework.AssertionFailedError: isLoaded()
> at HT.testMap(HT.java:60)
> at java.lang.reflect.AccessibleObject.invokeV(AccessibleObject.java:25)
> FAILURES!!!
> Tests run: 1, Failures: 1, Errors: 0
> - On Windows ( RI )
> java version "1.5.0_06"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)
> .File length: 23 Buf capacity: 23
> File and Buffer contain the same chars
> isLoaded(): false
> Time: 0.032
> OK (1 test)
> - On Windows (Harmony)
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
> Foundation or its l
> icensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = rsvn: '.' is not a working copy, (Sep 26 2006), Windows/ia32/msvc 1310,
> release buil
> d
> http://incubator.apache.org/harmony
> .File length: 23 Buf capacity: 23
> File and Buffer contain the same chars
> isLoaded(): false
> Time: 0.031
> OK (1 test)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.