From e5ff9f3922b6cd5729d8a8852d689fedb28ded90 Mon Sep 17 00:00:00 2001 From: Inigo Goiri Date: Thu, 17 May 2018 13:35:09 -0700 Subject: [PATCH] HDFS-13558. TestDatanodeHttpXFrame does not shut down cluster. Contributed by Anbang Hu. (cherry picked from commit 26f1e22fc9ee326e9c76503d347552faeb6c2d3b) --- .../datanode/web/TestDatanodeHttpXFrame.java | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/TestDatanodeHttpXFrame.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/TestDatanodeHttpXFrame.java index 9ecd8eae54f..62827a2e5d3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/TestDatanodeHttpXFrame.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/web/TestDatanodeHttpXFrame.java @@ -23,6 +23,7 @@ import org.apache.hadoop.hdfs.HdfsConfiguration; import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.hadoop.hdfs.server.datanode.DataNode; import org.apache.hadoop.http.HttpServer2; +import org.junit.After; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; @@ -36,13 +37,24 @@ import java.net.URL; * Test that X-Frame-Options works correctly with DatanodeHTTPServer. */ public class TestDatanodeHttpXFrame { + + private MiniDFSCluster cluster = null; + @Rule public ExpectedException exception = ExpectedException.none(); + @After + public void cleanUp() { + if (cluster != null) { + cluster.shutdown(); + cluster = null; + } + } + @Test public void testDataNodeXFrameOptionsEnabled() throws Exception { boolean xFrameEnabled = true; - MiniDFSCluster cluster = createCluster(xFrameEnabled, null); + cluster = createCluster(xFrameEnabled, null); HttpURLConnection conn = getConn(cluster); String xfoHeader = conn.getHeaderField("X-FRAME-OPTIONS"); Assert.assertTrue("X-FRAME-OPTIONS is absent in the header", @@ -54,7 +66,7 @@ public class TestDatanodeHttpXFrame { @Test public void testNameNodeXFrameOptionsDisabled() throws Exception { boolean xFrameEnabled = false; - MiniDFSCluster cluster = createCluster(xFrameEnabled, null); + cluster = createCluster(xFrameEnabled, null); HttpURLConnection conn = getConn(cluster); String xfoHeader = conn.getHeaderField("X-FRAME-OPTIONS"); Assert.assertTrue("unexpected X-FRAME-OPTION in header", xfoHeader == null); @@ -63,25 +75,25 @@ public class TestDatanodeHttpXFrame { @Test public void testDataNodeXFramewithInvalidOptions() throws Exception { exception.expect(IllegalArgumentException.class); - createCluster(false, "Hadoop"); + cluster = createCluster(false, "Hadoop"); } - private MiniDFSCluster createCluster(boolean enabled, String + private static MiniDFSCluster createCluster(boolean enabled, String value) throws IOException { Configuration conf = new HdfsConfiguration(); conf.setBoolean(DFSConfigKeys.DFS_XFRAME_OPTION_ENABLED, enabled); if (value != null) { conf.set(DFSConfigKeys.DFS_XFRAME_OPTION_VALUE, value); } - MiniDFSCluster cluster = + MiniDFSCluster dfsCluster = new MiniDFSCluster.Builder(conf).numDataNodes(1).build(); - cluster.waitActive(); - return cluster; + dfsCluster.waitActive(); + return dfsCluster; } - private HttpURLConnection getConn(MiniDFSCluster cluster) + private static HttpURLConnection getConn(MiniDFSCluster dfsCluster) throws IOException { - DataNode datanode = cluster.getDataNodes().get(0); + DataNode datanode = dfsCluster.getDataNodes().get(0); URL newURL = new URL("http://localhost:" + datanode.getInfoPort()); HttpURLConnection conn = (HttpURLConnection) newURL.openConnection(); conn.connect();