/// <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());
                }
            }
        }
Example #2
0
 /// <summary>Given an instance of FSDirectory.FSInputStream, this method returns
 /// true if the underlying file descriptor is valid, and false otherwise.
 /// This can be used to determine if the OS file has been closed.
 /// The descriptor becomes invalid when the non-clone instance of the
 /// FSInputStream that owns this descriptor is closed. However, the
 /// descriptor may possibly become invalid in other ways as well.
 /// </summary>
 public static bool IsFSInputStreamOpen(InputStream is_Renamed)
 {
     if (isFSInputStream(is_Renamed))
     {
         FSInputStream fis = (FSInputStream)is_Renamed;
         return(fis.IsFDValid());
     }
     else
     {
         return(false);
     }
 }
Example #3
0
        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();
        }
Example #4
0
        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();
        }
Example #5
0
        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();
        }