|
@@ -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.doAnswer;
|
|
|
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.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;
|
|
@@ -54,11 +64,14 @@ import org.apache.hadoop.security.token.delegation.AbstractDelegationTokenSecret
|
|
|
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)));
|
|
|
+ }
|
|
|
}
|