1717
1818package com .netflix .priam .backup ;
1919
20+ import com .google .common .collect .ImmutableMap ;
21+ import com .google .common .collect .ImmutableSet ;
22+ import com .google .common .truth .Truth ;
2023import com .google .inject .Guice ;
2124import com .google .inject .Injector ;
2225import com .netflix .priam .backup .AbstractBackupPath .BackupFileType ;
3134import java .nio .file .Paths ;
3235import java .time .Instant ;
3336import java .time .temporal .ChronoUnit ;
34- import java .util .Date ;
35- import java .util .List ;
36- import java .util .Optional ;
37+ import java .util .*;
3738import mockit .Mock ;
3839import mockit .MockUp ;
3940import org .apache .commons .io .FileUtils ;
@@ -91,34 +92,43 @@ public void cleanup() {
9192 }
9293
9394 @ Test
94- public void noBackup () throws Exception {
95- Optional < BackupVerificationResult > backupVerificationResultOptinal =
96- backupVerification .verifyLatestBackup (
95+ public void noBackup () {
96+ ImmutableMap < BackupMetadata , ImmutableSet < String >> missingFiles =
97+ backupVerification .findMissingBackupFilesInRange (
9798 BackupVersion .SNAPSHOT_BACKUP ,
9899 false ,
99100 new DateRange (Instant .now (), Instant .now ()));
100- Assert . assertFalse ( backupVerificationResultOptinal . isPresent () );
101+ Truth . assertThat ( missingFiles ). isEmpty ( );
101102
102- backupVerificationResultOptinal =
103- backupVerification .verifyLatestBackup (
103+ missingFiles =
104+ backupVerification .findMissingBackupFilesInRange (
104105 BackupVersion .SNAPSHOT_META_SERVICE ,
105106 false ,
106107 new DateRange (Instant .now (), Instant .now ()));
107- Assert . assertFalse ( backupVerificationResultOptinal . isPresent () );
108+ Truth . assertThat ( missingFiles ). isEmpty ( );
108109 }
109110
110111 @ Test
111112 public void noBackupDateRange () throws Exception {
112- List <BackupMetadata > backupVerificationResults =
113- backupVerification .verifyBackupsInRange (
114- BackupVersion .SNAPSHOT_BACKUP , new DateRange (Instant .now (), Instant .now ()));
115- Assert .assertFalse (backupVerificationResults .size () > 0 );
113+ long foundBackups =
114+ backupVerification
115+ .findMissingBackupFilesInRange (
116+ BackupVersion .SNAPSHOT_BACKUP ,
117+ false /* force */ ,
118+ new DateRange (Instant .now (), Instant .now ()))
119+ .entrySet ()
120+ .size ();
121+ Truth .assertThat (foundBackups ).isEqualTo (0L );
116122
117- backupVerificationResults =
118- backupVerification .verifyBackupsInRange (
119- BackupVersion .SNAPSHOT_META_SERVICE ,
120- new DateRange (Instant .now (), Instant .now ()));
121- Assert .assertFalse (backupVerificationResults .size () > 0 );
123+ foundBackups =
124+ backupVerification
125+ .findMissingBackupFilesInRange (
126+ BackupVersion .SNAPSHOT_META_SERVICE ,
127+ false /* force */ ,
128+ new DateRange (Instant .now (), Instant .now ()))
129+ .entrySet ()
130+ .size ();
131+ Truth .assertThat (foundBackups ).isEqualTo (0L );
122132 }
123133
124134 private void setUp () throws Exception {
@@ -152,13 +162,12 @@ private void setUp() throws Exception {
152162 public void verifyBackupVersion1 () throws Exception {
153163 setUp ();
154164 // Verify for backup version 1.0
155- Optional < BackupVerificationResult > backupVerificationResultOptinal =
156- backupVerification .verifyLatestBackup (
165+ ImmutableMap < BackupMetadata , ImmutableSet < String >> missingFiles =
166+ backupVerification .findMissingBackupFilesInRange (
157167 BackupVersion .SNAPSHOT_BACKUP ,
158168 false ,
159169 new DateRange (backupDate + "," + backupDate ));
160- Assert .assertTrue (backupVerificationResultOptinal .isPresent ());
161- Assert .assertEquals (Instant .EPOCH , backupVerificationResultOptinal .get ().snapshotInstant );
170+ Truth .assertThat (missingFiles .values ().stream ().allMatch (Set ::isEmpty )).isTrue ();
162171 Optional <BackupMetadata > backupMetadata =
163172 backupStatusMgr
164173 .getLatestBackupMetadata (
@@ -184,12 +193,17 @@ public void verifyBackupVersion1() throws Exception {
184193 public void verifyBackupVersion1DateRange () throws Exception {
185194 setUp ();
186195 // Verify for backup version 1.0
187- List <BackupMetadata > backupVerificationResults =
188- backupVerification .verifyBackupsInRange (
189- BackupVersion .SNAPSHOT_BACKUP ,
190- new DateRange (backupDate + "," + backupDateEnd ));
191- Assert .assertTrue (!backupVerificationResults .isEmpty ());
192- Assert .assertTrue (backupVerificationResults .size () == numFakeBackups );
196+ long missingFilesCount =
197+ backupVerification
198+ .findMissingBackupFilesInRange (
199+ BackupVersion .SNAPSHOT_BACKUP ,
200+ false /* force */ ,
201+ new DateRange (backupDate + "," + backupDateEnd ))
202+ .values ()
203+ .stream ()
204+ .filter (AbstractCollection ::isEmpty )
205+ .count ();
206+ Truth .assertThat (missingFilesCount ).isEqualTo (numFakeBackups );
193207 List <BackupMetadata > backupMetadata =
194208 backupStatusMgr .getLatestBackupMetadata (
195209 BackupVersion .SNAPSHOT_BACKUP ,
@@ -211,14 +225,12 @@ public void verifyBackupVersion1DateRange() throws Exception {
211225 public void verifyBackupVersion2 () throws Exception {
212226 setUp ();
213227 // Verify for backup version 2.0
214- Optional < BackupVerificationResult > backupVerificationResultOptinal =
215- backupVerification .verifyLatestBackup (
228+ ImmutableMap < BackupMetadata , ImmutableSet < String >> missingFiles =
229+ backupVerification .findMissingBackupFilesInRange (
216230 BackupVersion .SNAPSHOT_META_SERVICE ,
217231 false ,
218232 new DateRange (backupDate + "," + backupDate ));
219- Assert .assertTrue (backupVerificationResultOptinal .isPresent ());
220- Assert .assertEquals (Instant .EPOCH , backupVerificationResultOptinal .get ().snapshotInstant );
221- Assert .assertEquals ("some_random" , backupVerificationResultOptinal .get ().remotePath );
233+ Truth .assertThat (missingFiles .values ().stream ().allMatch (Set ::isEmpty )).isTrue ();
222234
223235 Optional <BackupMetadata > backupMetadata =
224236 backupStatusMgr
@@ -230,21 +242,6 @@ public void verifyBackupVersion2() throws Exception {
230242 Assert .assertTrue (backupMetadata .isPresent ());
231243 Assert .assertNotNull (backupMetadata .get ().getLastValidated ());
232244
233- // Retry the verification, it should not try and re-verify
234- backupVerificationResultOptinal =
235- backupVerification .verifyLatestBackup (
236- BackupVersion .SNAPSHOT_META_SERVICE ,
237- false ,
238- new DateRange (backupDate + "," + backupDate ));
239- Assert .assertTrue (backupVerificationResultOptinal .isPresent ());
240- Assert .assertEquals (
241- DateUtil .parseInstant (backupDate ),
242- backupVerificationResultOptinal .get ().snapshotInstant );
243- Assert .assertNotEquals ("some_random" , backupVerificationResultOptinal .get ().remotePath );
244- Assert .assertEquals (
245- location .subpath (1 , location .getNameCount ()).toString (),
246- backupVerificationResultOptinal .get ().remotePath );
247-
248245 backupMetadata =
249246 backupStatusMgr
250247 .getLatestBackupMetadata (
@@ -260,12 +257,17 @@ public void verifyBackupVersion2() throws Exception {
260257 public void verifyBackupVersion2DateRange () throws Exception {
261258 setUp ();
262259 // Verify for backup version 2.0
263- List <BackupMetadata > backupVerificationResults =
264- backupVerification .verifyBackupsInRange (
265- BackupVersion .SNAPSHOT_META_SERVICE ,
266- new DateRange (backupDate + "," + backupDateEnd ));
267- Assert .assertTrue (!backupVerificationResults .isEmpty ());
268- Assert .assertTrue (backupVerificationResults .size () == numFakeBackups );
260+ long missingFilesCount =
261+ backupVerification
262+ .findMissingBackupFilesInRange (
263+ BackupVersion .SNAPSHOT_META_SERVICE ,
264+ false /* force */ ,
265+ new DateRange (backupDate + "," + backupDateEnd ))
266+ .values ()
267+ .stream ()
268+ .filter (AbstractCollection ::isEmpty )
269+ .count ();
270+ Truth .assertThat (missingFilesCount ).isEqualTo (numFakeBackups );
269271 List <BackupMetadata > backupMetadata =
270272 backupStatusMgr .getLatestBackupMetadata (
271273 BackupVersion .SNAPSHOT_META_SERVICE ,
0 commit comments