From fadd95ae494109bff579938ce899cdc98f8c9ad9 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Wed, 21 Sep 2011 15:56:50 +0100
Subject: [PATCH] Added a test for MAX_PACKET_LENGTH.

---
 test/build.xml                                |  1 +
 .../transport/ConnectionWriterImplTest.java   |  2 +-
 .../briar/transport/ConnectionWriterTest.java | 49 +++++++++++++++++++
 .../transport/PaddedConnectionWriterTest.java |  2 +-
 4 files changed, 52 insertions(+), 2 deletions(-)
 create mode 100644 test/net/sf/briar/transport/ConnectionWriterTest.java

diff --git a/test/build.xml b/test/build.xml
index c30d880148..793c9d63a3 100644
--- a/test/build.xml
+++ b/test/build.xml
@@ -41,6 +41,7 @@
 			<test name='net.sf.briar.transport.ConnectionRecogniserImplTest'/>
 			<test name='net.sf.briar.transport.ConnectionWindowImplTest'/>
 			<test name='net.sf.briar.transport.ConnectionWriterImplTest'/>
+			<test name='net.sf.briar.transport.ConnectionWriterTest'/>
 			<test name='net.sf.briar.transport.FrameReadWriteTest'/>
 			<test name='net.sf.briar.transport.PaddedConnectionWriterTest'/>
 			<test name='net.sf.briar.util.ByteUtilsTest'/>
diff --git a/test/net/sf/briar/transport/ConnectionWriterImplTest.java b/test/net/sf/briar/transport/ConnectionWriterImplTest.java
index 56528e9e24..9d7794a797 100644
--- a/test/net/sf/briar/transport/ConnectionWriterImplTest.java
+++ b/test/net/sf/briar/transport/ConnectionWriterImplTest.java
@@ -103,7 +103,7 @@ public class ConnectionWriterImplTest extends TransportTest {
 
 	@Test
 	public void testGetCapacity() throws Exception {
-		int overheadPerFrame = 4 + mac.getMacLength();
+		int overheadPerFrame = headerLength + macLength;
 		ByteArrayOutputStream out = new ByteArrayOutputStream();
 		ConnectionEncrypter e = new NullConnectionEncrypter(out);
 		ConnectionWriterImpl w = new ConnectionWriterImpl(e, mac);
diff --git a/test/net/sf/briar/transport/ConnectionWriterTest.java b/test/net/sf/briar/transport/ConnectionWriterTest.java
new file mode 100644
index 0000000000..aa1487edae
--- /dev/null
+++ b/test/net/sf/briar/transport/ConnectionWriterTest.java
@@ -0,0 +1,49 @@
+package net.sf.briar.transport;
+
+import java.io.ByteArrayOutputStream;
+
+import junit.framework.TestCase;
+import net.sf.briar.api.protocol.ProtocolConstants;
+import net.sf.briar.api.transport.ConnectionWriter;
+import net.sf.briar.api.transport.ConnectionWriterFactory;
+import net.sf.briar.api.transport.TransportConstants;
+import net.sf.briar.crypto.CryptoModule;
+
+import org.junit.Test;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+public class ConnectionWriterTest extends TestCase {
+
+	private final ConnectionWriterFactory connectionWriterFactory;
+	private final byte[] secret = new byte[100];
+	private final int transportId = 999;
+	private final long connection = 1234L;
+
+	public ConnectionWriterTest() throws Exception {
+		super();
+		Injector i = Guice.createInjector(new CryptoModule(),
+				new TransportModule());
+		connectionWriterFactory = i.getInstance(ConnectionWriterFactory.class);
+	}
+
+	@Test
+	public void testOverhead() throws Exception {
+		ByteArrayOutputStream out = new ByteArrayOutputStream(
+				TransportConstants.MIN_CONNECTION_LENGTH);
+		ConnectionWriter w = connectionWriterFactory.createConnectionWriter(out,
+				true, transportId, connection, secret);
+		// Check that the connection writer thinks there's room for a packet
+		long capacity = w.getCapacity(TransportConstants.MIN_CONNECTION_LENGTH);
+		assertTrue(capacity >= ProtocolConstants.MAX_PACKET_LENGTH);
+		assertTrue(capacity <= TransportConstants.MIN_CONNECTION_LENGTH);
+		// Check that there really is room for a packet
+		byte[] payload = new byte[ProtocolConstants.MAX_PACKET_LENGTH];
+		w.getOutputStream().write(payload);
+		w.getOutputStream().flush();
+		long used = out.size();
+		assertTrue(used >= ProtocolConstants.MAX_PACKET_LENGTH);
+		assertTrue(used <= TransportConstants.MIN_CONNECTION_LENGTH);
+	}
+}
diff --git a/test/net/sf/briar/transport/PaddedConnectionWriterTest.java b/test/net/sf/briar/transport/PaddedConnectionWriterTest.java
index 8cdbb78f4d..90efc10499 100644
--- a/test/net/sf/briar/transport/PaddedConnectionWriterTest.java
+++ b/test/net/sf/briar/transport/PaddedConnectionWriterTest.java
@@ -163,7 +163,7 @@ public class PaddedConnectionWriterTest extends TransportTest {
 
 	@Test
 	public void testGetCapacity() throws Exception {
-		int overheadPerFrame = 4 + mac.getMacLength();
+		int overheadPerFrame = headerLength + macLength;
 		ByteArrayOutputStream out = new ByteArrayOutputStream();
 		ConnectionEncrypter e = new NullConnectionEncrypter(out);
 		PaddedConnectionWriter w = new PaddedConnectionWriter(e, mac);
-- 
GitLab