[jboss-cvs] JBoss Messaging SVN: r3722 - in projects/jaio/trunk/jaio/java: src/org/jboss/jaio/libaioimpl and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Feb 14 17:39:38 EST 2008


Author: clebert.suconic at jboss.com
Date: 2008-02-14 17:39:38 -0500 (Thu, 14 Feb 2008)
New Revision: 3722

Modified:
   projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOController.java
   projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOPackage.java
   projects/jaio/trunk/jaio/java/src/org/jboss/jaio/libaioimpl/LibAIOController.java
   projects/jaio/trunk/jaio/java/tests/org/jboss/jaio/libaioimpl/test/TestController.java
Log:
Tweaks

Modified: projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOController.java
===================================================================
--- projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOController.java	2008-02-14 22:38:57 UTC (rev 3721)
+++ projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOController.java	2008-02-14 22:39:38 UTC (rev 3722)
@@ -25,7 +25,9 @@
     
     void recoverContent(AIORecoveryCallback callbackRecover);
     
-    /** This only flush any buffers into IO, it doesn't guarantee information on disk */
-    void flushMemory();
+    void pollEvents();
+
+    void validateLowRate();
     
+    
 }

Modified: projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOPackage.java
===================================================================
--- projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOPackage.java	2008-02-14 22:38:57 UTC (rev 3721)
+++ projects/jaio/trunk/jaio/java/src/org/jboss/jaio/api/AIOPackage.java	2008-02-14 22:39:38 UTC (rev 3722)
@@ -18,4 +18,6 @@
     void decode(int length, ByteBuffer buffer);
     
     void done();
+    
+
 }

Modified: projects/jaio/trunk/jaio/java/src/org/jboss/jaio/libaioimpl/LibAIOController.java
===================================================================
--- projects/jaio/trunk/jaio/java/src/org/jboss/jaio/libaioimpl/LibAIOController.java	2008-02-14 22:38:57 UTC (rev 3721)
+++ projects/jaio/trunk/jaio/java/src/org/jboss/jaio/libaioimpl/LibAIOController.java	2008-02-14 22:39:38 UTC (rev 3722)
@@ -13,8 +13,10 @@
  */
 public class LibAIOController implements AIOController
 {
-
-    // Warning: Beware of the C++ pointer! It will bite you! :-) 
+    
+    /**
+     *  Warning: Beware of the C++ pointer! It will bite you! :-)
+     */ 
     private long handler;
     
     static
@@ -32,11 +34,6 @@
     }
 
     
-    public void flushMemory()
-    {
-        flushMemory(handler);
-    }
-    
     public void open(String fileName)
     {
         handler = init (fileName, AIOPackage.class);
@@ -83,6 +80,16 @@
         // TODO Auto-generated method stub
         
     }
+    
+    public void pollEvents()
+    {
+        pollEvents(handler);
+    }
+    
+    public void validateLowRate()
+    {
+        validateLowRate(handler);
+    }
 
     @SuppressWarnings("unchecked")
     private static native long init(String fileName, Class aioPackageClazz);
@@ -92,7 +99,11 @@
     
     private static native void append(long handle, AIOPackage aioPackage);
 
-    private static native void flushMemory(long handle);
+    private static native void closeInternal(long handler);
     
-    private static native void closeInternal(long handler);
+    /** Poll asynchrounous events from internal queues */
+    private static native void pollEvents(long handler);
+    
+    /** Poll asynchrounous events from internal queues */
+    private static native void validateLowRate(long handler);
 }

Modified: projects/jaio/trunk/jaio/java/tests/org/jboss/jaio/libaioimpl/test/TestController.java
===================================================================
--- projects/jaio/trunk/jaio/java/tests/org/jboss/jaio/libaioimpl/test/TestController.java	2008-02-14 22:38:57 UTC (rev 3721)
+++ projects/jaio/trunk/jaio/java/tests/org/jboss/jaio/libaioimpl/test/TestController.java	2008-02-14 22:39:38 UTC (rev 3722)
@@ -2,6 +2,8 @@
 
 import java.io.File;
 import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.concurrent.CountDownLatch;
 
 import org.jboss.jaio.api.AIOPackage;
 import org.jboss.jaio.libaioimpl.LibAIOController;
@@ -11,12 +13,15 @@
 public class TestController extends TestCase
 {
     
+    byte commonBuffer[] = null; 
     
     
+    
     @Override
     protected void setUp() throws Exception
     {
         super.setUp();
+        LocalAIO.staticDone = 0;
         File file = new File("/tmp/libaio.log");
         file.delete();
     }
@@ -41,13 +46,63 @@
         assertTrue(aio.encodeSizeCalled);
         assertFalse(aio.doneCalled);
         
-        controller.flushMemory();
+        controller.pollEvents();
         
         assertTrue(aio.doneCalled);
         controller.close();
         
     }
     
+    public void testDirectDataNoPage() throws Exception
+    {
+        final int NUMBER_LINES = 2500; 
+        final int SIZE = 100*512;
+        
+        commonBuffer = new byte[SIZE];
+        for (int i=0; i< commonBuffer.length-1; i++)
+        {
+            commonBuffer[i] = (byte)('A' + (i%10));
+        }
+        commonBuffer[commonBuffer.length -1] = '\n';
+        
+        CountDownLatch latchDone = new CountDownLatch(NUMBER_LINES);
+        LibAIOController controller = new LibAIOController();
+        controller.open("/tmp/libaio.log");
+        ArrayList<LocalAIO> list = new ArrayList<LocalAIO>();
+        
+        for (int i=0; i<NUMBER_LINES; i++)
+        {
+            list.add(new LocalAIO(SIZE, commonBuffer, latchDone));
+        }
+        
+       
+        long valueInitial = System.currentTimeMillis();
+        int counterFile=0;
+        for (LocalAIO tmp: list)
+        {
+            controller.append(tmp);
+        }
+        System.out.println("Finished append " + (System.currentTimeMillis() - valueInitial) + " received = " + LocalAIO.staticDone);
+        System.out.println("Flush now");
+        controller.pollEvents();
+        latchDone.await();
+
+        long timeTotal = System.currentTimeMillis() - valueInitial;
+        System.out.println("Flushed " + timeTotal);
+        System.out.println("time = " + timeTotal + " for " + NUMBER_LINES + " registers " + " size each line = " + SIZE  + " Records/Sec=" + (NUMBER_LINES*1000/timeTotal));
+
+        for (LocalAIO tmp: list)
+        {
+            assertEquals(1, tmp.timesDoneCalled);
+            assertTrue(tmp.encodeCalled);
+            assertTrue(tmp.encodeSizeCalled);
+            assertTrue(tmp.doneCalled);
+        }
+
+        controller.close();
+        
+    }
+    
     public void testPage() throws Exception
     {
         LibAIOController controller = new LibAIOController();
@@ -55,7 +110,7 @@
         LocalAIO aio = new LocalAIO(500);
         
         controller.append(aio);
-        controller.flushMemory();
+        controller.pollEvents();
         assertTrue(aio.doneCalled);
         assertEquals(1, aio.timesDoneCalled);
         controller.close();
@@ -65,21 +120,31 @@
     private static class LocalAIO implements AIOPackage
     {
 
-        int times = 1;
-        public LocalAIO(int times)
+        CountDownLatch latch;
+        int size = 1;
+        byte[] buffer = null;
+        public LocalAIO()
         {
-            this.times = times;
+            this(10);
         }
         
-        public LocalAIO()
+        public LocalAIO(int size)
         {
-            this.times = 1;
+            this.size = size;
         }
         
+        public LocalAIO(int size, byte[] buffer, CountDownLatch latch)
+        {
+            this(size);
+            this.latch = latch;
+            this.buffer = buffer;
+        }
+        
         boolean encodeCalled = false;
         boolean encodeSizeCalled = false;
         boolean doneCalled = false;
         int timesDoneCalled = 0;
+        static int staticDone = 0;
         public void decode(int length, ByteBuffer buffer)
         {
             // TODO Auto-generated method stub
@@ -88,36 +153,37 @@
 
         public void done()
         {
-//            System.out.println("Done called");
+            if (latch != null)
+            {
+                latch.countDown();
+            }
             doneCalled = true;
             timesDoneCalled++;
+            staticDone++;
             
         }
 
         public void encode(ByteBuffer buffer)
         {
             encodeCalled = true;
-            for (int i=0; i<times; i++)
+            if (this.buffer!=null)
             {
-                buffer.put((byte)'A');
-                buffer.put((byte)'B');
-                buffer.put((byte)'C');
-                buffer.put((byte)'D');
-                buffer.put((byte)'E');
-                buffer.put((byte)'F');
-                buffer.put((byte)'G');
-                buffer.put((byte)'H');
-                buffer.put((byte)'I');
+                buffer.put(this.buffer);
+            }
+            else
+            {
+                for (int i=0; i<size-1; i++)
+                {
+                    buffer.put((byte)('A' + (i%10)));
+                }
                 buffer.put((byte)'\n');
             }
         }
 
         public int encodeSize()
         {
-            System.out.println("Size called");
-            System.out.flush();
             encodeSizeCalled = true;
-            return 10 * times;
+            return size;
         }
         
     }




More information about the jboss-cvs-commits mailing list