Remove last-seen and registration lock comparisons
This commit is contained in:
parent
07f9bb112e
commit
67067f1d2d
|
@ -112,6 +112,7 @@ public class AccountsManager {
|
||||||
|
|
||||||
this.migrationComparisonMapper = mapper.copy();
|
this.migrationComparisonMapper = mapper.copy();
|
||||||
migrationComparisonMapper.addMixIn(Account.class, AccountComparisonMixin.class);
|
migrationComparisonMapper.addMixIn(Account.class, AccountComparisonMixin.class);
|
||||||
|
migrationComparisonMapper.addMixIn(Device.class, DeviceComparisonMixin.class);
|
||||||
|
|
||||||
this.dynamicConfigurationManager = dynamicConfigurationManager;
|
this.dynamicConfigurationManager = dynamicConfigurationManager;
|
||||||
this.experimentEnrollmentManager = experimentEnrollmentManager;
|
this.experimentEnrollmentManager = experimentEnrollmentManager;
|
||||||
|
@ -459,10 +460,6 @@ public class AccountsManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!serializedEquals(databaseAccount.getRegistrationLock(), dynamoAccount.getRegistrationLock())) {
|
|
||||||
return Optional.of("registrationLock");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!serializedEquals(databaseAccount.getDevices(), dynamoAccount.getDevices())) {
|
if (!serializedEquals(databaseAccount.getDevices(), dynamoAccount.getDevices())) {
|
||||||
return Optional.of("devices");
|
return Optional.of("devices");
|
||||||
}
|
}
|
||||||
|
@ -533,6 +530,13 @@ public class AccountsManager {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static abstract class DeviceComparisonMixin extends Device {
|
||||||
|
|
||||||
|
@JsonIgnore
|
||||||
|
private long lastSeen;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private boolean serializedEquals(final Object database, final Object dynamo) throws JsonProcessingException {
|
private boolean serializedEquals(final Object database, final Object dynamo) throws JsonProcessingException {
|
||||||
final byte[] databaseSerialized = migrationComparisonMapper.writeValueAsBytes(database);
|
final byte[] databaseSerialized = migrationComparisonMapper.writeValueAsBytes(database);
|
||||||
final byte[] dynamoSerialized = migrationComparisonMapper.writeValueAsBytes(dynamo);
|
final byte[] dynamoSerialized = migrationComparisonMapper.writeValueAsBytes(dynamo);
|
||||||
|
|
|
@ -41,6 +41,7 @@ import org.whispersystems.textsecuregcm.storage.Account;
|
||||||
import org.whispersystems.textsecuregcm.storage.Accounts;
|
import org.whispersystems.textsecuregcm.storage.Accounts;
|
||||||
import org.whispersystems.textsecuregcm.storage.AccountsDynamoDb;
|
import org.whispersystems.textsecuregcm.storage.AccountsDynamoDb;
|
||||||
import org.whispersystems.textsecuregcm.storage.AccountsManager;
|
import org.whispersystems.textsecuregcm.storage.AccountsManager;
|
||||||
|
import org.whispersystems.textsecuregcm.storage.Device;
|
||||||
import org.whispersystems.textsecuregcm.storage.DynamicConfigurationManager;
|
import org.whispersystems.textsecuregcm.storage.DynamicConfigurationManager;
|
||||||
import org.whispersystems.textsecuregcm.storage.KeysDynamoDb;
|
import org.whispersystems.textsecuregcm.storage.KeysDynamoDb;
|
||||||
import org.whispersystems.textsecuregcm.storage.MessagesManager;
|
import org.whispersystems.textsecuregcm.storage.MessagesManager;
|
||||||
|
@ -409,6 +410,37 @@ class AccountsManagerTest {
|
||||||
|
|
||||||
assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
||||||
|
{
|
||||||
|
Device device1 = new Device();
|
||||||
|
device1.setId(1L);
|
||||||
|
|
||||||
|
a1.addDevice(device1);
|
||||||
|
|
||||||
|
assertEquals(Optional.of("devices"), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
||||||
|
Device device2 = new Device();
|
||||||
|
device2.setId(1L);
|
||||||
|
|
||||||
|
a2.addDevice(device2);
|
||||||
|
|
||||||
|
assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
||||||
|
device1.setLastSeen(1L);
|
||||||
|
|
||||||
|
assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
||||||
|
device1.setName("name");
|
||||||
|
|
||||||
|
assertEquals(Optional.of("devices"), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
||||||
|
a1.removeDevice(1L);
|
||||||
|
a2.removeDevice(1L);
|
||||||
|
|
||||||
|
assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(Optional.empty(), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
||||||
a1.setDynamoDbMigrationVersion(1);
|
a1.setDynamoDbMigrationVersion(1);
|
||||||
|
|
||||||
assertEquals(Optional.of("migrationVersion"), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
assertEquals(Optional.of("migrationVersion"), accountsManager.compareAccounts(Optional.of(a1), Optional.of(a2)));
|
||||||
|
|
Loading…
Reference in New Issue