Add a crawler to recalculate quota usage

This commit is contained in:
Ravi Khadiwala
2025-05-28 12:51:56 -05:00
committed by ravi-signal
parent 4dc3b19d2a
commit a7ea42adc3
6 changed files with 191 additions and 6 deletions

View File

@@ -642,6 +642,30 @@ public class BackupManagerTest {
}
}
@Test
public void requestRecalculation() {
final AuthenticatedBackupUser backupUser = backupUser(TestRandomUtil.nextBytes(16), BackupCredentialType.MEDIA, BackupLevel.PAID);
final String backupMediaPrefix = "%s/%s/".formatted(backupUser.backupDir(), backupUser.mediaDir());
final UsageInfo oldUsage = new UsageInfo(1000, 100);
final UsageInfo newUsage = new UsageInfo(2000, 200);
testClock.pin(Instant.ofEpochSecond(123));
backupsDb.setMediaUsage(backupUser, oldUsage).join();
when(remoteStorageManager.calculateBytesUsed(eq(backupMediaPrefix)))
.thenReturn(CompletableFuture.completedFuture(newUsage));
final StoredBackupAttributes attrs = backupManager.listBackupAttributes(1, Schedulers.immediate()).single().block();
testClock.pin(Instant.ofEpochSecond(456));
assertThat(backupManager.recalculateQuota(attrs).toCompletableFuture().join())
.get()
.isEqualTo(new BackupManager.RecalculationResult(oldUsage, newUsage));
// backupsDb should have the new value
final BackupsDb.TimestampedUsageInfo info = backupsDb.getMediaUsage(backupUser).join();
assertThat(info.lastRecalculationTime()).isEqualTo(Instant.ofEpochSecond(456));
assertThat(info.usageInfo()).isEqualTo(newUsage);
}
@ParameterizedTest
@ValueSource(strings = {"", "cursor"})
public void list(final String cursorVal) {