public virtual void TestReaddirBasic() { // 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); // count READDIR3Response response = nfsd.Readdir(xdr_req.AsReadOnlyWrap(), securityHandler , new IPEndPoint("localhost", 1234)); IList <READDIR3Response.Entry3> dirents = response.GetDirList().GetEntries(); NUnit.Framework.Assert.IsTrue(dirents.Count == 5); // inculding 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); // count response = nfsd.Readdir(xdr_req.AsReadOnlyWrap(), securityHandler, new IPEndPoint ("localhost", 1234)); dirents = response.GetDirList().GetEntries(); NUnit.Framework.Assert.IsTrue(dirents.Count == 1); READDIR3Response.Entry3 entry = dirents[0]; NUnit.Framework.Assert.IsTrue(entry.GetName().Equals("f3")); // When the cookie is deleted, list starts over no including dot, dotdot hdfs.Delete(new Path(testdir + "/f2"), false); response = nfsd.Readdir(xdr_req.AsReadOnlyWrap(), securityHandler, new IPEndPoint ("localhost", 1234)); dirents = response.GetDirList().GetEntries(); NUnit.Framework.Assert.IsTrue(dirents.Count == 2); }
/// <exception cref="System.Exception"/> public virtual void TestReaddir() { HdfsFileStatus status = nn.GetRpcServer().GetFileInfo(testdir); long dirId = status.GetFileId(); FileHandle handle = new FileHandle(dirId); XDR xdr_req = new XDR(); READDIR3Request req = new READDIR3Request(handle, 0, 0, 100); req.Serialize(xdr_req); // Attempt by an unpriviledged user should fail. READDIR3Response response1 = nfsd.Readdir(xdr_req.AsReadOnlyWrap(), securityHandlerUnpriviledged , new IPEndPoint("localhost", 1234)); NUnit.Framework.Assert.AreEqual("Incorrect return code:", Nfs3Status.Nfs3errAcces , response1.GetStatus()); // Attempt by a priviledged user should pass. READDIR3Response response2 = nfsd.Readdir(xdr_req.AsReadOnlyWrap(), securityHandler , new IPEndPoint("localhost", 1234)); NUnit.Framework.Assert.AreEqual("Incorrect return code:", Nfs3Status.Nfs3Ok, response2 .GetStatus()); }