On Sat, Nov 8, 2008 at 9:40 PM, Matthew Toseland
<toad at amphibian.dyndns.org> wrote:
> On Friday 07 November 2008 13:53, j16sdiz at freenetproject.org wrote:
>> Author: j16sdiz
>> Date: 2008-11-07 13:53:18 +0000 (Fri, 07 Nov 2008)
>> New Revision: 23373
>>
>> Added:
>> trunk/freenet/test/freenet/support/io/TempBucketTest.java
>> Modified:
>> trunk/freenet/src/freenet/support/io/TempBucketFactory.java
>> trunk/freenet/test/freenet/support/io/BucketTestBase.java
>> Log:
>> junit for TempBucketFactory
>>
>> Modified: trunk/freenet/src/freenet/support/io/TempBucketFactory.java
>> ===================================================================
>> --- trunk/freenet/src/freenet/support/io/TempBucketFactory.java
>> 2008-11-07
> 03:43:25 UTC (rev 23372)
>> +++ trunk/freenet/src/freenet/support/io/TempBucketFactory.java
>> 2008-11-07
> 13:53:18 UTC (rev 23373)
>> @@ -58,7 +58,7 @@
>> /** How old is a long-lived RAMBucket? */
>> private final int RAMBUCKET_MAX_AGE = 5*60*1000; // 5mins
>> /** How many times the maxRAMBucketSize can a RAMBucket be before it
>> gets
> migrated? */
>> - private final int RAMBUCKET_CONVERSION_FACTOR = 4;
>> + final static int RAMBUCKET_CONVERSION_FACTOR = 4;
>>
>> public class TempBucket implements Bucket {
>> /** The underlying bucket itself */
>>
>> Modified: trunk/freenet/test/freenet/support/io/BucketTestBase.java
>> ===================================================================
>> --- trunk/freenet/test/freenet/support/io/BucketTestBase.java 2008-11-07
> 03:43:25 UTC (rev 23372)
>> +++ trunk/freenet/test/freenet/support/io/BucketTestBase.java 2008-11-07
> 13:53:18 UTC (rev 23373)
>> @@ -24,6 +24,9 @@
>> Bucket bucket = makeBucket(3);
>> try {
>> assertEquals("Size-0", 0, bucket.size());
>> + OutputStream os = bucket.getOutputStream();
>> + os.close();
>> +
>> // Read byte[]
>> InputStream is = bucket.getInputStream();
>> byte[] data = new byte[10];
>> @@ -100,9 +103,14 @@
>> freeBucket(bucket);
>> }
>> }
>> +
>> + protected boolean canOverwrite = true;
>>
>> // Write twice -- should overwrite, not append
>> public void testReuse() throws IOException {
>> + if (!canOverwrite)
>> + return;
>> +
>> Bucket bucket = makeBucket(Math.max(DATA1.length,
>> DATA2.length));
>> try {
>> // Write
>>
>> Added: trunk/freenet/test/freenet/support/io/TempBucketTest.java
>> ===================================================================
>> --- trunk/freenet/test/freenet/support/io/TempBucketTest.java
> (rev 0)
>> +++ trunk/freenet/test/freenet/support/io/TempBucketTest.java 2008-11-07
> 13:53:18 UTC (rev 23373)
>> @@ -0,0 +1,176 @@
>> +/* This code is part of Freenet. It is distributed under the GNU General
>> + * Public License, version 2 (or at your option any later version). See
>> + * http://www.gnu.org/ for further details of the GPL. */
>> +package freenet.support.io;
>> +
>> +import java.io.IOException;
>> +import java.io.OutputStream;
>> +import java.util.Random;
>> +
>> +import junit.framework.Test;
>> +import junit.framework.TestCase;
>> +import junit.framework.TestSuite;
>> +
>> +import org.spaceroots.mantissa.random.MersenneTwister;
>> +
>> +import freenet.crypt.RandomSource;
>> +import freenet.crypt.Yarrow;
>> +import freenet.support.Executor;
>> +import freenet.support.SerialExecutor;
>> +import freenet.support.api.Bucket;
>> +import freenet.support.io.TempBucketFactory.TempBucket;
>> +
>> +public class TempBucketTest extends TestSuite {
>> +
>> + public static class TempBucketMigrationTest extends TestCase {
>> + private RandomSource strongPRNG = new Yarrow();
>> + private Random weakPRNG = new MersenneTwister();
>> + private Executor exec = new
>> SerialExecutor(NativeThread.NORM_PRIORITY);
>> + private FilenameGenerator fg;
>> +
>> + public TempBucketMigrationTest() throws IOException {
>> + fg = new FilenameGenerator(weakPRNG, false, null,
>> "junit");
>> + }
>> +
>> + public void testRamLimitCreate() throws IOException {
>> + TempBucketFactory tbf = new TempBucketFactory(exec,
>> fg, 16, 128,
> strongPRNG, weakPRNG, false);
>> +
>> + int maxRamBucket = 128 / 16;
>> +
>> + // create excess maxTotalRamSize, last one should be
>> on disk
>> + TempBucket[] b = new TempBucket[maxRamBucket + 1];
>> + for (int i = 0; i < maxRamBucket + 1; i++) {
>> + b[i] = (TempBucket) tbf.makeBucket(16);
>> +
>> + OutputStream os = b[i].getOutputStream();
>> + os.write(new byte[16]);
>> + os.close();
>> + }
>> +
>> + try {
>> + assertTrue(b[0].isRAMBucket());
>> + assertFalse(b[maxRamBucket].isRAMBucket());
>> +
>> + // Free some, reused the space
>> + b[0].free();
>> + b[maxRamBucket].free();
>> +
>> + b[0] = (TempBucket) tbf.makeBucket(8);
>> + b[maxRamBucket] = (TempBucket)
>> tbf.makeBucket(8);
>> + assertTrue(b[0].isRAMBucket());
>> + assertTrue(b[maxRamBucket].isRAMBucket());
>
> Shouldn't one of these be on-disk? You had one on disk, you freed it, now you
> have none on disk?
This two are smaller (8 bytes), the previous two are larger (16)
>
>> + } finally {
>> + for (Bucket bb : b)
>> + bb.free();
>> + }
>> + }
>> +
>
> _______________________________________________
> Devl mailing list
> Devl at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
>