mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-13 19:29:06 +01:00
Part 1 of a major BMP and database refactoring. Tests are broken!
The old logic for selecting when to send subscription and transport updates has been removed and not yet replaced. Subscription times have been removed from subscription updates. The database expiry time has been remove from subscription updates and will later get its own update packet. Transport updates have been broken up into one update per transport. Acks for subscription and transport updates have been added.
This commit is contained in:
@@ -12,7 +12,6 @@ import java.util.Arrays;
|
||||
import java.util.BitSet;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
@@ -23,18 +22,18 @@ import net.sf.briar.api.protocol.Author;
|
||||
import net.sf.briar.api.protocol.AuthorFactory;
|
||||
import net.sf.briar.api.protocol.Group;
|
||||
import net.sf.briar.api.protocol.GroupFactory;
|
||||
import net.sf.briar.api.protocol.GroupId;
|
||||
import net.sf.briar.api.protocol.Message;
|
||||
import net.sf.briar.api.protocol.MessageFactory;
|
||||
import net.sf.briar.api.protocol.MessageId;
|
||||
import net.sf.briar.api.protocol.MessageVerifier;
|
||||
import net.sf.briar.api.protocol.Offer;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolReader;
|
||||
import net.sf.briar.api.protocol.ProtocolReaderFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolWriter;
|
||||
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.Request;
|
||||
import net.sf.briar.api.protocol.Subscription;
|
||||
import net.sf.briar.api.protocol.SubscriptionHole;
|
||||
import net.sf.briar.api.protocol.SubscriptionUpdate;
|
||||
import net.sf.briar.api.protocol.Transport;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
@@ -66,7 +65,6 @@ public class ProtocolIntegrationTest extends BriarTestCase {
|
||||
private final ConnectionWriterFactory connectionWriterFactory;
|
||||
private final ProtocolReaderFactory protocolReaderFactory;
|
||||
private final ProtocolWriterFactory protocolWriterFactory;
|
||||
private final PacketFactory packetFactory;
|
||||
private final MessageVerifier messageVerifier;
|
||||
|
||||
private final ContactId contactId;
|
||||
@@ -80,7 +78,6 @@ public class ProtocolIntegrationTest extends BriarTestCase {
|
||||
private final String messageBody = "Hello world";
|
||||
private final Collection<MessageId> messageIds;
|
||||
private final Collection<Transport> transports;
|
||||
private final long timestamp = System.currentTimeMillis();
|
||||
|
||||
public ProtocolIntegrationTest() throws Exception {
|
||||
super();
|
||||
@@ -93,7 +90,6 @@ public class ProtocolIntegrationTest extends BriarTestCase {
|
||||
connectionWriterFactory = i.getInstance(ConnectionWriterFactory.class);
|
||||
protocolReaderFactory = i.getInstance(ProtocolReaderFactory.class);
|
||||
protocolWriterFactory = i.getInstance(ProtocolWriterFactory.class);
|
||||
packetFactory = i.getInstance(PacketFactory.class);
|
||||
messageVerifier = i.getInstance(MessageVerifier.class);
|
||||
contactId = new ContactId(234);
|
||||
transportId = new TransportId(TestUtils.getRandomId());
|
||||
@@ -149,33 +145,29 @@ public class ProtocolIntegrationTest extends BriarTestCase {
|
||||
ProtocolWriter writer = protocolWriterFactory.createProtocolWriter(out1,
|
||||
false);
|
||||
|
||||
Ack a = packetFactory.createAck(messageIds);
|
||||
writer.writeAck(a);
|
||||
writer.writeAck(new Ack(messageIds));
|
||||
|
||||
writer.writeMessage(message.getSerialised());
|
||||
writer.writeMessage(message1.getSerialised());
|
||||
writer.writeMessage(message2.getSerialised());
|
||||
writer.writeMessage(message3.getSerialised());
|
||||
|
||||
Offer o = packetFactory.createOffer(messageIds);
|
||||
writer.writeOffer(o);
|
||||
writer.writeOffer(new Offer(messageIds));
|
||||
|
||||
BitSet requested = new BitSet(4);
|
||||
requested.set(1);
|
||||
requested.set(3);
|
||||
Request r = packetFactory.createRequest(requested, 4);
|
||||
writer.writeRequest(r);
|
||||
writer.writeRequest(new Request(requested, 4));
|
||||
|
||||
// Use a LinkedHashMap for predictable iteration order
|
||||
Map<Group, Long> subs = new LinkedHashMap<Group, Long>();
|
||||
subs.put(group, 0L);
|
||||
subs.put(group1, 0L);
|
||||
SubscriptionUpdate s = packetFactory.createSubscriptionUpdate(
|
||||
Collections.<GroupId, GroupId>emptyMap(), subs, 0L, timestamp);
|
||||
Collection<SubscriptionHole> holes = Arrays.asList(
|
||||
new SubscriptionHole(group.getId(), group1.getId()));
|
||||
Collection<Subscription> subs = Arrays.asList(
|
||||
new Subscription(group, 0L), new Subscription(group1, 0L));
|
||||
SubscriptionUpdate s = new SubscriptionUpdate(holes, subs, 0L,
|
||||
subscriptionVersion);
|
||||
writer.writeSubscriptionUpdate(s);
|
||||
|
||||
TransportUpdate t = packetFactory.createTransportUpdate(transports,
|
||||
timestamp);
|
||||
TransportUpdate t = new TransportUpdate(transports, transportVersion);
|
||||
writer.writeTransportUpdate(t);
|
||||
|
||||
writer.flush();
|
||||
@@ -232,17 +224,12 @@ public class ProtocolIntegrationTest extends BriarTestCase {
|
||||
// Read the subscription update
|
||||
assertTrue(reader.hasSubscriptionUpdate());
|
||||
SubscriptionUpdate s = reader.readSubscriptionUpdate();
|
||||
Map<Group, Long> subs = s.getSubscriptions();
|
||||
assertEquals(2, subs.size());
|
||||
assertEquals(Long.valueOf(0L), subs.get(group));
|
||||
assertEquals(Long.valueOf(0L), subs.get(group1));
|
||||
assertTrue(s.getTimestamp() == timestamp);
|
||||
// FIXME: Test for equality
|
||||
|
||||
// Read the transport update
|
||||
assertTrue(reader.hasTransportUpdate());
|
||||
TransportUpdate t = reader.readTransportUpdate();
|
||||
assertEquals(transports, t.getTransports());
|
||||
assertTrue(t.getTimestamp() == timestamp);
|
||||
// FIXME: Test for equality
|
||||
|
||||
in.close();
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import net.sf.briar.api.clock.SystemClock;
|
||||
import net.sf.briar.api.db.DatabaseComponent;
|
||||
import net.sf.briar.api.db.DbException;
|
||||
import net.sf.briar.api.lifecycle.ShutdownManager;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.db.DatabaseCleaner.Callback;
|
||||
|
||||
import org.jmock.Expectations;
|
||||
@@ -29,13 +28,11 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).getFreeSpace();
|
||||
will(returnValue(MIN_FREE_SPACE));
|
||||
}});
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown,
|
||||
packetFactory);
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown);
|
||||
|
||||
db.checkFreeSpaceAndClean();
|
||||
|
||||
@@ -49,7 +46,6 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).getFreeSpace();
|
||||
will(returnValue(MIN_FREE_SPACE - 1));
|
||||
@@ -62,8 +58,7 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
oneOf(database).getFreeSpace();
|
||||
will(returnValue(MIN_FREE_SPACE));
|
||||
}});
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown,
|
||||
packetFactory);
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown);
|
||||
|
||||
db.checkFreeSpaceAndClean();
|
||||
|
||||
@@ -72,13 +67,12 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
|
||||
@Test
|
||||
public void testExpiringUnsendableMessageDoesNotTriggerBackwardInclusion()
|
||||
throws DbException {
|
||||
throws DbException {
|
||||
Mockery context = new Mockery();
|
||||
@SuppressWarnings("unchecked")
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).getFreeSpace();
|
||||
will(returnValue(MIN_FREE_SPACE - 1));
|
||||
@@ -93,8 +87,7 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
oneOf(database).getFreeSpace();
|
||||
will(returnValue(MIN_FREE_SPACE));
|
||||
}});
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown,
|
||||
packetFactory);
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown);
|
||||
|
||||
db.checkFreeSpaceAndClean();
|
||||
|
||||
@@ -103,13 +96,12 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
|
||||
@Test
|
||||
public void testExpiringSendableMessageTriggersBackwardInclusion()
|
||||
throws DbException {
|
||||
throws DbException {
|
||||
Mockery context = new Mockery();
|
||||
@SuppressWarnings("unchecked")
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).getFreeSpace();
|
||||
will(returnValue(MIN_FREE_SPACE - 1));
|
||||
@@ -126,8 +118,7 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
oneOf(database).getFreeSpace();
|
||||
will(returnValue(MIN_FREE_SPACE));
|
||||
}});
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown,
|
||||
packetFactory);
|
||||
Callback db = createDatabaseComponentImpl(database, cleaner, shutdown);
|
||||
|
||||
db.checkFreeSpaceAndClean();
|
||||
|
||||
@@ -137,15 +128,14 @@ public class DatabaseComponentImplTest extends DatabaseComponentTest {
|
||||
@Override
|
||||
protected <T> DatabaseComponent createDatabaseComponent(
|
||||
Database<T> database, DatabaseCleaner cleaner,
|
||||
ShutdownManager shutdown, PacketFactory packetFactory) {
|
||||
return createDatabaseComponentImpl(database, cleaner, shutdown,
|
||||
packetFactory);
|
||||
ShutdownManager shutdown) {
|
||||
return createDatabaseComponentImpl(database, cleaner, shutdown);
|
||||
}
|
||||
|
||||
private <T> DatabaseComponentImpl<T> createDatabaseComponentImpl(
|
||||
Database<T> database, DatabaseCleaner cleaner,
|
||||
ShutdownManager shutdown, PacketFactory packetFactory) {
|
||||
ShutdownManager shutdown) {
|
||||
return new DatabaseComponentImpl<T>(database, cleaner, shutdown,
|
||||
packetFactory, new SystemClock());
|
||||
new SystemClock());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package net.sf.briar.db;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.BitSet;
|
||||
import java.util.Collection;
|
||||
@@ -29,7 +28,6 @@ import net.sf.briar.api.protocol.GroupId;
|
||||
import net.sf.briar.api.protocol.Message;
|
||||
import net.sf.briar.api.protocol.MessageId;
|
||||
import net.sf.briar.api.protocol.Offer;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.api.protocol.Request;
|
||||
import net.sf.briar.api.protocol.SubscriptionUpdate;
|
||||
import net.sf.briar.api.protocol.Transport;
|
||||
@@ -89,7 +87,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
|
||||
protected abstract <T> DatabaseComponent createDatabaseComponent(
|
||||
Database<T> database, DatabaseCleaner cleaner,
|
||||
ShutdownManager shutdown, PacketFactory packetFactory);
|
||||
ShutdownManager shutdown);
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
@@ -99,7 +97,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
@@ -167,7 +164,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).close();
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.open(false);
|
||||
db.addListener(listener);
|
||||
@@ -198,7 +195,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// setRating(authorId, Rating.GOOD)
|
||||
allowing(database).startTransaction();
|
||||
@@ -217,7 +213,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.setRating(authorId, Rating.GOOD);
|
||||
|
||||
@@ -231,7 +227,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// setRating(authorId, Rating.GOOD)
|
||||
oneOf(database).startTransaction();
|
||||
@@ -254,7 +249,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.setRating(authorId, Rating.GOOD);
|
||||
|
||||
@@ -269,7 +264,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// setRating(authorId, Rating.GOOD)
|
||||
oneOf(database).startTransaction();
|
||||
@@ -295,7 +289,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.setRating(authorId, Rating.GOOD);
|
||||
|
||||
@@ -310,7 +304,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// addLocalGroupMessage(message)
|
||||
oneOf(database).startTransaction();
|
||||
@@ -320,7 +313,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addLocalGroupMessage(message);
|
||||
|
||||
@@ -334,7 +327,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// addLocalGroupMessage(message)
|
||||
oneOf(database).startTransaction();
|
||||
@@ -346,7 +338,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addLocalGroupMessage(message);
|
||||
|
||||
@@ -360,7 +352,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// addLocalGroupMessage(message)
|
||||
oneOf(database).startTransaction();
|
||||
@@ -381,7 +372,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addLocalGroupMessage(message);
|
||||
|
||||
@@ -396,7 +387,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// addLocalGroupMessage(message)
|
||||
oneOf(database).startTransaction();
|
||||
@@ -420,7 +410,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addLocalGroupMessage(message);
|
||||
|
||||
@@ -434,7 +424,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -446,7 +435,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
will(returnValue(false));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addLocalPrivateMessage(privateMessage, contactId);
|
||||
|
||||
@@ -460,7 +449,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -473,7 +461,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).setStatus(txn, contactId, messageId, Status.NEW);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addLocalPrivateMessage(privateMessage, contactId);
|
||||
|
||||
@@ -488,7 +476,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final Ack ack = context.mock(Ack.class);
|
||||
final Offer offer = context.mock(Offer.class);
|
||||
final SubscriptionUpdate subscriptionUpdate =
|
||||
@@ -504,7 +491,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
exactly(16).of(database).abortTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
try {
|
||||
db.addContactTransport(contactTransport);
|
||||
@@ -598,7 +585,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// Check whether the contact transport is in the DB (which it's not)
|
||||
exactly(2).of(database).startTransaction();
|
||||
@@ -609,7 +595,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
exactly(2).of(database).abortTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
try {
|
||||
db.incrementConnectionCounter(contactId, transportId, 0L);
|
||||
@@ -633,8 +619,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final Ack ack = context.mock(Ack.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -644,16 +628,14 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
// Get the messages to ack
|
||||
oneOf(database).getMessagesToAck(txn, contactId, 123);
|
||||
will(returnValue(messagesToAck));
|
||||
// Create the ack packet
|
||||
oneOf(packetFactory).createAck(messagesToAck);
|
||||
will(returnValue(ack));
|
||||
// Record the messages that were acked
|
||||
oneOf(database).removeMessagesToAck(txn, contactId, messagesToAck);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertEquals(ack, db.generateAck(contactId, 123));
|
||||
Ack a = db.generateAck(contactId, 123);
|
||||
assertEquals(messagesToAck, a.getMessageIds());
|
||||
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
@@ -669,7 +651,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -687,7 +668,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).addOutstandingMessages(txn, contactId, sendable);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertEquals(messages, db.generateBatch(contactId, size * 2));
|
||||
|
||||
@@ -698,17 +679,14 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
public void testGenerateBatchFromRequest() throws Exception {
|
||||
final MessageId messageId2 = new MessageId(TestUtils.getRandomId());
|
||||
final byte[] raw1 = new byte[size];
|
||||
final Collection<MessageId> requested = new ArrayList<MessageId>();
|
||||
requested.add(messageId);
|
||||
requested.add(messageId1);
|
||||
requested.add(messageId2);
|
||||
final Collection<MessageId> requested = Arrays.asList(messageId,
|
||||
messageId1, messageId2);
|
||||
final Collection<byte[]> messages = Arrays.asList(raw1);
|
||||
Mockery context = new Mockery();
|
||||
@SuppressWarnings("unchecked")
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -727,7 +705,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
Collections.singletonList(messageId1));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertEquals(messages, db.generateBatch(contactId, size * 3,
|
||||
requested));
|
||||
@@ -738,16 +716,13 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
@Test
|
||||
public void testGenerateOffer() throws Exception {
|
||||
final MessageId messageId1 = new MessageId(TestUtils.getRandomId());
|
||||
final Collection<MessageId> offerable = new ArrayList<MessageId>();
|
||||
offerable.add(messageId);
|
||||
offerable.add(messageId1);
|
||||
final Collection<MessageId> messagesToOffer = Arrays.asList(messageId,
|
||||
messageId1);
|
||||
Mockery context = new Mockery();
|
||||
@SuppressWarnings("unchecked")
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final Offer offer = context.mock(Offer.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -756,15 +731,13 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
will(returnValue(true));
|
||||
// Get the sendable message IDs
|
||||
oneOf(database).getMessagesToOffer(txn, contactId, 123);
|
||||
will(returnValue(offerable));
|
||||
// Create the packet
|
||||
oneOf(packetFactory).createOffer(offerable);
|
||||
will(returnValue(offer));
|
||||
will(returnValue(messagesToOffer));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertEquals(offer, db.generateOffer(contactId, 123));
|
||||
Offer o = db.generateOffer(contactId, 123);
|
||||
assertEquals(messagesToOffer, o.getMessageIds());
|
||||
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
@@ -776,9 +749,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final SubscriptionUpdate subscriptionUpdate =
|
||||
context.mock(SubscriptionUpdate.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -786,55 +756,39 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
allowing(database).containsContact(txn, contactId);
|
||||
will(returnValue(true));
|
||||
// Get the visible holes and subscriptions
|
||||
oneOf(database).getVisibleHoles(with(txn), with(contactId),
|
||||
with(any(long.class)));
|
||||
will(returnValue(Collections.emptyMap()));
|
||||
oneOf(database).getVisibleSubscriptions(with(txn), with(contactId),
|
||||
with(any(long.class)));
|
||||
will(returnValue(Collections.singletonMap(group, 0L)));
|
||||
oneOf(database).getVisibleHoles(txn, contactId);
|
||||
will(returnValue(Collections.emptyMap())); // FIXME
|
||||
oneOf(database).getVisibleSubscriptions(txn, contactId);
|
||||
will(returnValue(Collections.singletonMap(group, 0L))); // FIXME
|
||||
// Get the expiry time
|
||||
oneOf(database).getExpiryTime(txn);
|
||||
will(returnValue(0L));
|
||||
// Create the packet
|
||||
oneOf(packetFactory).createSubscriptionUpdate(
|
||||
with(Collections.<GroupId, GroupId>emptyMap()),
|
||||
with(Collections.singletonMap(group, 0L)),
|
||||
with(any(long.class)),
|
||||
with(any(long.class)));
|
||||
will(returnValue(subscriptionUpdate));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertEquals(subscriptionUpdate,
|
||||
db.generateSubscriptionUpdate(contactId));
|
||||
SubscriptionUpdate s = db.generateSubscriptionUpdate(contactId);
|
||||
// FIXME: Check that the update contains the expected data
|
||||
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransportUpdateNotSentUnlessDue() throws Exception {
|
||||
final long now = System.currentTimeMillis();
|
||||
Mockery context = new Mockery();
|
||||
@SuppressWarnings("unchecked")
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
allowing(database).commitTransaction(txn);
|
||||
allowing(database).containsContact(txn, contactId);
|
||||
will(returnValue(true));
|
||||
// Check whether an update is due
|
||||
oneOf(database).getTransportsModified(txn);
|
||||
will(returnValue(now - 1L));
|
||||
oneOf(database).getTransportsSent(txn, contactId);
|
||||
will(returnValue(now));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertNull(db.generateTransportUpdate(contactId));
|
||||
|
||||
@@ -848,34 +802,21 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final TransportUpdate transportUpdate =
|
||||
context.mock(TransportUpdate.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
allowing(database).commitTransaction(txn);
|
||||
allowing(database).containsContact(txn, contactId);
|
||||
will(returnValue(true));
|
||||
// Check whether an update is due
|
||||
oneOf(database).getTransportsModified(txn);
|
||||
will(returnValue(0L));
|
||||
oneOf(database).getTransportsSent(txn, contactId);
|
||||
will(returnValue(0L));
|
||||
// Get the local transport properties
|
||||
oneOf(database).getLocalTransports(txn);
|
||||
will(returnValue(transports));
|
||||
oneOf(database).setTransportsSent(with(txn), with(contactId),
|
||||
with(any(long.class)));
|
||||
// Create the packet
|
||||
oneOf(packetFactory).createTransportUpdate(with(transports),
|
||||
with(any(long.class)));
|
||||
will(returnValue(transportUpdate));
|
||||
oneOf(database).getTransports(txn);
|
||||
will(returnValue(transports)); // FIXME
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertEquals(transportUpdate, db.generateTransportUpdate(contactId));
|
||||
TransportUpdate t = db.generateTransportUpdate(contactId);
|
||||
// FIXME: Check that the update contains the expected data
|
||||
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
@@ -887,8 +828,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final Ack ack = context.mock(Ack.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -896,15 +835,13 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
allowing(database).containsContact(txn, contactId);
|
||||
will(returnValue(true));
|
||||
// Get the acked messages
|
||||
oneOf(ack).getMessageIds();
|
||||
will(returnValue(Collections.singletonList(messageId)));
|
||||
oneOf(database).removeOutstandingMessages(txn, contactId,
|
||||
Collections.singletonList(messageId));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveAck(contactId, ack);
|
||||
db.receiveAck(contactId, new Ack(Collections.singletonList(messageId)));
|
||||
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
@@ -916,7 +853,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -931,7 +867,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).addMessageToAck(txn, contactId, messageId);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveMessage(contactId, privateMessage);
|
||||
|
||||
@@ -945,7 +881,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -959,7 +894,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).addMessageToAck(txn, contactId, messageId);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveMessage(contactId, privateMessage);
|
||||
|
||||
@@ -974,7 +909,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -989,7 +923,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).addMessageToAck(txn, contactId, messageId);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveMessage(contactId, message);
|
||||
|
||||
@@ -1004,7 +938,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -1023,7 +956,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).addMessageToAck(txn, contactId, messageId);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveMessage(contactId, message);
|
||||
|
||||
@@ -1037,7 +970,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -1065,7 +997,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).addMessageToAck(txn, contactId, messageId);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveMessage(contactId, message);
|
||||
|
||||
@@ -1080,7 +1012,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -1110,7 +1041,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).addMessageToAck(txn, contactId, messageId);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveMessage(contactId, message);
|
||||
|
||||
@@ -1121,10 +1052,8 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
public void testReceiveOffer() throws Exception {
|
||||
final MessageId messageId1 = new MessageId(TestUtils.getRandomId());
|
||||
final MessageId messageId2 = new MessageId(TestUtils.getRandomId());
|
||||
final Collection<MessageId> offered = new ArrayList<MessageId>();
|
||||
offered.add(messageId);
|
||||
offered.add(messageId1);
|
||||
offered.add(messageId2);
|
||||
final Collection<MessageId> offered = Arrays.asList(messageId,
|
||||
messageId1, messageId2);
|
||||
final BitSet expectedRequest = new BitSet(3);
|
||||
expectedRequest.set(0);
|
||||
expectedRequest.set(2);
|
||||
@@ -1133,9 +1062,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final Offer offer = context.mock(Offer.class);
|
||||
final Request request = context.mock(Request.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -1151,14 +1078,13 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
will(returnValue(true)); // Visible - do not request message # 1
|
||||
oneOf(database).setStatusSeenIfVisible(txn, contactId, messageId2);
|
||||
will(returnValue(false)); // Not visible - request message # 2
|
||||
// Create the packet
|
||||
oneOf(packetFactory).createRequest(expectedRequest, 3);
|
||||
will(returnValue(request));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
assertEquals(request, db.receiveOffer(contactId, offer));
|
||||
Request r = db.receiveOffer(contactId, offer);
|
||||
assertEquals(expectedRequest, r.getBitmap());
|
||||
assertEquals(3, r.getLength());
|
||||
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
@@ -1167,15 +1093,14 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
public void testReceiveSubscriptionUpdate() throws Exception {
|
||||
final GroupId start = new GroupId(TestUtils.getRandomId());
|
||||
final GroupId end = new GroupId(TestUtils.getRandomId());
|
||||
final long expiry = 1234L, timestamp = 5678L;
|
||||
final long expiry = 1234L;
|
||||
Mockery context = new Mockery();
|
||||
@SuppressWarnings("unchecked")
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final SubscriptionUpdate subscriptionUpdate =
|
||||
context.mock(SubscriptionUpdate.class);
|
||||
context.mock(SubscriptionUpdate.class); // FIXME: Don't mock
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -1184,21 +1109,18 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
will(returnValue(true));
|
||||
// Get the contents of the update
|
||||
oneOf(subscriptionUpdate).getHoles();
|
||||
will(returnValue(Collections.singletonMap(start, end)));
|
||||
oneOf(subscriptionUpdate).getSubscriptions();
|
||||
will(returnValue(Collections.singletonMap(group, 0L)));
|
||||
will(returnValue(Collections.singletonMap(start, end))); // FIXME
|
||||
oneOf(subscriptionUpdate).getGroupIds();
|
||||
will(returnValue(Collections.singletonMap(group, 0L))); // FIXME
|
||||
oneOf(subscriptionUpdate).getExpiryTime();
|
||||
will(returnValue(expiry));
|
||||
oneOf(subscriptionUpdate).getTimestamp();
|
||||
will(returnValue(timestamp));
|
||||
// Store the contents of the update
|
||||
oneOf(database).removeSubscriptions(txn, contactId, start, end);
|
||||
oneOf(database).addSubscription(txn, contactId, group, 0L);
|
||||
oneOf(database).setExpiryTime(txn, contactId, expiry);
|
||||
oneOf(database).setSubscriptionsReceived(txn, contactId, timestamp);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveSubscriptionUpdate(contactId, subscriptionUpdate);
|
||||
|
||||
@@ -1207,15 +1129,13 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
|
||||
@Test
|
||||
public void testReceiveTransportUpdate() throws Exception {
|
||||
final long timestamp = 1234L;
|
||||
Mockery context = new Mockery();
|
||||
@SuppressWarnings("unchecked")
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final TransportUpdate transportUpdate =
|
||||
context.mock(TransportUpdate.class);
|
||||
context.mock(TransportUpdate.class); // FIXME: Don't mock
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -1225,13 +1145,10 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
// Get the contents of the update
|
||||
oneOf(transportUpdate).getTransports();
|
||||
will(returnValue(transports));
|
||||
oneOf(transportUpdate).getTimestamp();
|
||||
will(returnValue(timestamp));
|
||||
oneOf(database).setTransports(txn, contactId, transports,
|
||||
timestamp);
|
||||
oneOf(database).setTransports(txn, contactId, transports);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.receiveTransportUpdate(contactId, transportUpdate);
|
||||
|
||||
@@ -1245,7 +1162,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
// addLocalGroupMessage(message)
|
||||
@@ -1268,7 +1184,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(listener).eventOccurred(with(any(MessageAddedEvent.class)));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addListener(listener);
|
||||
db.addLocalGroupMessage(message);
|
||||
@@ -1283,7 +1199,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
@@ -1299,7 +1214,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(listener).eventOccurred(with(any(MessageAddedEvent.class)));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addListener(listener);
|
||||
db.addLocalPrivateMessage(privateMessage, contactId);
|
||||
@@ -1315,7 +1230,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
// addLocalGroupMessage(message)
|
||||
@@ -1329,7 +1243,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
// The message was not added, so the listener should not be called
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addListener(listener);
|
||||
db.addLocalGroupMessage(message);
|
||||
@@ -1345,7 +1259,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
@@ -1359,7 +1272,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
// The message was not added, so the listener should not be called
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addListener(listener);
|
||||
db.addLocalPrivateMessage(privateMessage, contactId);
|
||||
@@ -1377,19 +1290,16 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
oneOf(database).getLocalProperties(txn, transportId);
|
||||
will(returnValue(new TransportProperties()));
|
||||
oneOf(database).mergeLocalProperties(txn, transportId, properties);
|
||||
oneOf(database).setTransportsModified(with(txn),
|
||||
with(any(long.class)));
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.mergeLocalProperties(transportId, properties);
|
||||
|
||||
@@ -1406,7 +1316,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).startTransaction();
|
||||
@@ -1416,7 +1325,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addListener(listener);
|
||||
db.mergeLocalProperties(transportId, properties);
|
||||
@@ -1431,7 +1340,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
allowing(database).startTransaction();
|
||||
will(returnValue(txn));
|
||||
@@ -1442,7 +1350,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).setStatusSeenIfVisible(txn, contactId, messageId);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.setSeen(contactId, Collections.singletonList(messageId));
|
||||
|
||||
@@ -1458,7 +1366,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).startTransaction();
|
||||
@@ -1473,7 +1380,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
SubscriptionsUpdatedEvent.class)));
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addListener(listener);
|
||||
db.setVisibility(groupId, Collections.singletonList(contactId));
|
||||
@@ -1490,7 +1397,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
final DatabaseListener listener = context.mock(DatabaseListener.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(database).startTransaction();
|
||||
@@ -1502,7 +1408,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addListener(listener);
|
||||
db.setVisibility(groupId, both);
|
||||
@@ -1517,7 +1423,6 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
final Database<Object> database = context.mock(Database.class);
|
||||
final DatabaseCleaner cleaner = context.mock(DatabaseCleaner.class);
|
||||
final ShutdownManager shutdown = context.mock(ShutdownManager.class);
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
context.checking(new Expectations() {{
|
||||
// addSecrets()
|
||||
oneOf(database).startTransaction();
|
||||
@@ -1536,7 +1441,7 @@ public abstract class DatabaseComponentTest extends BriarTestCase {
|
||||
oneOf(database).commitTransaction(txn);
|
||||
}});
|
||||
DatabaseComponent db = createDatabaseComponent(database, cleaner,
|
||||
shutdown, packetFactory);
|
||||
shutdown);
|
||||
|
||||
db.addSecrets(Collections.singletonList(temporarySecret));
|
||||
assertEquals(Collections.singletonList(temporarySecret),
|
||||
|
||||
@@ -5,13 +5,11 @@ import static net.sf.briar.api.protocol.Types.ACK;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.Collection;
|
||||
|
||||
import net.sf.briar.BriarTestCase;
|
||||
import net.sf.briar.TestUtils;
|
||||
import net.sf.briar.api.FormatException;
|
||||
import net.sf.briar.api.protocol.Ack;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.api.serial.Reader;
|
||||
import net.sf.briar.api.serial.ReaderFactory;
|
||||
import net.sf.briar.api.serial.SerialComponent;
|
||||
@@ -19,8 +17,6 @@ import net.sf.briar.api.serial.Writer;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
import net.sf.briar.serial.SerialModule;
|
||||
|
||||
import org.jmock.Expectations;
|
||||
import org.jmock.Mockery;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
@@ -33,7 +29,6 @@ public class AckReaderTest extends BriarTestCase {
|
||||
private final SerialComponent serial;
|
||||
private final ReaderFactory readerFactory;
|
||||
private final WriterFactory writerFactory;
|
||||
private final Mockery context;
|
||||
|
||||
public AckReaderTest() throws Exception {
|
||||
super();
|
||||
@@ -41,61 +36,39 @@ public class AckReaderTest extends BriarTestCase {
|
||||
serial = i.getInstance(SerialComponent.class);
|
||||
readerFactory = i.getInstance(ReaderFactory.class);
|
||||
writerFactory = i.getInstance(WriterFactory.class);
|
||||
context = new Mockery();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFormatExceptionIfAckIsTooLarge() throws Exception {
|
||||
PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
AckReader ackReader = new AckReader(packetFactory);
|
||||
|
||||
byte[] b = createAck(true);
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(ACK, ackReader);
|
||||
|
||||
reader.addStructReader(ACK, new AckReader());
|
||||
try {
|
||||
reader.readStruct(ACK, Ack.class);
|
||||
fail();
|
||||
} catch(FormatException expected) {}
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void testNoFormatExceptionIfAckIsMaximumSize() throws Exception {
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
AckReader ackReader = new AckReader(packetFactory);
|
||||
final Ack ack = context.mock(Ack.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(packetFactory).createAck(with(any(Collection.class)));
|
||||
will(returnValue(ack));
|
||||
}});
|
||||
|
||||
byte[] b = createAck(false);
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(ACK, ackReader);
|
||||
|
||||
assertEquals(ack, reader.readStruct(ACK, Ack.class));
|
||||
context.assertIsSatisfied();
|
||||
reader.addStructReader(ACK, new AckReader());
|
||||
reader.readStruct(ACK, Ack.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyAck() throws Exception {
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
AckReader ackReader = new AckReader(packetFactory);
|
||||
|
||||
byte[] b = createEmptyAck();
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(ACK, ackReader);
|
||||
|
||||
reader.addStructReader(ACK, new AckReader());
|
||||
try {
|
||||
reader.readStruct(ACK, Ack.class);
|
||||
fail();
|
||||
} catch(FormatException expected) {}
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
|
||||
private byte[] createAck(boolean tooBig) throws Exception {
|
||||
|
||||
@@ -4,17 +4,13 @@ import static net.sf.briar.api.protocol.ProtocolConstants.MAX_AUTHOR_NAME_LENGTH
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_BODY_LENGTH;
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_GROUP_NAME_LENGTH;
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_PACKET_LENGTH;
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_PROPERTIES_PER_TRANSPORT;
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_PROPERTY_LENGTH;
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_PUBLIC_KEY_LENGTH;
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_SUBJECT_LENGTH;
|
||||
import static net.sf.briar.api.protocol.ProtocolConstants.MAX_TRANSPORTS;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.security.PrivateKey;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
||||
import net.sf.briar.BriarTestCase;
|
||||
import net.sf.briar.TestUtils;
|
||||
@@ -28,12 +24,8 @@ import net.sf.briar.api.protocol.Message;
|
||||
import net.sf.briar.api.protocol.MessageFactory;
|
||||
import net.sf.briar.api.protocol.MessageId;
|
||||
import net.sf.briar.api.protocol.Offer;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolWriter;
|
||||
import net.sf.briar.api.protocol.ProtocolWriterFactory;
|
||||
import net.sf.briar.api.protocol.Transport;
|
||||
import net.sf.briar.api.protocol.TransportId;
|
||||
import net.sf.briar.api.protocol.TransportUpdate;
|
||||
import net.sf.briar.api.protocol.UniqueId;
|
||||
import net.sf.briar.clock.ClockModule;
|
||||
import net.sf.briar.crypto.CryptoModule;
|
||||
@@ -50,7 +42,6 @@ public class ConstantsTest extends BriarTestCase {
|
||||
private final GroupFactory groupFactory;
|
||||
private final AuthorFactory authorFactory;
|
||||
private final MessageFactory messageFactory;
|
||||
private final PacketFactory packetFactory;
|
||||
private final ProtocolWriterFactory protocolWriterFactory;
|
||||
|
||||
public ConstantsTest() throws Exception {
|
||||
@@ -61,7 +52,6 @@ public class ConstantsTest extends BriarTestCase {
|
||||
groupFactory = i.getInstance(GroupFactory.class);
|
||||
authorFactory = i.getInstance(AuthorFactory.class);
|
||||
messageFactory = i.getInstance(MessageFactory.class);
|
||||
packetFactory = i.getInstance(PacketFactory.class);
|
||||
protocolWriterFactory = i.getInstance(ProtocolWriterFactory.class);
|
||||
}
|
||||
|
||||
@@ -85,8 +75,7 @@ public class ConstantsTest extends BriarTestCase {
|
||||
for(int i = 0; i < maxMessages; i++) {
|
||||
acked.add(new MessageId(TestUtils.getRandomId()));
|
||||
}
|
||||
Ack a = packetFactory.createAck(acked);
|
||||
writer.writeAck(a);
|
||||
writer.writeAck(new Ack(acked));
|
||||
// Check the size of the serialised ack
|
||||
assertTrue(out.size() <= length);
|
||||
}
|
||||
@@ -136,43 +125,11 @@ public class ConstantsTest extends BriarTestCase {
|
||||
for(int i = 0; i < maxMessages; i++) {
|
||||
offered.add(new MessageId(TestUtils.getRandomId()));
|
||||
}
|
||||
Offer o = packetFactory.createOffer(offered);
|
||||
writer.writeOffer(o);
|
||||
writer.writeOffer(new Offer(offered));
|
||||
// Check the size of the serialised offer
|
||||
assertTrue(out.size() <= length);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTransportsFitIntoUpdate() throws Exception {
|
||||
// Create the maximum number of plugins, each with the maximum number
|
||||
// of maximum-length properties
|
||||
Collection<Transport> transports = new ArrayList<Transport>();
|
||||
for(int i = 0; i < MAX_TRANSPORTS; i++) {
|
||||
TransportId id = new TransportId(TestUtils.getRandomId());
|
||||
Transport t = new Transport(id);
|
||||
Map<String, String> m = t.getProperties();
|
||||
for(int j = 0; j < MAX_PROPERTIES_PER_TRANSPORT; j++) {
|
||||
String key = createRandomString(MAX_PROPERTY_LENGTH);
|
||||
String value = createRandomString(MAX_PROPERTY_LENGTH);
|
||||
m.put(key, value);
|
||||
}
|
||||
transports.add(t);
|
||||
}
|
||||
// Add the transports to an update
|
||||
ByteArrayOutputStream out =
|
||||
new ByteArrayOutputStream(MAX_PACKET_LENGTH);
|
||||
ProtocolWriter writer = protocolWriterFactory.createProtocolWriter(out,
|
||||
true);
|
||||
TransportUpdate t = packetFactory.createTransportUpdate(transports,
|
||||
Long.MAX_VALUE);
|
||||
writer.writeTransportUpdate(t);
|
||||
// Check the size of the serialised update
|
||||
assertTrue(out.size() > MAX_TRANSPORTS * (UniqueId.LENGTH + 4
|
||||
+ (MAX_PROPERTIES_PER_TRANSPORT * MAX_PROPERTY_LENGTH * 2))
|
||||
+ 8);
|
||||
assertTrue(out.size() <= MAX_PACKET_LENGTH);
|
||||
}
|
||||
|
||||
private static String createRandomString(int length) throws Exception {
|
||||
StringBuilder s = new StringBuilder(length);
|
||||
for(int i = 0; i < length; i++) {
|
||||
|
||||
@@ -5,13 +5,11 @@ import static net.sf.briar.api.protocol.Types.OFFER;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.Collection;
|
||||
|
||||
import net.sf.briar.BriarTestCase;
|
||||
import net.sf.briar.TestUtils;
|
||||
import net.sf.briar.api.FormatException;
|
||||
import net.sf.briar.api.protocol.Offer;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.api.serial.Reader;
|
||||
import net.sf.briar.api.serial.ReaderFactory;
|
||||
import net.sf.briar.api.serial.SerialComponent;
|
||||
@@ -19,8 +17,6 @@ import net.sf.briar.api.serial.Writer;
|
||||
import net.sf.briar.api.serial.WriterFactory;
|
||||
import net.sf.briar.serial.SerialModule;
|
||||
|
||||
import org.jmock.Expectations;
|
||||
import org.jmock.Mockery;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
@@ -33,7 +29,6 @@ public class OfferReaderTest extends BriarTestCase {
|
||||
private final SerialComponent serial;
|
||||
private final ReaderFactory readerFactory;
|
||||
private final WriterFactory writerFactory;
|
||||
private final Mockery context;
|
||||
|
||||
public OfferReaderTest() throws Exception {
|
||||
super();
|
||||
@@ -41,61 +36,39 @@ public class OfferReaderTest extends BriarTestCase {
|
||||
serial = i.getInstance(SerialComponent.class);
|
||||
readerFactory = i.getInstance(ReaderFactory.class);
|
||||
writerFactory = i.getInstance(WriterFactory.class);
|
||||
context = new Mockery();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFormatExceptionIfOfferIsTooLarge() throws Exception {
|
||||
PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
OfferReader offerReader = new OfferReader(packetFactory);
|
||||
|
||||
byte[] b = createOffer(true);
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(OFFER, offerReader);
|
||||
|
||||
reader.addStructReader(OFFER, new OfferReader());
|
||||
try {
|
||||
reader.readStruct(OFFER, Offer.class);
|
||||
fail();
|
||||
} catch(FormatException expected) {}
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void testNoFormatExceptionIfOfferIsMaximumSize() throws Exception {
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
OfferReader offerReader = new OfferReader(packetFactory);
|
||||
final Offer offer = context.mock(Offer.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(packetFactory).createOffer(with(any(Collection.class)));
|
||||
will(returnValue(offer));
|
||||
}});
|
||||
|
||||
byte[] b = createOffer(false);
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(OFFER, offerReader);
|
||||
|
||||
assertEquals(offer, reader.readStruct(OFFER, Offer.class));
|
||||
context.assertIsSatisfied();
|
||||
reader.addStructReader(OFFER, new OfferReader());
|
||||
reader.readStruct(OFFER, Offer.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEmptyOffer() throws Exception {
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
OfferReader offerReader = new OfferReader(packetFactory);
|
||||
|
||||
byte[] b = createEmptyOffer();
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(OFFER, offerReader);
|
||||
|
||||
reader.addStructReader(OFFER, new OfferReader());
|
||||
try {
|
||||
reader.readStruct(OFFER, Offer.class);
|
||||
fail();
|
||||
} catch(FormatException expected) {}
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
|
||||
private byte[] createOffer(boolean tooBig) throws Exception {
|
||||
|
||||
@@ -5,7 +5,6 @@ import java.io.IOException;
|
||||
import java.util.BitSet;
|
||||
|
||||
import net.sf.briar.BriarTestCase;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.api.protocol.ProtocolWriter;
|
||||
import net.sf.briar.api.protocol.Request;
|
||||
import net.sf.briar.api.serial.SerialComponent;
|
||||
@@ -24,7 +23,6 @@ public class ProtocolWriterImplTest extends BriarTestCase {
|
||||
|
||||
// FIXME: This is an integration test, not a unit test
|
||||
|
||||
private final PacketFactory packetFactory;
|
||||
private final SerialComponent serial;
|
||||
private final WriterFactory writerFactory;
|
||||
|
||||
@@ -32,7 +30,6 @@ public class ProtocolWriterImplTest extends BriarTestCase {
|
||||
super();
|
||||
Injector i = Guice.createInjector(new ClockModule(), new CryptoModule(),
|
||||
new ProtocolModule(), new SerialModule());
|
||||
packetFactory = i.getInstance(PacketFactory.class);
|
||||
serial = i.getInstance(SerialComponent.class);
|
||||
writerFactory = i.getInstance(WriterFactory.class);
|
||||
}
|
||||
@@ -54,8 +51,7 @@ public class ProtocolWriterImplTest extends BriarTestCase {
|
||||
b.set(11);
|
||||
b.set(12);
|
||||
b.set(15);
|
||||
Request r = packetFactory.createRequest(b, 16);
|
||||
w.writeRequest(r);
|
||||
w.writeRequest(new Request(b, 16));
|
||||
// Short user tag 6, 0 as uint7, short bytes with length 2, 0xD959
|
||||
byte[] output = out.toByteArray();
|
||||
assertEquals("C6" + "00" + "92" + "D959",
|
||||
@@ -78,8 +74,7 @@ public class ProtocolWriterImplTest extends BriarTestCase {
|
||||
b.set(9);
|
||||
b.set(11);
|
||||
b.set(12);
|
||||
Request r = packetFactory.createRequest(b, 13);
|
||||
w.writeRequest(r);
|
||||
w.writeRequest(new Request(b, 13));
|
||||
// Short user tag 6, 3 as uint7, short bytes with length 2, 0x59D8
|
||||
byte[] output = out.toByteArray();
|
||||
assertEquals("C6" + "03" + "92" + "59D8",
|
||||
|
||||
@@ -9,7 +9,6 @@ import java.util.BitSet;
|
||||
|
||||
import net.sf.briar.BriarTestCase;
|
||||
import net.sf.briar.api.FormatException;
|
||||
import net.sf.briar.api.protocol.PacketFactory;
|
||||
import net.sf.briar.api.protocol.Request;
|
||||
import net.sf.briar.api.serial.Reader;
|
||||
import net.sf.briar.api.serial.ReaderFactory;
|
||||
@@ -19,8 +18,6 @@ import net.sf.briar.clock.ClockModule;
|
||||
import net.sf.briar.crypto.CryptoModule;
|
||||
import net.sf.briar.serial.SerialModule;
|
||||
|
||||
import org.jmock.Expectations;
|
||||
import org.jmock.Mockery;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.google.inject.Guice;
|
||||
@@ -32,8 +29,6 @@ public class RequestReaderTest extends BriarTestCase {
|
||||
|
||||
private final ReaderFactory readerFactory;
|
||||
private final WriterFactory writerFactory;
|
||||
private final PacketFactory packetFactory;
|
||||
private final Mockery context;
|
||||
|
||||
public RequestReaderTest() throws Exception {
|
||||
super();
|
||||
@@ -41,45 +36,27 @@ public class RequestReaderTest extends BriarTestCase {
|
||||
new ProtocolModule(), new SerialModule());
|
||||
readerFactory = i.getInstance(ReaderFactory.class);
|
||||
writerFactory = i.getInstance(WriterFactory.class);
|
||||
packetFactory = i.getInstance(PacketFactory.class);
|
||||
context = new Mockery();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFormatExceptionIfRequestIsTooLarge() throws Exception {
|
||||
PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
RequestReader requestReader = new RequestReader(packetFactory);
|
||||
|
||||
byte[] b = createRequest(true);
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(REQUEST, requestReader);
|
||||
|
||||
reader.addStructReader(REQUEST, new RequestReader());
|
||||
try {
|
||||
reader.readStruct(REQUEST, Request.class);
|
||||
fail();
|
||||
} catch(FormatException expected) {}
|
||||
context.assertIsSatisfied();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testNoFormatExceptionIfRequestIsMaximumSize() throws Exception {
|
||||
final PacketFactory packetFactory = context.mock(PacketFactory.class);
|
||||
RequestReader requestReader = new RequestReader(packetFactory);
|
||||
final Request request = context.mock(Request.class);
|
||||
context.checking(new Expectations() {{
|
||||
oneOf(packetFactory).createRequest(with(any(BitSet.class)),
|
||||
with(any(int.class)));
|
||||
will(returnValue(request));
|
||||
}});
|
||||
|
||||
byte[] b = createRequest(false);
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
reader.addStructReader(REQUEST, requestReader);
|
||||
|
||||
assertEquals(request, reader.readStruct(REQUEST, Request.class));
|
||||
context.assertIsSatisfied();
|
||||
reader.addStructReader(REQUEST, new RequestReader());
|
||||
reader.readStruct(REQUEST, Request.class);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -104,7 +81,7 @@ public class RequestReaderTest extends BriarTestCase {
|
||||
// Deserialise the request
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
Reader reader = readerFactory.createReader(in);
|
||||
RequestReader requestReader = new RequestReader(packetFactory);
|
||||
RequestReader requestReader = new RequestReader();
|
||||
reader.addStructReader(REQUEST, requestReader);
|
||||
Request r = reader.readStruct(REQUEST, Request.class);
|
||||
BitSet decoded = r.getBitmap();
|
||||
|
||||
@@ -5,8 +5,6 @@ import static net.sf.briar.api.transport.TransportConstants.TAG_LENGTH;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Random;
|
||||
|
||||
import net.sf.briar.BriarTestCase;
|
||||
@@ -161,17 +159,9 @@ public class SimplexProtocolIntegrationTest extends BriarTestCase {
|
||||
MessageListener listener = new MessageListener();
|
||||
db.addListener(listener);
|
||||
// Fake a transport update from Alice
|
||||
TransportUpdate transportUpdate = new TransportUpdate() {
|
||||
|
||||
public Collection<Transport> getTransports() {
|
||||
Transport t = new Transport(transportId);
|
||||
return Collections.singletonList(t);
|
||||
}
|
||||
|
||||
public long getTimestamp() {
|
||||
return System.currentTimeMillis();
|
||||
}
|
||||
};
|
||||
Transport t = new Transport(transportId);
|
||||
TransportUpdate transportUpdate = new TransportUpdate(t,
|
||||
transportVersion);
|
||||
db.receiveTransportUpdate(contactId, transportUpdate);
|
||||
// Create a connection recogniser and recognise the connection
|
||||
ByteArrayInputStream in = new ByteArrayInputStream(b);
|
||||
|
||||
Reference in New Issue
Block a user