소스 검색

HDDS-130. TestGenerateOzoneRequiredConfigurations should use GenericTestUtils#getTempPath to set output directory. Contributed by Sandeep Nemuri.

Xiaoyu Yao 7 년 전
부모
커밋
e9ea902299

+ 50 - 22
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/genconf/TestGenerateOzoneRequiredConfigurations.java

@@ -18,56 +18,57 @@
 
 package org.apache.hadoop.ozone.genconf;
 
-import org.apache.hadoop.hdds.conf.OzoneConfiguration;
-import org.apache.hadoop.ozone.MiniOzoneCluster;
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.hadoop.test.GenericTestUtils;
+import org.hamcrest.CoreMatchers;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
+import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.IOException;
+import java.io.PrintStream;
 
 
 /**
  * Tests GenerateOzoneRequiredConfigurations.
  */
 public class TestGenerateOzoneRequiredConfigurations {
-  private static MiniOzoneCluster cluster;
-  private static OzoneConfiguration conf;
-
+  private static File outputBaseDir;
   /**
-   * Create a MiniDFSCluster for testing.
-   * <p>
-   * Ozone is made active by setting OZONE_ENABLED = true and
-   * OZONE_HANDLER_TYPE_KEY = "distributed"
+   * Creates output directory which will be used by the test-cases.
+   * If a test-case needs a separate directory, it has to create a random
+   * directory inside {@code outputBaseDir}.
    *
-   * @throws IOException
+   * @throws Exception In case of exception while creating output directory.
    */
   @BeforeClass
   public static void init() throws Exception {
-    conf = new OzoneConfiguration();
-    cluster = MiniOzoneCluster.newBuilder(conf).setNumDatanodes(1).build();
-    cluster.waitForClusterToBeReady();
+    outputBaseDir = GenericTestUtils.getTestDir();
+    FileUtils.forceMkdir(outputBaseDir);
   }
 
   /**
-   * Shutdown MiniDFSCluster.
+   * Cleans up the output base directory.
    */
   @AfterClass
-  public static void shutdown() {
-    if (cluster != null) {
-      cluster.shutdown();
-    }
+  public static void cleanup() throws IOException {
+    FileUtils.deleteDirectory(outputBaseDir);
   }
 
   /**
-   * Tests a valid path and generates ozone-site.xml.
+   * Tests a valid path and generates ozone-site.xml by calling
+   * {@code GenerateOzoneRequiredConfigurations#generateConfigurations}.
+   *
    * @throws Exception
    */
   @Test
-  public void generateConfigurationsSuccess() throws Exception {
-    String[] args = new String[]{"-output", "."};
-    GenerateOzoneRequiredConfigurations.main(args);
+  public void testGenerateConfigurations() throws Exception {
+    File tempPath = getRandomTempDir();
+    String[] args = new String[]{"-output", tempPath.getAbsolutePath()};
 
     Assert.assertEquals("Path is valid",
         true, GenerateOzoneRequiredConfigurations.isValidPath(args[1]));
@@ -79,6 +80,27 @@ public class TestGenerateOzoneRequiredConfigurations {
         0, GenerateOzoneRequiredConfigurations.generateConfigurations(args[1]));
   }
 
+  /**
+   * Tests ozone-site.xml generation by calling
+   * {@code GenerateOzoneRequiredConfigurations#main}.
+   *
+   * @throws Exception
+   */
+  @Test
+  public void testGenerateConfigurationsThroughMainMethod() throws Exception {
+    File tempPath = getRandomTempDir();
+    String[] args = new String[]{"-output", tempPath.getAbsolutePath()};
+    ByteArrayOutputStream outContent = new ByteArrayOutputStream();
+    PrintStream oldStream = System.out;
+    try (PrintStream ps = new PrintStream(outContent)) {
+      System.setOut(ps);
+      GenerateOzoneRequiredConfigurations.main(args);
+      Assert.assertThat(outContent.toString(),
+              CoreMatchers.containsString("ozone-site.xml has been generated at"));
+      System.setOut(oldStream);
+    }
+  }
+
   /**
    * Test to avoid generating ozone-site.xml when invalid permission.
    * @throws Exception
@@ -97,4 +119,10 @@ public class TestGenerateOzoneRequiredConfigurations {
     Assert.assertEquals("Config file not generated",
         1, GenerateOzoneRequiredConfigurations.generateConfigurations(args[1]));
   }
+
+  private File getRandomTempDir() throws IOException {
+    File tempDir = new File(outputBaseDir, RandomStringUtils.randomAlphanumeric(5));
+    FileUtils.forceMkdir(tempDir);
+    return tempDir;
+  }
 }