Exemple #1
0
        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());
        }