diff --git a/test/build.xml b/test/build.xml index 4a1e8c11572f8103610c241480692fa380cccdc2..7238b1a32c4eedb983e76e5840381062d9840068 100644 --- a/test/build.xml +++ b/test/build.xml @@ -13,8 +13,8 @@ <path refid='test-classes'/> <path refid='util-classes'/> </classpath> - <test name='net.sf.briar.FileReadWriteTest'/> <test name='net.sf.briar.LockFairnessTest'/> + <test name='net.sf.briar.ProtocolIntegrationTest'/> <test name='net.sf.briar.crypto.CounterModeTest'/> <test name='net.sf.briar.crypto.CryptoComponentTest'/> <test name='net.sf.briar.crypto.SharedSecretTest'/> diff --git a/test/net/sf/briar/FileReadWriteTest.java b/test/net/sf/briar/ProtocolIntegrationTest.java similarity index 89% rename from test/net/sf/briar/FileReadWriteTest.java rename to test/net/sf/briar/ProtocolIntegrationTest.java index 12c5ebb9353d032e00600d3ad8456f3a45c863e2..a2e70d0d51203695792b434aa3b026a3a37c8ecf 100644 --- a/test/net/sf/briar/FileReadWriteTest.java +++ b/test/net/sf/briar/ProtocolIntegrationTest.java @@ -1,8 +1,7 @@ package net.sf.briar; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.security.KeyPair; @@ -51,17 +50,12 @@ import net.sf.briar.protocol.writers.ProtocolWritersModule; import net.sf.briar.serial.SerialModule; import net.sf.briar.transport.TransportModule; -import org.junit.After; -import org.junit.Before; import org.junit.Test; import com.google.inject.Guice; import com.google.inject.Injector; -public class FileReadWriteTest extends TestCase { - - private final File testDir = TestUtils.getTestDirectory(); - private final File file = new File(testDir, "foo"); +public class ProtocolIntegrationTest extends TestCase { private final BatchId ack = new BatchId(TestUtils.getRandomId()); private final long timestamp = System.currentTimeMillis(); @@ -81,12 +75,12 @@ public class FileReadWriteTest extends TestCase { private final String messageBody = "Hello world"; private final Map<String, Map<String, String>> transports; - public FileReadWriteTest() throws Exception { + public ProtocolIntegrationTest() throws Exception { super(); Injector i = Guice.createInjector(new CryptoModule(), new DatabaseModule(), new ProtocolModule(), new ProtocolWritersModule(), new SerialModule(), - new TestDatabaseModule(testDir), new TransportModule()); + new TestDatabaseModule(), new TransportModule()); connectionReaderFactory = i.getInstance(ConnectionReaderFactory.class); connectionWriterFactory = i.getInstance(ConnectionWriterFactory.class); protocolReaderFactory = i.getInstance(ProtocolReaderFactory.class); @@ -124,67 +118,59 @@ public class FileReadWriteTest extends TestCase { Collections.singletonMap("bar", "baz")); } - @Before - public void setUp() { - testDir.mkdirs(); - } - @Test public void testWriteAndRead() throws Exception { - write(); - read(); + read(write()); } - private void write() throws Exception { - OutputStream out = new FileOutputStream(file); + private byte[] write() throws Exception { + ByteArrayOutputStream out = new ByteArrayOutputStream(); // Use Alice's secret for writing ConnectionWriter w = connectionWriterFactory.createConnectionWriter(out, Long.MAX_VALUE, true, transportId, connection, aliceSecret); - out = w.getOutputStream(); + OutputStream out1 = w.getOutputStream(); - AckWriter a = protocolWriterFactory.createAckWriter(out); + AckWriter a = protocolWriterFactory.createAckWriter(out1); assertTrue(a.writeBatchId(ack)); a.finish(); - BatchWriter b = protocolWriterFactory.createBatchWriter(out); + BatchWriter b = protocolWriterFactory.createBatchWriter(out1); assertTrue(b.writeMessage(message.getBytes())); assertTrue(b.writeMessage(message1.getBytes())); assertTrue(b.writeMessage(message2.getBytes())); assertTrue(b.writeMessage(message3.getBytes())); b.finish(); - OfferWriter o = protocolWriterFactory.createOfferWriter(out); + OfferWriter o = protocolWriterFactory.createOfferWriter(out1); assertTrue(o.writeMessageId(message.getId())); assertTrue(o.writeMessageId(message1.getId())); assertTrue(o.writeMessageId(message2.getId())); assertTrue(o.writeMessageId(message3.getId())); o.finish(); - RequestWriter r = protocolWriterFactory.createRequestWriter(out); + RequestWriter r = protocolWriterFactory.createRequestWriter(out1); BitSet requested = new BitSet(4); requested.set(1); requested.set(3); r.writeRequest(requested, 4); SubscriptionWriter s = - protocolWriterFactory.createSubscriptionWriter(out); + protocolWriterFactory.createSubscriptionWriter(out1); // Use a LinkedHashMap for predictable iteration order Map<Group, Long> subs = new LinkedHashMap<Group, Long>(); subs.put(group, 0L); subs.put(group1, 0L); s.writeSubscriptions(subs, timestamp); - TransportWriter t = protocolWriterFactory.createTransportWriter(out); + TransportWriter t = protocolWriterFactory.createTransportWriter(out1); t.writeTransports(transports, timestamp); - out.close(); - assertTrue(file.exists()); - assertTrue(file.length() > message.getSize()); + out1.close(); + return out.toByteArray(); } - private void read() throws Exception { - - InputStream in = new FileInputStream(file); + private void read(byte[] connection) throws Exception { + InputStream in = new ByteArrayInputStream(connection); byte[] iv = new byte[16]; int offset = 0; while(offset < 16) { @@ -256,11 +242,6 @@ public class FileReadWriteTest extends TestCase { in.close(); } - @After - public void tearDown() { - TestUtils.deleteTestDirectory(testDir); - } - private void checkMessageEquality(Message m1, Message m2) { assertEquals(m1.getId(), m2.getId()); assertEquals(m1.getParent(), m2.getParent()); diff --git a/test/net/sf/briar/TestDatabaseModule.java b/test/net/sf/briar/TestDatabaseModule.java index 5d2b5b128e3b38bea955431771e63c4af454691e..98c350ec97eac6d9602d510613f10f55ff28387d 100644 --- a/test/net/sf/briar/TestDatabaseModule.java +++ b/test/net/sf/briar/TestDatabaseModule.java @@ -14,6 +14,10 @@ public class TestDatabaseModule extends AbstractModule { private final File dir; private final Password password; + public TestDatabaseModule() { + this(new File(".")); + } + public TestDatabaseModule(File dir) { this.dir = dir; this.password = new Password() { diff --git a/test/net/sf/briar/transport/ConnectionWriterTest.java b/test/net/sf/briar/transport/ConnectionWriterTest.java index ba11c37be5a3a2343ceba33c9f8fa049a1052a30..2db8571d0097645f66d99211b170929ffe8ba10c 100644 --- a/test/net/sf/briar/transport/ConnectionWriterTest.java +++ b/test/net/sf/briar/transport/ConnectionWriterTest.java @@ -4,7 +4,6 @@ import static net.sf.briar.api.protocol.ProtocolConstants.MAX_PACKET_LENGTH; import static net.sf.briar.api.transport.TransportConstants.MIN_CONNECTION_LENGTH; import java.io.ByteArrayOutputStream; -import java.io.File; import junit.framework.TestCase; import net.sf.briar.TestDatabaseModule; @@ -31,7 +30,7 @@ public class ConnectionWriterTest extends TestCase { super(); Injector i = Guice.createInjector(new CryptoModule(), new DatabaseModule(), new ProtocolModule(), new SerialModule(), - new TestDatabaseModule(new File(".")), new TransportModule()); + new TestDatabaseModule(), new TransportModule()); connectionWriterFactory = i.getInstance(ConnectionWriterFactory.class); }