Author: kihwal Date: Tue Oct 1 14:05:16 2013 New Revision: 1528098 URL: http://svn.apache.org/r1528098 Log: HDFS-4512. Cover package org.apache.hadoop.hdfs.server.common with tests. Contributed by Vadim Bondarev.
Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1528098&r1=1528097&r2=1528098&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Oct 1 14:05:16 2013 @@ -62,6 +62,9 @@ Release 2.3.0 - UNRELEASED HDFS-4517. Cover class RemoteBlockReader with unit tests. (Vadim Bondarev and Dennis Y via kihwal) + HDFS-4512. Cover package org.apache.hadoop.hdfs.server.common with tests. + (Vadim Bondarev via kihwal) + OPTIMIZATIONS HDFS-5239. Allow FSNamesystem lock fairness to be configurable (daryn) Modified: hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java URL: http://svn.apache.org/viewvc/hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java?rev=1528098&r1=1528097&r2=1528098&view=diff ============================================================================== --- hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java (original) +++ hadoop/common/branches/branch-2/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java Tue Oct 1 14:05:16 2013 @@ -17,13 +17,18 @@ */ package org.apache.hadoop.hdfs.server.common; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import static org.mockito.Mockito.doAnswer; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; +import static org.mockito.Mockito.*; import java.io.IOException; import java.io.StringReader; import java.net.InetSocketAddress; +import java.text.MessageFormat; +import java.util.ArrayList; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; @@ -36,10 +41,14 @@ import javax.xml.parsers.ParserConfigura import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hdfs.DFSConfigKeys; import org.apache.hadoop.hdfs.HdfsConfiguration; +import org.apache.hadoop.hdfs.protocol.DatanodeID; import org.apache.hadoop.hdfs.security.token.delegation.DelegationTokenIdentifier; +import org.apache.hadoop.hdfs.server.blockmanagement.DatanodeDescriptor; import org.apache.hadoop.hdfs.server.namenode.NameNodeHttpServer; import org.apache.hadoop.hdfs.web.resources.DoAsParam; import org.apache.hadoop.hdfs.web.resources.UserParam; +import org.apache.hadoop.io.DataInputBuffer; +import org.apache.hadoop.io.DataOutputBuffer; import org.apache.hadoop.io.Text; import org.apache.hadoop.security.UserGroupInformation; import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod; @@ -51,11 +60,14 @@ import org.apache.hadoop.security.token. import org.junit.Assert; import org.junit.Test; import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.xml.sax.InputSource; import org.xml.sax.SAXException; +import static com.google.common.base.Strings.*; + public class TestJspHelper { @@ -439,4 +451,143 @@ public class TestJspHelper { ugi.getAuthenticationMethod()); } } + + @Test + public void testSortNodeByFields() throws Exception { + DatanodeID dnId1 = new DatanodeID("127.0.0.1", "localhost1", "storage1", 1234, 2345, 6454); + DatanodeID dnId2 = new DatanodeID("127.0.0.1", "localhost2", "storage2", 1235, 2346, 6455); + + DatanodeDescriptor dnDesc1 = new DatanodeDescriptor(dnId1, 1024, 100, 924, 100, 10, 2); + DatanodeDescriptor dnDesc2 = new DatanodeDescriptor(dnId2, 2500, 200, 1848, 200, 20, 1); + ArrayList<DatanodeDescriptor> live = new ArrayList<DatanodeDescriptor>(); + live.add(dnDesc1); + live.add(dnDesc2); + + JspHelper.sortNodeList(live, "unexists", "ASC"); + Assert.assertEquals(dnDesc1, live.get(0)); + Assert.assertEquals(dnDesc2, live.get(1)); + JspHelper.sortNodeList(live, "unexists", "DSC"); + Assert.assertEquals(dnDesc2, live.get(0)); + Assert.assertEquals(dnDesc1, live.get(1)); + + // test sorting by capacity + JspHelper.sortNodeList(live, "capacity", "ASC"); + Assert.assertEquals(dnDesc1, live.get(0)); + Assert.assertEquals(dnDesc2, live.get(1)); + JspHelper.sortNodeList(live, "capacity", "DSC"); + Assert.assertEquals(dnDesc2, live.get(0)); + Assert.assertEquals(dnDesc1, live.get(1)); + + // test sorting by used + JspHelper.sortNodeList(live, "used", "ASC"); + Assert.assertEquals(dnDesc1, live.get(0)); + Assert.assertEquals(dnDesc2, live.get(1)); + JspHelper.sortNodeList(live, "used", "DSC"); + Assert.assertEquals(dnDesc2, live.get(0)); + Assert.assertEquals(dnDesc1, live.get(1)); + + // test sorting by nondfsused + JspHelper.sortNodeList(live, "nondfsused", "ASC"); + Assert.assertEquals(dnDesc1, live.get(0)); + Assert.assertEquals(dnDesc2, live.get(1)); + + JspHelper.sortNodeList(live, "nondfsused", "DSC"); + Assert.assertEquals(dnDesc2, live.get(0)); + Assert.assertEquals(dnDesc1, live.get(1)); + + // test sorting by remaining + JspHelper.sortNodeList(live, "remaining", "ASC"); + Assert.assertEquals(dnDesc1, live.get(0)); + Assert.assertEquals(dnDesc2, live.get(1)); + + JspHelper.sortNodeList(live, "remaining", "DSC"); + Assert.assertEquals(dnDesc2, live.get(0)); + Assert.assertEquals(dnDesc1, live.get(1)); + } + + @Test + public void testPrintMethods() throws IOException { + JspWriter out = mock(JspWriter.class); + HttpServletRequest req = mock(HttpServletRequest.class); + + final StringBuffer buffer = new StringBuffer(); + + ArgumentCaptor<String> arg = ArgumentCaptor.forClass(String.class); + doAnswer(new Answer<String>() { + @Override + public String answer(InvocationOnMock invok) { + Object[] args = invok.getArguments(); + buffer.append(args[0]); + return null; + } + }).when(out).print(arg.capture()); + + + JspHelper.createTitle(out, req, "testfile.txt"); + verify(out, times(1)).print(Mockito.anyString()); + + JspHelper.addTableHeader(out); + verify(out, times(1 + 2)).print(anyString()); + + JspHelper.addTableRow(out, new String[] {" row11", "row12 "}); + verify(out, times(1 + 2 + 4)).print(anyString()); + + JspHelper.addTableRow(out, new String[] {" row11", "row12 "}, 3); + verify(out, times(1 + 2 + 4 + 4)).print(Mockito.anyString()); + + JspHelper.addTableRow(out, new String[] {" row21", "row22"}); + verify(out, times(1 + 2 + 4 + 4 + 4)).print(anyString()); + + JspHelper.addTableFooter(out); + verify(out, times(1 + 2 + 4 + 4 + 4 + 1)).print(anyString()); + + assertFalse(isNullOrEmpty(buffer.toString())); + } + + @Test + public void testReadWriteReplicaState() { + try { + DataOutputBuffer out = new DataOutputBuffer(); + DataInputBuffer in = new DataInputBuffer(); + for (HdfsServerConstants.ReplicaState repState : HdfsServerConstants.ReplicaState + .values()) { + repState.write(out); + in.reset(out.getData(), out.getLength()); + HdfsServerConstants.ReplicaState result = HdfsServerConstants.ReplicaState + .read(in); + assertTrue("testReadWrite error !!!", repState == result); + out.reset(); + in.reset(); + } + } catch (Exception ex) { + fail("testReadWrite ex error ReplicaState"); + } + } + + @Test + public void testUpgradeStatusReport() { + short status = 6; + int version = 15; + String EXPECTED_NOTF_PATTERN = "Upgrade for version {0} has been completed.\nUpgrade is not finalized."; + String EXPECTED_PATTERN = "Upgrade for version {0} is in progress. Status = {1}%"; + + UpgradeStatusReport upgradeStatusReport = new UpgradeStatusReport(version, + status, true); + assertTrue(upgradeStatusReport.getVersion() == version); + assertTrue(upgradeStatusReport.getUpgradeStatus() == status); + assertTrue(upgradeStatusReport.isFinalized()); + + assertEquals(MessageFormat.format(EXPECTED_PATTERN, version, status), + upgradeStatusReport.getStatusText(true)); + + status += 100; + upgradeStatusReport = new UpgradeStatusReport(version, status, false); + assertFalse(upgradeStatusReport.isFinalized()); + assertTrue(upgradeStatusReport.toString().equals( + MessageFormat.format(EXPECTED_NOTF_PATTERN, version))); + assertTrue(upgradeStatusReport.getStatusText(false).equals( + MessageFormat.format(EXPECTED_NOTF_PATTERN, version))); + assertTrue(upgradeStatusReport.getStatusText(true).equals( + MessageFormat.format(EXPECTED_NOTF_PATTERN, version))); + } }