/// <exception cref="System.IO.IOException"/> /// <exception cref="System.Exception"/> public virtual void DoShortCircuitReadMetaFileCorruptionTest() { string MethodName = GenericTestUtils.GetMethodName(); Path path1 = new Path("/" + MethodName + ".01.dat"); Path path2 = new Path("/" + MethodName + ".02.dat"); int Seed = unchecked ((int)(0xFADED)); MakeRandomTestFile(path1, BlockSize, true, Seed); EnsureFileReplicasOnStorageType(path1, StorageType.RamDisk); // Create another file with a replica on RAM_DISK, which evicts the first. MakeRandomTestFile(path2, BlockSize, true, Seed); // Sleep for a short time to allow the lazy writer thread to do its job. Sharpen.Thread.Sleep(3 * LazyWriterIntervalSec * 1000); TriggerBlockReport(); // Corrupt the lazy-persisted checksum file, and verify that checksum // verification catches it. EnsureFileReplicasOnStorageType(path1, StorageType.Default); FilePath metaFile = cluster.GetBlockMetadataFile(0, DFSTestUtil.GetFirstBlock(fs, path1)); MiniDFSCluster.CorruptBlock(metaFile); exception.Expect(typeof(ChecksumException)); DFSTestUtil.ReadFileBuffer(fs, path1); }