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