COMPRESSION = None
PASSWORD = None
- FAILURES = 0
+ FAILURES = 0 # files that could not be restored
+ MISMATCHES = 0 # files that were restored but corrupted
CORRUPT = corrupt_payload_start
assert len (failed) == self.FAILURES
# with one file missing
- missing = []
+ missing = []
+ mismatch = []
for key, value in self.hash.items ():
kkey = "%s/%s" % (self.dst_path, key)
if os.path.exists (kkey):
- assert value == self.md5sum (kkey)
+ if value != self.md5sum (kkey):
+ mismatch.append (key)
else:
missing.append (key)
- assert len (missing) == self.FAILURES
+ assert len (missing) == self.FAILURES
+ assert len (mismatch) == self.MISMATCHES
shutil.rmtree (self.dst_path)
class RecoverCorruptPayloadTest (RecoverTest):
COMPRESSION = None
PASSWORD = None
- FAILURES = 0
+ FAILURES = 0 # tarfile will restore but corrupted, as
+ MISMATCHES = 1 # revealed by the hash
class RecoverCorruptPayloadGZTest (RecoverTest):
COMPRESSION = "#gz"
PASSWORD = None
FAILURES = 1
+ MISMATCHES = 0
class RecoverCorruptPayloadGZAESTest (RecoverTest):
COMPRESSION = "#gz"
PASSWORD = TEST_PASSWORD
FAILURES = 1
+ MISMATCHES = 0
class RecoverCorruptHeaderTest (RecoverTest):
PASSWORD = None
FAILURES = 1
CORRUPT = corrupt_header
+ MISMATCHES = 0
class RecoverCorruptHeaderGZTest (RecoverTest):
PASSWORD = None
FAILURES = 1
CORRUPT = corrupt_header
+ MISMATCHES = 0
class RecoverCorruptHeaderGZAESTest (RecoverTest):
PASSWORD = TEST_PASSWORD
FAILURES = 1
CORRUPT = corrupt_header
+ MISMATCHES = 0
class RecoverCorruptEntireHeaderTest (RecoverTest):
PASSWORD = None
FAILURES = 1
CORRUPT = corrupt_entire_header
+ MISMATCHES = 0
class RecoverCorruptEntireHeaderGZTest (RecoverTest):
PASSWORD = None
FAILURES = 1
CORRUPT = corrupt_entire_header
+ MISMATCHES = 0
class RecoverCorruptEntireHeaderGZAESTest (RecoverTest):
PASSWORD = TEST_PASSWORD
FAILURES = 1
CORRUPT = corrupt_entire_header
+ MISMATCHES = 0