diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/genconf/TestGenerateOzoneRequiredConfigurations.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/genconf/TestGenerateOzoneRequiredConfigurations.java index 82582a676b0..cfd11594698 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/genconf/TestGenerateOzoneRequiredConfigurations.java +++ b/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. - *

- * 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; + } }