コード例 #1
0
        /// <exception cref="System.IO.IOException"/>
        public override void CheckFileLinkStatus(string path, FSTestWrapper.FileType expectedType
                                                 )
        {
            FileStatus s = fs.GetFileLinkStatus(new Path(path));

            NUnit.Framework.Assert.IsNotNull(s);
            if (expectedType == FSTestWrapper.FileType.isDir)
            {
                Assert.True(s.IsDirectory());
            }
            else
            {
                if (expectedType == FSTestWrapper.FileType.isFile)
                {
                    Assert.True(s.IsFile());
                }
                else
                {
                    if (expectedType == FSTestWrapper.FileType.isSymlink)
                    {
                        Assert.True(s.IsSymlink());
                    }
                }
            }
            Assert.Equal(fs.MakeQualified(new Path(path)), s.GetPath());
        }
コード例 #2
0
        /// <exception cref="System.IO.IOException"/>
        public static void CheckFileStatus(FileSystem aFs, string path, FileSystemTestHelper.FileType
                                           expectedType)
        {
            FileStatus s = aFs.GetFileStatus(new Path(path));

            NUnit.Framework.Assert.IsNotNull(s);
            if (expectedType == FileSystemTestHelper.FileType.isDir)
            {
                Assert.True(s.IsDirectory());
            }
            else
            {
                if (expectedType == FileSystemTestHelper.FileType.isFile)
                {
                    Assert.True(s.IsFile());
                }
                else
                {
                    if (expectedType == FileSystemTestHelper.FileType.isSymlink)
                    {
                        Assert.True(s.IsSymlink());
                    }
                }
            }
            Assert.Equal(aFs.MakeQualified(new Path(path)), s.GetPath());
        }
コード例 #3
0
        /// <summary>Validates the toString method for FileStatus.</summary>
        /// <param name="fileStatus">FileStatus to be validated</param>
        /// <exception cref="System.IO.IOException"/>
        private void ValidateToString(FileStatus fileStatus)
        {
            StringBuilder expected = new StringBuilder();

            expected.Append("FileStatus{");
            expected.Append("path=").Append(fileStatus.GetPath()).Append("; ");
            expected.Append("isDirectory=").Append(fileStatus.IsDirectory()).Append("; ");
            if (!fileStatus.IsDirectory())
            {
                expected.Append("length=").Append(fileStatus.GetLen()).Append("; ");
                expected.Append("replication=").Append(fileStatus.GetReplication()).Append("; ");
                expected.Append("blocksize=").Append(fileStatus.GetBlockSize()).Append("; ");
            }
            expected.Append("modification_time=").Append(fileStatus.GetModificationTime()).Append
                ("; ");
            expected.Append("access_time=").Append(fileStatus.GetAccessTime()).Append("; ");
            expected.Append("owner=").Append(fileStatus.GetOwner()).Append("; ");
            expected.Append("group=").Append(fileStatus.GetGroup()).Append("; ");
            expected.Append("permission=").Append(fileStatus.GetPermission()).Append("; ");
            if (fileStatus.IsSymlink())
            {
                expected.Append("isSymlink=").Append(true).Append("; ");
                expected.Append("symlink=").Append(fileStatus.GetSymlink()).Append("}");
            }
            else
            {
                expected.Append("isSymlink=").Append(false).Append("}");
            }
            Assert.Equal(expected.ToString(), fileStatus.ToString());
        }
コード例 #4
0
 /// <summary>Constructor</summary>
 /// <param name="stat">a file status</param>
 /// <param name="locations">a file's block locations</param>
 /// <exception cref="System.IO.IOException"/>
 public LocatedFileStatus(FileStatus stat, BlockLocation[] locations)
     : this(stat.GetLen(), stat.IsDirectory(), stat.GetReplication(), stat.GetBlockSize
                (), stat.GetModificationTime(), stat.GetAccessTime(), stat.GetPermission(), stat
            .GetOwner(), stat.GetGroup(), null, stat.GetPath(), locations)
 {
     if (stat.IsSymlink())
     {
         SetSymlink(stat.GetSymlink());
     }
 }
コード例 #5
0
        // Expected
        /// <exception cref="System.IO.IOException"/>
        public virtual void TestDanglingLink()
        {
            Assume.AssumeTrue(!Path.Windows);
            Path fileAbs  = new Path(TestBaseDir1() + "/file");
            Path fileQual = new Path(TestURI().ToString(), fileAbs);
            Path link     = new Path(TestBaseDir1() + "/linkToFile");
            Path linkQual = new Path(TestURI().ToString(), link.ToString());

            wrapper.CreateSymlink(fileAbs, link, false);
            // Deleting the link using FileContext currently fails because
            // resolve looks up LocalFs rather than RawLocalFs for the path
            // so we call ChecksumFs delete (which doesn't delete dangling
            // links) instead of delegating to delete in RawLocalFileSystem
            // which deletes via fullyDelete. testDeleteLink above works
            // because the link is not dangling.
            //assertTrue(fc.delete(link, false));
            FileUtil.FullyDelete(new FilePath(link.ToUri().GetPath()));
            wrapper.CreateSymlink(fileAbs, link, false);
            try
            {
                wrapper.GetFileStatus(link);
                NUnit.Framework.Assert.Fail("Got FileStatus for dangling link");
            }
            catch (FileNotFoundException)
            {
            }
            // Expected. File's exists method returns false for dangling links
            // We can stat a dangling link
            UserGroupInformation user = UserGroupInformation.GetCurrentUser();
            FileStatus           fsd  = wrapper.GetFileLinkStatus(link);

            Assert.Equal(fileQual, fsd.GetSymlink());
            Assert.True(fsd.IsSymlink());
            NUnit.Framework.Assert.IsFalse(fsd.IsDirectory());
            Assert.Equal(user.GetUserName(), fsd.GetOwner());
            // Compare against user's primary group
            Assert.Equal(user.GetGroupNames()[0], fsd.GetGroup());
            Assert.Equal(linkQual, fsd.GetPath());
            // Accessing the link
            try
            {
                ReadFile(link);
                NUnit.Framework.Assert.Fail("Got FileStatus for dangling link");
            }
            catch (FileNotFoundException)
            {
            }
            // Ditto.
            // Creating the file makes the link work
            CreateAndWriteFile(fileAbs);
            wrapper.GetFileStatus(link);
        }
コード例 #6
0
        /// <exception cref="System.IO.IOException"/>
        public override FileStatus GetFileLinkStatus(Path f)
        {
            FileStatus status = fsImpl.GetFileLinkStatus(f);

            // FileSystem#getFileLinkStatus qualifies the link target
            // AbstractFileSystem needs to return it plain since it's qualified
            // in FileContext, so re-get and set the plain target
            if (status.IsSymlink())
            {
                status.SetSymlink(fsImpl.GetLinkTarget(f));
            }
            return(status);
        }
コード例 #7
0
        /// <summary>Return a FileStatus representing the given path.</summary>
        /// <remarks>
        /// Return a FileStatus representing the given path. If the path refers
        /// to a symlink return a FileStatus representing the link rather than
        /// the object the link refers to.
        /// </remarks>
        /// <exception cref="System.IO.IOException"/>
        public override FileStatus GetFileLinkStatus(Path f)
        {
            FileStatus fi = GetFileLinkStatusInternal(f, false);

            // getFileLinkStatus is supposed to return a symlink with a
            // qualified path
            if (fi.IsSymlink())
            {
                Path targetQual = FSLinkResolver.QualifySymlinkTarget(this.GetUri(), fi.GetPath()
                                                                      , fi.GetSymlink());
                fi.SetSymlink(targetQual);
            }
            return(fi);
        }
コード例 #8
0
 /// <summary>Validate the accessors for FileStatus.</summary>
 /// <param name="fileStatus">FileStatus to checked</param>
 /// <param name="length">expected length</param>
 /// <param name="isdir">expected isDirectory</param>
 /// <param name="replication">expected replication</param>
 /// <param name="blocksize">expected blocksize</param>
 /// <param name="mtime">expected modification time</param>
 /// <param name="atime">expected access time</param>
 /// <param name="permission">expected permission</param>
 /// <param name="owner">expected owner</param>
 /// <param name="group">expected group</param>
 /// <param name="symlink">expected symlink</param>
 /// <param name="path">expected path</param>
 /// <exception cref="System.IO.IOException"/>
 private void ValidateAccessors(FileStatus fileStatus, long length, bool isdir, int
                                replication, long blocksize, long mtime, long atime, FsPermission permission, string
                                owner, string group, Path symlink, Path path)
 {
     Assert.Equal(length, fileStatus.GetLen());
     Assert.Equal(isdir, fileStatus.IsDirectory());
     Assert.Equal(replication, fileStatus.GetReplication());
     Assert.Equal(blocksize, fileStatus.GetBlockSize());
     Assert.Equal(mtime, fileStatus.GetModificationTime());
     Assert.Equal(atime, fileStatus.GetAccessTime());
     Assert.Equal(permission, fileStatus.GetPermission());
     Assert.Equal(owner, fileStatus.GetOwner());
     Assert.Equal(group, fileStatus.GetGroup());
     if (symlink == null)
     {
         NUnit.Framework.Assert.IsFalse(fileStatus.IsSymlink());
     }
     else
     {
         Assert.True(fileStatus.IsSymlink());
         Assert.Equal(symlink, fileStatus.GetSymlink());
     }
     Assert.Equal(path, fileStatus.GetPath());
 }