You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2011/05/30 22:59:38 UTC

svn commit: r1129364 - in /incubator/jena/Experimental/TxTDB/trunk: src-dev/tx/ src/main/java/com/hp/hpl/jena/tdb/base/file/ src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ src/test/java/com/hp/hpl/jena/tdb/base/objectfile/

Author: andy
Date: Mon May 30 20:59:37 2011
New Revision: 1129364

URL: http://svn.apache.org/viewvc?rev=1129364&view=rev
Log: (empty)

Added:
    incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileBuffering.java   (contents, props changed)
      - copied, changed from r1128951, incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDiskBuffering.java
Removed:
    incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDiskBuffering.java
Modified:
    incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
    incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestObjectFileTransDisk.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java
    incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java
    incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TS_ObjectFile.java
    incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDisk.java

Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java?rev=1129364&r1=1129363&r2=1129364&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/DevTx.java Mon May 30 20:59:37 2011
@@ -3,8 +3,11 @@ package tx;
 
 public class DevTx
 {
-    // TestObjectFileTrans
-    // More TestObjectFile tests - write - flush, write some more.
+    // TestObjectFileTrans -- more tests.
+    // TestObjectFileBuffering --> make abstract
+    
+    
+    //    More TestObjectFile tests - write - flush, write some more.
     
     // One transaction dataset - reuse.  Pool?
     //   Create the one transaction dadaset when the datasetgraph itself is created

Modified: incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestObjectFileTransDisk.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestObjectFileTransDisk.java?rev=1129364&r1=1129363&r2=1129364&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestObjectFileTransDisk.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src-dev/tx/TestObjectFileTransDisk.java Mon May 30 20:59:37 2011
@@ -9,9 +9,11 @@ package tx;
 import org.openjena.atlas.lib.FileOps ;
 
 import com.hp.hpl.jena.tdb.ConfigTest ;
-import com.hp.hpl.jena.tdb.base.file.FileFactory ;
+import com.hp.hpl.jena.tdb.base.file.BufferChannel ;
+import com.hp.hpl.jena.tdb.base.file.BufferChannelFile ;
 import com.hp.hpl.jena.tdb.base.file.Location ;
 import com.hp.hpl.jena.tdb.base.objectfile.ObjectFile ;
+import com.hp.hpl.jena.tdb.base.objectfile.ObjectFileStorage ;
 
 public class TestObjectFileTransDisk extends AbstractTestObjectFileTrans
 {
@@ -21,8 +23,9 @@ public class TestObjectFileTransDisk ext
         String dir = ConfigTest.getTestingDir() ;
         Location loc = new Location(dir) ;
         String fn = loc.getPath(basename) ;
-        FileOps.delete(fn) ;
-        return FileFactory.createObjectFileDisk(fn) ;
+        FileOps.deleteSilent(fn) ;
+        BufferChannel chan = new BufferChannelFile(fn) ;
+        return new ObjectFileStorage(chan) ;
     }
 
 

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java?rev=1129364&r1=1129363&r2=1129364&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/file/BufferChannelMem.java Mon May 30 20:59:37 2011
@@ -18,6 +18,12 @@ public class BufferChannelMem implements
     private static int INIT_SIZE = 1024 ;
     private static int INC_SIZE = 1024 ;
     
+    
+    public BufferChannelMem()
+    {
+        this("unnamed") ;
+    }
+    
     public BufferChannelMem(String name)
     {
         bytes = ByteBuffer.allocate(1024) ;
@@ -63,8 +69,8 @@ public class BufferChannelMem implements
     public int read(ByteBuffer buffer, long loc)
     {
         checkIfClosed() ;
-        if ( loc < 0 || loc >= buffer.limit() )
-            throw new StorageException("Out of range: "+loc) ;
+        if ( loc < 0 || loc >= bytes.limit() )
+            throw new StorageException("Out of range: "+loc+" [0,"+buffer.limit()+")") ;
         int x = buffer.position() ;
         bytes.position((int)loc) ;
         int len = read(buffer) ;

Modified: incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java?rev=1129364&r1=1129363&r2=1129364&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/main/java/com/hp/hpl/jena/tdb/base/objectfile/ObjectFileStorage.java Mon May 30 20:59:37 2011
@@ -13,7 +13,6 @@ import java.nio.ByteBuffer ;
 import java.util.Iterator ;
 
 import org.openjena.atlas.iterator.Iter ;
-import org.openjena.atlas.lib.Bytes ;
 import org.openjena.atlas.lib.Pair ;
 import org.openjena.atlas.logging.Log ;
 import tx.IteratorSlotted ;
@@ -47,7 +46,6 @@ public class ObjectFileStorage implement
     
     // Delayed write buffer.
     private final ByteBuffer writeBuffer ;
-    private int bufferSize ;
     
     private final BufferChannel file ;              // Access to storage
     private long filesize ;                         // Size of on-disk. 
@@ -65,9 +63,8 @@ public class ObjectFileStorage implement
     public ObjectFileStorage(BufferChannel file, int bufferSize)
     {
         this.file = file ;
-        this.bufferSize = bufferSize ;
         filesize = file.size() ;
-        writeBuffer = ByteBuffer.allocate(bufferSize) ;
+        writeBuffer = (bufferSize >= 0) ? ByteBuffer.allocate(bufferSize) : null ;
     }
     
     @Override
@@ -76,6 +73,12 @@ public class ObjectFileStorage implement
         if ( inAllocWrite )
             Log.fatal(this, "In the middle of an alloc-write") ;
         inAllocWrite = false ;
+        if ( writeBuffer == null )
+        {
+            long x = rawWrite(bb) ;
+            return x ;
+        }
+        
         int len = bb.limit() - bb.position() ;
         int spaceNeeded = len + SizeOfInt ;
         
@@ -101,10 +104,11 @@ public class ObjectFileStorage implement
         lengthBuffer.putInt(len) ;
         lengthBuffer.flip() ;
         long location = file.position() ; 
-        file.write(lengthBuffer, location) ;
-        long loc2 = location+SizeOfInt ;
-        int x = file.write(bb, loc2) ;
-        filesize = filesize+x ;
+        file.write(lengthBuffer) ;
+        int x = file.write(bb) ;
+        if ( x != len )
+            throw new FileException() ;
+        filesize = filesize+x+SizeOfInt ;
         return location ;
     }
     
@@ -116,13 +120,14 @@ public class ObjectFileStorage implement
         
         // Include space for length.
         int spaceRequired = bytesSpace + SizeOfInt ;
+        
         // Find space.
-        if ( spaceRequired > writeBuffer.remaining() )
+        if (  writeBuffer != null && spaceRequired > writeBuffer.remaining() )
             flushOutputBuffer() ;
         
-        if ( spaceRequired > writeBuffer.remaining() )
+        if ( writeBuffer == null || spaceRequired > writeBuffer.remaining() )
         {
-            // Too big. have flushed buffering.
+            // Too big. Have flushed buffering if buffering.
             inAllocWrite = true ;
             ByteBuffer bb = ByteBuffer.allocate(bytesSpace) ;
             allocBlock = new Block(filesize, bb) ;  
@@ -178,6 +183,7 @@ public class ObjectFileStorage implement
 
     private void flushOutputBuffer()
     {
+        if ( writeBuffer == null ) return ;
         if ( writeBuffer.position() == 0 ) return ;
         long location = filesize ;
         writeBuffer.flip();
@@ -229,7 +235,7 @@ public class ObjectFileStorage implement
         }
         
         // No - it's in the underlying file storage.
-        lengthBuffer.position(0) ;
+        lengthBuffer.clear() ;
         int x = file.read(lengthBuffer, loc) ;
         if ( x != 4 )
             throw new FileException("ObjectFile.read: Failed to read the length : got "+x+" bytes") ;
@@ -245,6 +251,7 @@ public class ObjectFileStorage implement
     @Override
     public long length()
     {
+        if ( writeBuffer == null ) return filesize ; 
         return filesize+writeBuffer.position() ;
     }
 
@@ -262,7 +269,7 @@ public class ObjectFileStorage implement
         ObjectIterator iter = new ObjectIterator(0, filesize) ;
         //return iter ;
         
-        if ( writeBuffer.position() == 0 ) return iter ;
+        if ( writeBuffer == null || writeBuffer.position() == 0 ) return iter ;
         return Iter.concat(iter, new BufferIterator(writeBuffer)) ;
     }
     
@@ -334,32 +341,6 @@ public class ObjectFileStorage implement
         public void remove()
         { throw new UnsupportedOperationException() ; }
     }
-    
-    // ---- Dump
-    public void dump() { dump(handler) ; }
-
-    public interface DumpHandler { void handle(long fileIdx, String str) ; }  
-    
-    public void dump(DumpHandler handler)
-    {
-        file.position(0) ; 
-        long fileIdx = 0 ;
-        while ( fileIdx < filesize )
-        {
-            ByteBuffer bb = read(fileIdx) ;
-            String str = Bytes.fromByteBuffer(bb) ;
-            handler.handle(fileIdx, str) ;
-            fileIdx = fileIdx + bb.limit() + 4 ;
-        }
-    }
-    
-    static DumpHandler handler = new DumpHandler() {
-        @Override
-        public void handle(long fileIdx, String str)
-        {
-            System.out.printf("0x%08X : %s\n", fileIdx, str) ;
-        }
-    } ;
 }
 
 /*

Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TS_ObjectFile.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TS_ObjectFile.java?rev=1129364&r1=1129363&r2=1129364&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TS_ObjectFile.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TS_ObjectFile.java Mon May 30 20:59:37 2011
@@ -13,7 +13,7 @@ import org.junit.runners.Suite ;
 @Suite.SuiteClasses( {
     TestObjectFileMem.class
     , TestObjectFileDisk.class
-    , TestObjectFileDiskBuffering.class
+    , TestObjectFileBuffering.class
     , TestStringFileMem.class 
     , TestStringFileDisk.class 
 })

Copied: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileBuffering.java (from r1128951, incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDiskBuffering.java)
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileBuffering.java?p2=incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileBuffering.java&p1=incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDiskBuffering.java&r1=1128951&r2=1129364&rev=1129364&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDiskBuffering.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileBuffering.java Mon May 30 20:59:37 2011
@@ -6,31 +6,23 @@
 
 package com.hp.hpl.jena.tdb.base.objectfile;
 
+import static com.hp.hpl.jena.tdb.base.BufferTestLib.sameValue ;
+import static com.hp.hpl.jena.tdb.base.objectfile.AbstractTestObjectFile.fill ;
+
 import java.nio.ByteBuffer ;
 
-import org.junit.AfterClass ;
 import org.junit.Test ;
 import org.openjena.atlas.junit.BaseTest ;
-import org.openjena.atlas.lib.FileOps ;
 
-import com.hp.hpl.jena.tdb.ConfigTest ;
 import com.hp.hpl.jena.tdb.base.block.Block ;
 import com.hp.hpl.jena.tdb.base.file.BufferChannel ;
-import com.hp.hpl.jena.tdb.base.file.BufferChannelFile ;
-
-import static com.hp.hpl.jena.tdb.base.BufferTestLib.* ;
-import static com.hp.hpl.jena.tdb.base.objectfile.AbstractTestObjectFile.fill ;
+import com.hp.hpl.jena.tdb.base.file.BufferChannelMem ;
 
-public class TestObjectFileDiskBuffering extends BaseTest
+public class TestObjectFileBuffering extends BaseTest
 {
-    static String filename = ConfigTest.getTestingDir()+"/test-objectfile" ;
-
-    @AfterClass public static void cleanup() { FileOps.deleteSilent(filename) ; } 
-    
     protected ObjectFile make(int bufferSize)
     {
-        FileOps.deleteSilent(filename) ;
-        BufferChannel chan = new BufferChannelFile(filename) ;
+        BufferChannel chan = new BufferChannelMem() ;
         return new ObjectFileStorage(chan, bufferSize) ;
     }
 
@@ -90,6 +82,10 @@ public class TestObjectFileDiskBuffering
     @Test public void objectfile_57()       { writePrealloc(12, 6, 10) ; }
     @Test public void objectfile_58()       { write(20, 6, 10, 5) ; }
     @Test public void objectfile_59()       { writePrealloc(20, 6, 10, 5) ; }
+
+    @Test public void objectfile_60()       { write(20, 4, 4, 8) ; }
+    @Test public void objectfile_61()       { writePrealloc(20, 4, 4, 8) ; }
+
 }
 
 /*

Propchange: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileBuffering.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDisk.java
URL: http://svn.apache.org/viewvc/incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDisk.java?rev=1129364&r1=1129363&r2=1129364&view=diff
==============================================================================
--- incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDisk.java (original)
+++ incubator/jena/Experimental/TxTDB/trunk/src/test/java/com/hp/hpl/jena/tdb/base/objectfile/TestObjectFileDisk.java Mon May 30 20:59:37 2011
@@ -24,7 +24,8 @@ public class TestObjectFileDisk extends 
     {
         FileOps.deleteSilent(filename) ;
         BufferChannel chan = new BufferChannelFile(filename) ;
-        return new ObjectFileStorage(chan) ;
+        // No buffering.
+        return new ObjectFileStorage(chan, -1) ;
     }
 }