* name-node proxy.
*/
public void testClientUpdateMethodList() throws IOException {
InetSocketAddress addr = cluster.getNameNode().getNameNodeDNAddress();
DFSClient client = new DFSClient(addr, cluster.getNameNode().getConf());
ClientProtocol oldNamenode = client.namenode;
// Client's name-node proxy should keep the same if the same namenode
// sends the same fingerprint
//
OutputStream os = client.create("/testClientUpdateMethodList.txt", true);
os.write(66);
os.close();
TestCase.assertSame(oldNamenode, client.namenode);
int oldFingerprint = cluster.getNameNode().getClientProtocolMethodsFingerprint();
TestCase.assertEquals(oldFingerprint, client.namenodeProtocolProxy
.getMethodsFingerprint());
// Namenode's fingerprint will be different to client. Client is suppsoed
// to get a new proxy.
//
cluster.getNameNode().setClientProtocolMethodsFingerprint(666);
os = client.create("/testClientUpdateMethodList1.txt", true);
os.write(88);
os.close();
TestCase.assertNotSame(oldNamenode, client.namenode);
// Since we didn't change method list of name-node, the fingerprint
// got from the new proxy should be the same as the previous one.
TestCase.assertEquals(oldFingerprint, client.namenodeProtocolProxy
.getMethodsFingerprint());
// Client's name-node proxy should keep the same if the same namenode
// sends the same fingerprint
//
ClientProtocol namenode1 = client.namenode;
cluster.getNameNode().setClientProtocolMethodsFingerprint(oldFingerprint);
DFSInputStream dis = client.open("/testClientUpdateMethodList.txt");
int val = dis.read();
TestCase.assertEquals(66, val);
dis.close();