Author: kihwal Date: Tue Oct 1 14:02:19 2013 New Revision: 1528097 URL: http://svn.apache.org/r1528097 Log: HDFS-4512. Cover package org.apache.hadoop.hdfs.server.common with tests. Contributed by Vadim Bondarev.
Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java Modified: hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt?rev=1528097&r1=1528096&r2=1528097&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt Tue Oct 1 14:02:19 2013 @@ -303,6 +303,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/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java?rev=1528097&r1=1528096&r2=1528097&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java (original) +++ hadoop/common/trunk/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java Tue Oct 1 14:02:19 2013 @@ -17,6 +17,11 @@ */ package org.apache.hadoop.hdfs.server.common; +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.mock; import static org.mockito.Mockito.when; import static org.mockito.Mockito.doAnswer; @@ -24,7 +29,10 @@ import static org.mockito.Mockito.doAnsw import java.io.IOException; import java.io.StringReader; import java.net.InetSocketAddress; +import java.text.MessageFormat; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; @@ -43,6 +51,8 @@ import org.apache.hadoop.hdfs.server.blo 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; @@ -54,11 +64,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 com.google.common.base.Strings; + public class TestJspHelper { @@ -480,5 +493,136 @@ public class TestJspHelper { JspHelper.sortNodeList(live, "pcbpused", "DSC"); Assert.assertEquals(dnDesc1, live.get(0)); Assert.assertEquals(dnDesc2, live.get(1)); + + //unexisted field comparition is d1.getHostName().compareTo(d2.getHostName()); + 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<Object>() { + @Override + public Object answer(InvocationOnMock invok) { + Object[] args = invok.getArguments(); + buffer.append((String)args[0]); + return null; + } + }).when(out).print(arg.capture()); + + + JspHelper.createTitle(out, req, "testfile.txt"); + Mockito.verify(out, Mockito.times(1)).print(Mockito.anyString()); + + JspHelper.addTableHeader(out); + Mockito.verify(out, Mockito.times(1 + 2)).print(Mockito.anyString()); + + JspHelper.addTableRow(out, new String[] {" row11", "row12 "}); + Mockito.verify(out, Mockito.times(1 + 2 + 4)).print(Mockito.anyString()); + + JspHelper.addTableRow(out, new String[] {" row11", "row12 "}, 3); + Mockito.verify(out, Mockito.times(1 + 2 + 4 + 4)).print(Mockito.anyString()); + + JspHelper.addTableRow(out, new String[] {" row21", "row22"}); + Mockito.verify(out, Mockito.times(1 + 2 + 4 + 4 + 4)).print(Mockito.anyString()); + + JspHelper.addTableFooter(out); + Mockito.verify(out, Mockito.times(1 + 2 + 4 + 4 + 4 + 1)).print(Mockito.anyString()); + + assertFalse(Strings.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))); + } }