generic/574: fix sporadic failure with test_dummy_encryption
authorEric Biggers <ebiggers@google.com>
Tue, 18 Aug 2020 06:30:23 +0000 (23:30 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 30 Aug 2020 16:26:44 +0000 (00:26 +0800)
When the "test_dummy_encryption" mount option is specified, the
fs-verity file corruption test generic/574 is flaky; it fails about 1%
of the time.  This happens because in the three test cases where a
single byte of the test file is corrupted, sometimes the new byte
happens to be the same as the original.  This is specific to
test_dummy_encryption because the encrypted data is nondeterministic
(and appears random), unlike the unencrypted data.

Fix this by corrupting 5 bytes instead of 1, so that the probability of
failure becomes effectively zero.

Signed-off-by: Eric Biggers <ebiggers@google.com>
tests/generic/574
tests/generic/574.out

index 246f0858836c47b9882481d264cff63cb52cee7d..da776a2407f1084068c05cc5f7ed07859b93a222 100755 (executable)
@@ -135,10 +135,15 @@ corruption_test()
        fi
 }
 
-corruption_test 131072 0 1
-corruption_test 131072 4095 1
+# Note: these tests just overwrite some bytes without checking their original
+# values.  Therefore, make sure to overwrite at least 5 or so bytes, to make it
+# nearly guaranteed that there will be a change -- even when the test file is
+# encrypted due to the test_dummy_encryption mount option being specified.
+
+corruption_test 131072 0 5
+corruption_test 131072 4091 5
 corruption_test 131072 65536 65536
-corruption_test 131072 131071 1
+corruption_test 131072 131067 5
 
 # Non-zeroed bytes in the final partial block beyond EOF should cause reads to
 # fail too.  Such bytes would be visible via mmap().
index 5b304c832ba29b28f26bca976dc29940aa7bc0f9..d43474c594afd50a2549b30f403d49e63b0e609d 100644 (file)
@@ -1,6 +1,6 @@
 QA output created by 574
 
-# Corruption test: file_len=131072 zap_offset=0 zap_len=1
+# Corruption test: file_len=131072 zap_offset=0 zap_len=5
 0dfbe8aa4c20b52e1b8bf3cb6cbdf193  SCRATCH_MNT/file.fsv
 Corrupting bytes...
 Validating corruption (reading full file)...
@@ -14,7 +14,7 @@ Bus error
 Validating corruption (reading just corrupted part via mmap)...
 Bus error
 
-# Corruption test: file_len=131072 zap_offset=4095 zap_len=1
+# Corruption test: file_len=131072 zap_offset=4091 zap_len=5
 0dfbe8aa4c20b52e1b8bf3cb6cbdf193  SCRATCH_MNT/file.fsv
 Corrupting bytes...
 Validating corruption (reading full file)...
@@ -42,7 +42,7 @@ Bus error
 Validating corruption (reading just corrupted part via mmap)...
 Bus error
 
-# Corruption test: file_len=131072 zap_offset=131071 zap_len=1
+# Corruption test: file_len=131072 zap_offset=131067 zap_len=5
 0dfbe8aa4c20b52e1b8bf3cb6cbdf193  SCRATCH_MNT/file.fsv
 Corrupting bytes...
 Validating corruption (reading full file)...