public virtual void TestCommitWithInvalidGenStamp() { Path file = new Path("/file"); FSDataOutputStream @out = null; try { @out = dfs.Create(file, (short)1); INodeFile fileNode = dir.GetINode4Write(file.ToString()).AsFile(); ExtendedBlock previous = null; Block newBlock = DFSTestUtil.AddBlockToFile(cluster.GetDataNodes(), dfs, cluster. GetNamesystem(), file.ToString(), fileNode, dfs.GetClient().GetClientName(), previous , 100); Block newBlockClone = new Block(newBlock); previous = new ExtendedBlock(cluster.GetNamesystem().GetBlockPoolId(), newBlockClone ); previous.SetGenerationStamp(123); try { dfs.GetClient().GetNamenode().Complete(file.ToString(), dfs.GetClient().GetClientName (), previous, fileNode.GetId()); NUnit.Framework.Assert.Fail("should throw exception because invalid genStamp"); } catch (IOException e) { NUnit.Framework.Assert.IsTrue(e.ToString().Contains("Commit block with mismatching GS. NN has " + newBlock + ", client submits " + newBlockClone)); } previous = new ExtendedBlock(cluster.GetNamesystem().GetBlockPoolId(), newBlock); bool complete = dfs.GetClient().GetNamenode().Complete(file.ToString(), dfs.GetClient ().GetClientName(), previous, fileNode.GetId()); NUnit.Framework.Assert.IsTrue("should complete successfully", complete); } finally { IOUtils.Cleanup(null, @out); } }