From c558f5af8576cabcea0bf3d9b00e6f8e8c7d9c84 Mon Sep 17 00:00:00 2001 From: zab <zab@mail.i2p> Date: Sat, 5 Jan 2013 23:08:00 +0000 Subject: [PATCH] Update FragmentTest to expect an IAE. Update {Batched}FragmentTest to JUnit 4 Use a single instance of I2PAppContext --- .../router/tunnel/BatchedFragmentTest.java | 60 ++++++++++++++++++- .../net/i2p/router/tunnel/FragmentTest.java | 55 +++++++++-------- 2 files changed, 89 insertions(+), 26 deletions(-) diff --git a/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java b/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java index 7c9ee5cb68..7289105ad2 100644 --- a/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java +++ b/router/java/test/junit/net/i2p/router/tunnel/BatchedFragmentTest.java @@ -10,7 +10,10 @@ package net.i2p.router.tunnel; import java.util.ArrayList; -import net.i2p.I2PAppContext; +import static junit.framework.Assert.assertTrue; +import org.junit.Before; +import org.junit.Test; + import net.i2p.router.RouterContext; /** @@ -20,8 +23,8 @@ import net.i2p.router.RouterContext; */ public class BatchedFragmentTest extends FragmentTest { + @Before public void setUp() { - super.setUp(); BatchedPreprocessor.DEFAULT_DELAY = 200; } @@ -35,6 +38,7 @@ public class BatchedFragmentTest extends FragmentTest { * after a brief delay. * */ + @Test public void testBatched() { PendingGatewayMessage pending1 = createPending(10, false, false); ArrayList messages = new ArrayList(); @@ -66,6 +70,58 @@ public class BatchedFragmentTest extends FragmentTest { assertTrue(handleReceiver.receivedOk()); } + /** + * Send a message that fits inside a single fragment through + * + */ + @Test + public void testSingle() { + PendingGatewayMessage pending = createPending(949, false, false); + ArrayList messages = new ArrayList(); + messages.add(pending); + + TunnelGateway.QueuePreprocessor pre = createPreprocessor(_context); + SenderImpl sender = new SenderImpl(); + DefragmentedReceiverImpl handleReceiver = new DefragmentedReceiverImpl(pending.getData()); + FragmentHandler handler = new FragmentHandler(_context, handleReceiver); + ReceiverImpl receiver = new ReceiverImpl(handler, 0); + byte msg[] = pending.getData(); + + boolean keepGoing = true; + while (keepGoing) { + keepGoing = pre.preprocessQueue(messages, new SenderImpl(), receiver); + if (keepGoing) + try { Thread.sleep(100); } catch (InterruptedException ie) {} + } + assertTrue(handleReceiver.receivedOk()); + } + + /** + * Send a message with two fragments through with no delay + * + */ + @Test + public void testMultiple() throws Exception { + PendingGatewayMessage pending = createPending(2048, false, false); + ArrayList messages = new ArrayList(); + messages.add(pending); + + TunnelGateway.QueuePreprocessor pre = createPreprocessor(_context); + SenderImpl sender = new SenderImpl(); + DefragmentedReceiverImpl handleReceiver = new DefragmentedReceiverImpl(pending.getData()); + FragmentHandler handler = new FragmentHandler(_context, handleReceiver); + ReceiverImpl receiver = new ReceiverImpl(handler, 0); + byte msg[] = pending.getData(); + + boolean keepGoing = true; + while (keepGoing) { + keepGoing = pre.preprocessQueue(messages, new SenderImpl(), receiver); + if (keepGoing) + try { Thread.sleep(100); } catch (InterruptedException ie) {} + } + assertTrue(handleReceiver.receivedOk()); + } + /** * Send a small message, wait a second, then send a large message, pushing diff --git a/router/java/test/junit/net/i2p/router/tunnel/FragmentTest.java b/router/java/test/junit/net/i2p/router/tunnel/FragmentTest.java index 6822e358af..f2261517bb 100644 --- a/router/java/test/junit/net/i2p/router/tunnel/FragmentTest.java +++ b/router/java/test/junit/net/i2p/router/tunnel/FragmentTest.java @@ -10,7 +10,12 @@ package net.i2p.router.tunnel; import java.util.ArrayList; -import junit.framework.TestCase; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static junit.framework.TestCase.*; + import net.i2p.data.DataHelper; import net.i2p.data.Hash; import net.i2p.data.TunnelId; @@ -23,11 +28,17 @@ import net.i2p.router.RouterContext; * FragmentHandler, and FragmentedMessage operation. * */ -public class FragmentTest extends TestCase{ - protected RouterContext _context; +public class FragmentTest { + + protected static RouterContext _context; - public void setUp() { + @BeforeClass + public static void globalSetUp() { _context = new RouterContext(null); + } + + @Before + public void set() { _context.random().nextBoolean(); FragmentHandler.MAX_DEFRAGMENT_TIME = 10*1000; } @@ -40,6 +51,7 @@ public class FragmentTest extends TestCase{ * Send a message that fits inside a single fragment through * */ + @Test public void testSingle() { PendingGatewayMessage pending = createPending(949, false, false); ArrayList messages = new ArrayList(); @@ -51,21 +63,19 @@ public class FragmentTest extends TestCase{ FragmentHandler handler = new FragmentHandler(_context, handleReceiver); ReceiverImpl receiver = new ReceiverImpl(handler, 0); byte msg[] = pending.getData(); - - boolean keepGoing = true; - while (keepGoing) { - keepGoing = pre.preprocessQueue(messages, new SenderImpl(), receiver); - if (keepGoing) - try { Thread.sleep(100); } catch (InterruptedException ie) {} - } - assertTrue(handleReceiver.receivedOk()); + + try { + pre.preprocessQueue(messages, new SenderImpl(), receiver); + fail("should have thrown IAE"); + } catch (IllegalArgumentException expected){} } /** * Send a message with two fragments through with no delay * */ - public void testMultiple() { + @Test + public void testMultiple() throws Exception { PendingGatewayMessage pending = createPending(2048, false, false); ArrayList messages = new ArrayList(); messages.add(pending); @@ -77,13 +87,10 @@ public class FragmentTest extends TestCase{ ReceiverImpl receiver = new ReceiverImpl(handler, 0); byte msg[] = pending.getData(); - boolean keepGoing = true; - while (keepGoing) { - keepGoing = pre.preprocessQueue(messages, new SenderImpl(), receiver); - if (keepGoing) - try { Thread.sleep(100); } catch (InterruptedException ie) {} - } - assertTrue(handleReceiver.receivedOk()); + try { + pre.preprocessQueue(messages, new SenderImpl(), receiver); + fail("should have thrown IAE"); + } catch (IllegalArgumentException expected){} } /** @@ -183,10 +190,10 @@ public class FragmentTest extends TestCase{ } protected class DefragmentedReceiverImpl implements FragmentHandler.DefragmentedReceiver { - private byte _expected[]; - private byte _expected2[]; - private byte _expected3[]; - private int _received; + private volatile byte _expected[]; + private volatile byte _expected2[]; + private volatile byte _expected3[]; + private volatile int _received; public DefragmentedReceiverImpl(byte expected[]) { this(expected, null); } -- GitLab