/// <exception cref="System.IO.IOException"/> private void VerifyDir(DistributedFileSystem dfs, Path dir, CRC32 overallChecksum ) { FileStatus[] fileArr = dfs.ListStatus(dir); SortedDictionary <Path, bool> fileMap = new SortedDictionary <Path, bool>(); foreach (FileStatus file in fileArr) { fileMap[file.GetPath()] = Sharpen.Extensions.ValueOf(file.IsDirectory()); } for (IEnumerator <Path> it = fileMap.Keys.GetEnumerator(); it.HasNext();) { Path path = it.Next(); bool isDir = fileMap[path]; string pathName = path.ToUri().GetPath(); overallChecksum.Update(Sharpen.Runtime.GetBytesForString(pathName)); if (isDir) { VerifyDir(dfs, path, overallChecksum); } else { // this is not a directory. Checksum the file data. CRC32 fileCRC = new CRC32(); FSInputStream @in = DfsOpenFileWithRetries(dfs, pathName); byte[] buf = new byte[4096]; int nRead = 0; while ((nRead = @in.Read(buf, 0, buf.Length)) > 0) { fileCRC.Update(buf, 0, nRead); } VerifyChecksum(pathName, fileCRC.GetValue()); } } }
public virtual void TestCopyStreamTarget() { FSDataOutputStream @out = Org.Mockito.Mockito.Mock <FSDataOutputStream>(); WhenFsCreate().ThenReturn(@out); Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(tmpPath))).ThenReturn(fileStat); Org.Mockito.Mockito.When(mockFs.Rename(Eq(tmpPath), Eq(path))).ThenReturn(true); FSInputStream @in = Org.Mockito.Mockito.Mock <FSInputStream>(); Org.Mockito.Mockito.When(@in.Read(Any <byte[]>(), AnyInt(), AnyInt())).ThenReturn( -1); TryCopyStream(@in, true); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Delete(Eq(path), AnyBoolean()); Org.Mockito.Mockito.Verify(mockFs).Rename(Eq(tmpPath), Eq(path)); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Delete(Eq(tmpPath ), AnyBoolean()); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Close(); }
public virtual void TestInterruptedCopyBytes() { FSDataOutputStream @out = Org.Mockito.Mockito.Mock <FSDataOutputStream>(); WhenFsCreate().ThenReturn(@out); Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(tmpPath))).ThenReturn(fileStat); FSInputStream @in = Org.Mockito.Mockito.Mock <FSInputStream>(); // make IOUtils.copyBytes fail Org.Mockito.Mockito.When(@in.Read(Any <byte[]>(), AnyInt(), AnyInt())).ThenThrow(new ThreadInterruptedException()); TryCopyStream(@in, false); Org.Mockito.Mockito.Verify(mockFs).Delete(Eq(tmpPath), AnyBoolean()); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Rename(Any <Path>( ), Any <Path>()); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Delete(Eq(path), AnyBoolean()); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Close(); }
public virtual void TestCopyStreamTargetExists() { FSDataOutputStream @out = Org.Mockito.Mockito.Mock <FSDataOutputStream>(); WhenFsCreate().ThenReturn(@out); Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(path))).ThenReturn(fileStat); target.RefreshStatus(); // so it's updated as existing cmd.SetOverwrite(true); Org.Mockito.Mockito.When(mockFs.GetFileStatus(Eq(tmpPath))).ThenReturn(fileStat); Org.Mockito.Mockito.When(mockFs.Delete(Eq(path), Eq(false))).ThenReturn(true); Org.Mockito.Mockito.When(mockFs.Rename(Eq(tmpPath), Eq(path))).ThenReturn(true); FSInputStream @in = Org.Mockito.Mockito.Mock <FSInputStream>(); Org.Mockito.Mockito.When(@in.Read(Any <byte[]>(), AnyInt(), AnyInt())).ThenReturn( -1); TryCopyStream(@in, true); Org.Mockito.Mockito.Verify(mockFs).Delete(Eq(path), AnyBoolean()); Org.Mockito.Mockito.Verify(mockFs).Rename(Eq(tmpPath), Eq(path)); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Delete(Eq(tmpPath ), AnyBoolean()); Org.Mockito.Mockito.Verify(mockFs, Org.Mockito.Mockito.Never()).Close(); }