[
https://issues.apache.org/jira/browse/HDFS-5135?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14107757#comment-14107757
]
Brandon Li commented on HDFS-5135:
----------------------------------
[~zhz], the fragment decoder will always send the whole buffer to the next
message handler, but the buffer read position will be moved by 4 bytes.
In your case, the XDR is built on a ByteBuffer instead of ChannelBuffer, e.g:
{noformat}
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
ChannelBuffer buf = (ChannelBuffer) e.getMessage();
ByteBuffer b = buf.toByteBuffer().asReadOnlyBuffer();
XDR rsp = new XDR(b, XDR.State.READING);
// Get handle from create response
...
RpcReply reply = RpcReply.read(rsp);
...
{noformat}
Also, in order to support parallel testing, the test should use a ephemeral
port:
config.setInt("nfs3.server.port", 0);
If currently there is not way to know which port is bound by NFS, we should add
a method to either Nfs3/RpcProgramNfs3 to get it.
[~zhezhang], please feel free to create sub-tasks for your patches.
> Umbrella JIRA for NFS end to end unit test frameworks
> -----------------------------------------------------
>
> Key: HDFS-5135
> URL: https://issues.apache.org/jira/browse/HDFS-5135
> Project: Hadoop HDFS
> Issue Type: Bug
> Components: nfs
> Affects Versions: 2.2.0
> Reporter: Brandon Li
> Assignee: Zhe Zhang
> Attachments: TestRPCMessagesInNFS.java
>
>
> Currently, we have to manually start portmap and nfs3 processes to test patch
> and new functionalities. This JIRA is to track the effort to introduce a test
> framework to NFS unit test without starting standalone nfs3 processes.
--
This message was sent by Atlassian JIRA
(v6.2#6252)