From 36e0e3644413fdb8c03b1a71cbb9096bfb512155 Mon Sep 17 00:00:00 2001 From: vbondarev Date: Tue, 29 Jan 2013 18:32:00 +0400 Subject: [PATCH] YAHOO-225 -- QE add additional test mathods in TestJspHelper class --- .../hdfs/server/common/TestJspHelper.java | 144 ++++++++++++++++++ 1 file changed, 144 insertions(+) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java index ab6ed12492e..bd523963409 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/common/TestJspHelper.java @@ -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 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.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.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 void testSortNodeByFields() throws Exception { 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 arg = ArgumentCaptor.forClass(String.class); + doAnswer(new Answer() { + @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))); + } }