package com.github.sakserv.minicluster.impl; import com.github.sakserv.minicluster.config.ConfigVars; import com.github.sakserv.propertyparser.PropertyParser; import org.apache.hadoop.conf.Configuration; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class OozieLocalServerTest { // Logger private static final Logger LOG = LoggerFactory.getLogger(OozieLocalServerTest.class); // Setup the property parser private static PropertyParser propertyParser; static { try { propertyParser = new PropertyParser(ConfigVars.DEFAULT_PROPS_FILE); propertyParser.parsePropsFile(); } catch(IOException e) { LOG.error("Unable to load property file: {}", propertyParser.getProperty(ConfigVars.DEFAULT_PROPS_FILE)); } } @Rule public ExpectedException exception = ExpectedException.none(); private static OozieLocalServer oozieLocalServer; private static HdfsLocalCluster hdfsLocalCluster; private static String defaultFs; @BeforeClass public static void setUp() { hdfsLocalCluster = new HdfsLocalCluster.Builder() .setHdfsNamenodePort(Integer.parseInt(propertyParser.getProperty(ConfigVars.HDFS_NAMENODE_PORT_KEY))) .setHdfsTempDir(propertyParser.getProperty(ConfigVars.HDFS_TEMP_DIR_KEY)) .setHdfsNumDatanodes(Integer.parseInt(propertyParser.getProperty(ConfigVars.HDFS_NUM_DATANODES_KEY))) .setHdfsEnablePermissions( Boolean.parseBoolean(propertyParser.getProperty(ConfigVars.HDFS_ENABLE_PERMISSIONS_KEY))) .setHdfsFormat(Boolean.parseBoolean(propertyParser.getProperty(ConfigVars.HDFS_FORMAT_KEY))) .setHdfsConfig(new Configuration()) .build(); defaultFs = "hdfs://localhost:" + propertyParser.getProperty(ConfigVars.HDFS_NAMENODE_PORT_KEY); oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .setOozieHdfsShareLibDir(propertyParser.getProperty(ConfigVars.OOZIE_HDFS_SHARE_LIB_DIR_KEY)) .setOozieShareLibCreate(Boolean.parseBoolean( propertyParser.getProperty(ConfigVars.OOZIE_SHARE_LIB_CREATE_KEY))) .setOozieLocalShareLibCacheDir(propertyParser.getProperty( ConfigVars.OOZIE_LOCAL_SHARE_LIB_CACHE_DIR_KEY)) .setOoziePurgeLocalShareLibCache(Boolean.parseBoolean(propertyParser.getProperty( ConfigVars.OOZIE_PURGE_LOCAL_SHARE_LIB_CACHE_KEY))) .build(); } @AfterClass public static void tearDown() throws Exception { oozieLocalServer.stop(); } @Test public void testOozieTestDir() { assertEquals(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY), oozieLocalServer.getOozieTestDir()); } @Test public void testMissingOozieTestDir() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .build(); } @Test public void testOozieHomeDir() { assertEquals(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY), oozieLocalServer.getOozieHomeDir()); } @Test public void testMissingOozieHomeDir() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .build(); } @Test public void testOozieUsername() { assertEquals(System.getProperty("user.name"), oozieLocalServer.getOozieUsername()); } @Test public void testMissingOozieUsername() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .build(); } @Test public void testOozieGroupname() { assertEquals(System.getProperty("user.name"), oozieLocalServer.getOozieUsername()); } @Test public void testMissingOozieGroupname() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .build(); } @Test public void testOozieYarnResourceManagerAddress() { assertEquals(propertyParser.getProperty(ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY), oozieLocalServer.getOozieYarnResourceManagerAddress()); } @Test public void testMissingOozieYarnResourceManagerAddress() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .build(); } @Test public void testOozieHdfsDefaultFs() { assertEquals(defaultFs, oozieLocalServer.getOozieHdfsDefaultFs()); } @Test public void testMissingOozieHdfsDefaultFs() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieConf(new Configuration()) .build(); } @Test public void testOozieConf() { assertTrue(oozieLocalServer.getOozieConf() instanceof Configuration); } @Test public void testMissingOozieConf() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .build(); } @Test public void testOozieShareLibDir() { assertEquals(propertyParser.getProperty(ConfigVars.OOZIE_HDFS_SHARE_LIB_DIR_KEY), oozieLocalServer.getOozieHdfsShareLibDir()); } @Test public void testMissingOozieHdfsShareLibDir() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .setOozieShareLibCreate(Boolean.parseBoolean( propertyParser.getProperty(ConfigVars.OOZIE_SHARE_LIB_CREATE_KEY))) .build(); } @Test public void testOozieShareLibCreate() { assertEquals(Boolean.parseBoolean(propertyParser.getProperty(ConfigVars.OOZIE_SHARE_LIB_CREATE_KEY)), oozieLocalServer.getOozieShareLibCreate()); } @Test public void testMissingOozieShareLibCreate() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .setOozieHdfsShareLibDir(propertyParser.getProperty(ConfigVars.OOZIE_HDFS_SHARE_LIB_DIR_KEY)) .build(); } @Test public void testOozieLocalShareLibCacheDir() { assertEquals(propertyParser.getProperty(ConfigVars.OOZIE_LOCAL_SHARE_LIB_CACHE_DIR_KEY), oozieLocalServer.getOozieLocalShareLibCacheDir()); } @Test public void testMissingOozieLocalShareLibCacheDir() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .setOozieHdfsShareLibDir(propertyParser.getProperty(ConfigVars.OOZIE_HDFS_SHARE_LIB_DIR_KEY)) .setOozieShareLibCreate(Boolean.parseBoolean( propertyParser.getProperty(ConfigVars.OOZIE_SHARE_LIB_CREATE_KEY))) .setOoziePurgeLocalShareLibCache(Boolean.parseBoolean(propertyParser.getProperty( ConfigVars.OOZIE_PURGE_LOCAL_SHARE_LIB_CACHE_KEY))) .build(); } @Test public void testOoziePurgeLocalShareLibCache() { assertEquals(Boolean.parseBoolean(propertyParser.getProperty(ConfigVars.OOZIE_PURGE_LOCAL_SHARE_LIB_CACHE_KEY)), oozieLocalServer.getOoziePurgeLocalShareLibCache()); } @Test public void testMissingOoziePurgeLocalShareLibCache() { exception.expect(IllegalArgumentException.class); OozieLocalServer oozieLocalServer = new OozieLocalServer.Builder() .setOozieTestDir(propertyParser.getProperty(ConfigVars.OOZIE_TEST_DIR_KEY)) .setOozieHomeDir(propertyParser.getProperty(ConfigVars.OOZIE_HOME_DIR_KEY)) .setOozieUsername(System.getProperty("user.name")) .setOozieGroupname(propertyParser.getProperty(ConfigVars.OOZIE_GROUPNAME_KEY)) .setOozieYarnResourceManagerAddress(propertyParser.getProperty( ConfigVars.YARN_RESOURCE_MANAGER_ADDRESS_KEY)) .setOozieHdfsDefaultFs(defaultFs) .setOozieConf(new Configuration()) .setOozieHdfsShareLibDir(propertyParser.getProperty(ConfigVars.OOZIE_HDFS_SHARE_LIB_DIR_KEY)) .setOozieShareLibCreate(Boolean.parseBoolean( propertyParser.getProperty(ConfigVars.OOZIE_SHARE_LIB_CREATE_KEY))) .setOozieLocalShareLibCacheDir(propertyParser.getProperty( ConfigVars.OOZIE_LOCAL_SHARE_LIB_CACHE_DIR_KEY)) .build(); } }