Author: toad
Date: 2008-11-18 14:43:34 +0000 (Tue, 18 Nov 2008)
New Revision: 23731

Modified:
   trunk/freenet/src/freenet/support/io/TempBucketFactory.java
   trunk/freenet/test/freenet/support/io/TempBucketTest.java
Log:
Unit test for bug fix


Modified: trunk/freenet/src/freenet/support/io/TempBucketFactory.java
===================================================================
--- trunk/freenet/src/freenet/support/io/TempBucketFactory.java 2008-11-18 
14:33:50 UTC (rev 23730)
+++ trunk/freenet/src/freenet/support/io/TempBucketFactory.java 2008-11-18 
14:43:34 UTC (rev 23731)
@@ -101,7 +101,7 @@
                }
                
                /** A blocking method to force-migrate from a RAMBucket to a 
FileBucket */
-               private final void migrateToFileBucket() throws IOException {
+               public final void migrateToFileBucket() throws IOException {
                        Bucket toMigrate = null;
                        synchronized(this) {
                                if(!isRAMBucket() || hasBeenFreed)

Modified: trunk/freenet/test/freenet/support/io/TempBucketTest.java
===================================================================
--- trunk/freenet/test/freenet/support/io/TempBucketTest.java   2008-11-18 
14:33:50 UTC (rev 23730)
+++ trunk/freenet/test/freenet/support/io/TempBucketTest.java   2008-11-18 
14:43:34 UTC (rev 23731)
@@ -4,6 +4,7 @@
 package freenet.support.io;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.Random;
 
@@ -101,6 +102,24 @@
                                b.free();
                        }
                }
+               
+               // This CAN happen due to memory pressure.
+               public void testConversionWhileReading() throws IOException {
+                       TempBucketFactory tbf = new TempBucketFactory(exec, fg, 
1024, 65536, strongPRNG, weakPRNG, false);
+                       
+                       TempBucket bucket = (TempBucket) tbf.makeBucket(64);
+                       OutputStream os = bucket.getOutputStream();
+                       os.write(new byte[16]);
+                       InputStream is = bucket.getInputStream();
+                       bucket.migrateToFileBucket();
+                       byte[] readTo = new byte[16];
+                       assertTrue(is.read(readTo, 0, 16) == 16);
+                       for(int i=0;i<readTo.length;i++)
+                               assertTrue(readTo[i] == 0);
+                       is.close();
+                       os.close();
+               }
+               
        }
 
        public static class RealTempBucketTest_ extends BucketTestBase {

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to