/// <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()); }
private FileStatus DeprecatedGetFileLinkStatusInternal(Path f) { string target = FileUtil.ReadLink(new FilePath(f.ToString())); try { FileStatus fs = GetFileStatus(f); // If f refers to a regular file or directory if (target.IsEmpty()) { return(fs); } // Otherwise f refers to a symlink return(new FileStatus(fs.GetLen(), false, fs.GetReplication(), fs.GetBlockSize(), fs.GetModificationTime(), fs.GetAccessTime(), fs.GetPermission(), fs.GetOwner(), fs.GetGroup(), new Path(target), f)); } catch (FileNotFoundException e) { /* The exists method in the File class returns false for dangling * links so we can get a FileNotFoundException for links that exist. * It's also possible that we raced with a delete of the link. Use * the readBasicFileAttributes method in java.nio.file.attributes * when available. */ if (!target.IsEmpty()) { return(new FileStatus(0, false, 0, 0, 0, 0, FsPermission.GetDefault(), string.Empty , string.Empty, new Path(target), f)); } // f refers to a file or directory that does not exist throw; } }
/// <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()); } }
/// <exception cref="System.IO.IOException"/> public virtual void TestSetPermissionAffectsTarget() { Path file = new Path(TestBaseDir1(), "file"); Path dir = new Path(TestBaseDir2()); Path linkToFile = new Path(TestBaseDir1(), "linkToFile"); Path linkToDir = new Path(TestBaseDir1(), "linkToDir"); CreateAndWriteFile(file); wrapper.CreateSymlink(file, linkToFile, false); wrapper.CreateSymlink(dir, linkToDir, false); // Changing the permissions using the link does not modify // the permissions of the link.. FsPermission perms = wrapper.GetFileLinkStatus(linkToFile).GetPermission(); wrapper.SetPermission(linkToFile, new FsPermission((short)0x1b4)); wrapper.SetOwner(linkToFile, "user", "group"); NUnit.Framework.Assert.AreEqual(perms, wrapper.GetFileLinkStatus(linkToFile).GetPermission ()); // but the file's permissions were adjusted appropriately FileStatus stat = wrapper.GetFileStatus(file); NUnit.Framework.Assert.AreEqual(0x1b4, stat.GetPermission().ToShort()); NUnit.Framework.Assert.AreEqual("user", stat.GetOwner()); NUnit.Framework.Assert.AreEqual("group", stat.GetGroup()); // Getting the file's permissions via the link is the same // as getting the permissions directly. NUnit.Framework.Assert.AreEqual(stat.GetPermission(), wrapper.GetFileStatus(linkToFile ).GetPermission()); // Ditto for a link to a directory perms = wrapper.GetFileLinkStatus(linkToDir).GetPermission(); wrapper.SetPermission(linkToDir, new FsPermission((short)0x1b4)); wrapper.SetOwner(linkToDir, "user", "group"); NUnit.Framework.Assert.AreEqual(perms, wrapper.GetFileLinkStatus(linkToDir).GetPermission ()); stat = wrapper.GetFileStatus(dir); NUnit.Framework.Assert.AreEqual(0x1b4, stat.GetPermission().ToShort()); NUnit.Framework.Assert.AreEqual("user", stat.GetOwner()); NUnit.Framework.Assert.AreEqual("group", stat.GetGroup()); NUnit.Framework.Assert.AreEqual(stat.GetPermission(), wrapper.GetFileStatus(linkToDir ).GetPermission()); }
/// <exception cref="System.Exception"/> public virtual void TestMkdirsWithUmask() { if (fs.GetScheme().Equals("s3") || fs.GetScheme().Equals("s3n")) { // skip permission tests for S3FileSystem until HDFS-1333 is fixed. return; } Configuration conf = fs.GetConf(); string oldUmask = conf.Get(CommonConfigurationKeys.FsPermissionsUmaskKey); try { conf.Set(CommonConfigurationKeys.FsPermissionsUmaskKey, TestUmask); Org.Apache.Hadoop.FS.Path dir = new Org.Apache.Hadoop.FS.Path("/test/newDir"); Assert.True(fs.Mkdirs(dir, new FsPermission((short)0x1ff))); FileStatus status = fs.GetFileStatus(dir); Assert.True(status.IsDirectory()); Assert.Equal((short)0x1cd, status.GetPermission().ToShort()); } finally { conf.Set(CommonConfigurationKeys.FsPermissionsUmaskKey, oldUmask); } }
/// <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()); }