mirror of
https://github.com/signalapp/Signal-Server
synced 2026-04-26 15:13:18 +01:00
Use config option to tune reconciliation instead of auto-tuning
the COUNT query on the accounts db is too heavyweight and risky to justify an auto-tuning reconciliation cycle
This commit is contained in:
@@ -35,7 +35,6 @@ public class DirectoryReconcilerTest {
|
||||
private static final String VALID_NUMBER = "valid";
|
||||
private static final String INACTIVE_NUMBER = "inactive";
|
||||
|
||||
private static final long ACCOUNT_COUNT = 0L;
|
||||
private static final long INTERVAL_MS = 30_000L;
|
||||
|
||||
private final Account account = mock(Account.class);
|
||||
@@ -45,7 +44,7 @@ public class DirectoryReconcilerTest {
|
||||
private final DirectoryManager directoryManager = mock(DirectoryManager.class);
|
||||
private final DirectoryReconciliationClient reconciliationClient = mock(DirectoryReconciliationClient.class);
|
||||
private final DirectoryReconciliationCache reconciliationCache = mock(DirectoryReconciliationCache.class);
|
||||
private final DirectoryReconciler directoryReconciler = new DirectoryReconciler(reconciliationClient, reconciliationCache, directoryManager, accounts);
|
||||
private final DirectoryReconciler directoryReconciler = new DirectoryReconciler(reconciliationClient, reconciliationCache, directoryManager, accounts, 1000, INTERVAL_MS);
|
||||
|
||||
private final DirectoryReconciliationResponse successResponse = new DirectoryReconciliationResponse(DirectoryReconciliationResponse.Status.OK);
|
||||
private final DirectoryReconciliationResponse notFoundResponse = new DirectoryReconciliationResponse(DirectoryReconciliationResponse.Status.MISSING);
|
||||
@@ -64,7 +63,6 @@ public class DirectoryReconcilerTest {
|
||||
when(accounts.getAllFrom(anyInt())).thenReturn(Arrays.asList(account, inactiveAccount));
|
||||
when(accounts.getAllFrom(eq(VALID_NUMBER), anyInt())).thenReturn(Arrays.asList(inactiveAccount));
|
||||
when(accounts.getAllFrom(eq(INACTIVE_NUMBER), anyInt())).thenReturn(Collections.emptyList());
|
||||
when(accounts.getCount()).thenReturn(ACCOUNT_COUNT);
|
||||
|
||||
when(reconciliationClient.sendChunk(any())).thenReturn(successResponse);
|
||||
|
||||
@@ -73,41 +71,6 @@ public class DirectoryReconcilerTest {
|
||||
when(reconciliationCache.isAccelerated()).thenReturn(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetUncachedAccountCount() {
|
||||
when(reconciliationCache.getCachedAccountCount()).thenReturn(Optional.absent());
|
||||
|
||||
long accountCount = directoryReconciler.getAccountCount();
|
||||
|
||||
assertThat(accountCount).isEqualTo(ACCOUNT_COUNT);
|
||||
|
||||
verify(accounts, times(1)).getCount();
|
||||
|
||||
verify(reconciliationCache, times(1)).getCachedAccountCount();
|
||||
verify(reconciliationCache, times(1)).setCachedAccountCount(eq(ACCOUNT_COUNT));
|
||||
|
||||
verifyNoMoreInteractions(directoryManager);
|
||||
verifyNoMoreInteractions(accounts);
|
||||
verifyNoMoreInteractions(reconciliationClient);
|
||||
verifyNoMoreInteractions(reconciliationCache);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetCachedAccountCount() {
|
||||
when(reconciliationCache.getCachedAccountCount()).thenReturn(Optional.of(ACCOUNT_COUNT));
|
||||
|
||||
long accountCount = directoryReconciler.getAccountCount();
|
||||
|
||||
assertThat(accountCount).isEqualTo(ACCOUNT_COUNT);
|
||||
|
||||
verify(reconciliationCache, times(1)).getCachedAccountCount();
|
||||
|
||||
verifyNoMoreInteractions(directoryManager);
|
||||
verifyNoMoreInteractions(accounts);
|
||||
verifyNoMoreInteractions(reconciliationClient);
|
||||
verifyNoMoreInteractions(reconciliationCache);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testValid() {
|
||||
long delayMs = directoryReconciler.doPeriodicWork(INTERVAL_MS);
|
||||
|
||||
Reference in New Issue
Block a user