public virtual void TestReaddirPlus() { // Test readdirplus // Get inodeId of /tmp HdfsFileStatus status = nn.GetRpcServer().GetFileInfo(testdir); long dirId = status.GetFileId(); // Create related part of the XDR request XDR xdr_req = new XDR(); FileHandle handle = new FileHandle(dirId); handle.Serialize(xdr_req); xdr_req.WriteLongAsHyper(0); // cookie xdr_req.WriteLongAsHyper(0); // verifier xdr_req.WriteInt(100); // dirCount xdr_req.WriteInt(1000); // maxCount READDIRPLUS3Response responsePlus = nfsd.Readdirplus(xdr_req.AsReadOnlyWrap(), securityHandler , new IPEndPoint("localhost", 1234)); IList <READDIRPLUS3Response.EntryPlus3> direntPlus = responsePlus.GetDirListPlus() .GetEntries(); NUnit.Framework.Assert.IsTrue(direntPlus.Count == 5); // including dot, dotdot // Test start listing from f2 status = nn.GetRpcServer().GetFileInfo(testdir + "/f2"); long f2Id = status.GetFileId(); // Create related part of the XDR request xdr_req = new XDR(); handle = new FileHandle(dirId); handle.Serialize(xdr_req); xdr_req.WriteLongAsHyper(f2Id); // cookie xdr_req.WriteLongAsHyper(0); // verifier xdr_req.WriteInt(100); // dirCount xdr_req.WriteInt(1000); // maxCount responsePlus = nfsd.Readdirplus(xdr_req.AsReadOnlyWrap(), securityHandler, new IPEndPoint ("localhost", 1234)); direntPlus = responsePlus.GetDirListPlus().GetEntries(); NUnit.Framework.Assert.IsTrue(direntPlus.Count == 1); READDIRPLUS3Response.EntryPlus3 entryPlus = direntPlus[0]; NUnit.Framework.Assert.IsTrue(entryPlus.GetName().Equals("f3")); // When the cookie is deleted, list starts over no including dot, dotdot hdfs.Delete(new Path(testdir + "/f2"), false); responsePlus = nfsd.Readdirplus(xdr_req.AsReadOnlyWrap(), securityHandler, new IPEndPoint ("localhost", 1234)); direntPlus = responsePlus.GetDirListPlus().GetEntries(); NUnit.Framework.Assert.IsTrue(direntPlus.Count == 2); }
/// <exception cref="System.Exception"/> public virtual void TestReaddirplus() { HdfsFileStatus status = nn.GetRpcServer().GetFileInfo(testdir); long dirId = status.GetFileId(); FileHandle handle = new FileHandle(dirId); XDR xdr_req = new XDR(); READDIRPLUS3Request req = new READDIRPLUS3Request(handle, 0, 0, 3, 2); req.Serialize(xdr_req); // Attempt by an unprivileged user should fail. READDIRPLUS3Response response1 = nfsd.Readdirplus(xdr_req.AsReadOnlyWrap(), securityHandlerUnpriviledged , new IPEndPoint("localhost", 1234)); NUnit.Framework.Assert.AreEqual("Incorrect return code:", Nfs3Status.Nfs3errAcces , response1.GetStatus()); // Attempt by a privileged user should pass. READDIRPLUS3Response response2 = nfsd.Readdirplus(xdr_req.AsReadOnlyWrap(), securityHandler , new IPEndPoint("localhost", 1234)); NUnit.Framework.Assert.AreEqual("Incorrect return code:", Nfs3Status.Nfs3Ok, response2 .GetStatus()); }