blob: fba74614778aee5d30da07ed6bca45221a0c3bda [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.slider.funtest.abstracttests
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.Path
import org.apache.hadoop.security.UserGroupInformation
import org.apache.hadoop.yarn.conf.YarnConfiguration
import org.apache.slider.funtest.framework.ConfLoader
import org.apache.slider.funtest.framework.FuntestProperties
import org.apache.slider.common.tools.SliderUtils
import org.apache.slider.test.SliderTestUtils
import org.junit.Test
import org.apache.hadoop.fs.FileSystem as HadoopFS
/**
* Simple tests to verify that the build has been set up: if these
* fail then the arguments to the test run are incomplete.
*
* This deliberately doesn't depend on SliderCommandTestBase,
* so that individual tests fail with more diagnostics
* than the @BeforeClass failing
*/
@CompileStatic
@Slf4j
abstract class AbstractTestBuildSetup extends SliderTestUtils implements FuntestProperties {
String getRequiredSysprop(String name) {
String val = System.getProperty(name)
if (!val) {
fail("System property not set : $name")
}
return val;
}
public String getSliderConfDirProp() {
return getRequiredSysprop(SLIDER_CONF_DIR_PROP)
}
public File getSliderConfDirectory() {
return getCanonicalFile(sliderConfDirProp)
}
File getCanonicalFile(String dir) {
assert dir
return new File(dir).canonicalFile
}
File getBinDirectory() {
return getCanonicalFile(getBinDirProp())
}
public String getBinDirProp() {
return getRequiredSysprop(SLIDER_BIN_DIR_PROP)
}
public File getConfXML() {
new File(sliderConfDirectory, CLIENT_CONFIG_FILENAME).canonicalFile
}
public File getSliderScript() {
new File(binDirectory, "bin/" + SCRIPT_NAME).canonicalFile
}
/**
* Load the client XML file
* @return
*/
public Configuration loadSliderConf() {
Configuration conf = (new ConfLoader()).loadSliderConf(confXML)
return conf
}
@Test
public void testConfDirSet() throws Throwable {
assert getSliderConfDirProp()
log.info("Slider Configuration directory $sliderConfDirProp")
}
@Test
public void testConfDirExists() throws Throwable {
assert sliderConfDirectory.exists()
}
@Test
public void testConfDirHasClientXML() throws Throwable {
File clientXMLFile = confXML
assert clientXMLFile.exists()
clientXMLFile.toString()
}
@Test
public void testBinDirExists() throws Throwable {
log.info("binaries dir = $binDirectory")
}
@Test
public void testBinScriptExists() throws Throwable {
assert sliderScript.exists()
}
@Test
public void testConfLoad() throws Throwable {
Configuration conf = loadSliderConf()
}
@Test
public void testConfHasFileURL() throws Throwable {
Configuration conf = loadSliderConf()
assert conf.get(KEY_TEST_CONF_XML)
String confXml = conf.get(KEY_TEST_CONF_XML)
URL confURL = new URL(confXml)
log.info("$KEY_TEST_CONF_XML = $confXML -as URL: $confURL")
Path path = new Path(confURL.toURI())
def fs = HadoopFS.get(path.toUri(), conf)
assert fs.exists(path)
}
@Test
public void testConfHasDefaultFS() throws Throwable {
Configuration conf = loadSliderConf()
assumeBoolOption(conf, KEY_SLIDER_FUNTESTS_ENABLED, true)
String fs = conf.get("fs.defaultFS")
log.info("Test Filesystem $fs")
assert fs != null
}
@Test
public void testConfHasRM() throws Throwable {
Configuration conf = loadSliderConf()
assumeBoolOption(conf, KEY_SLIDER_FUNTESTS_ENABLED, true)
String val = conf.get(YarnConfiguration.RM_ADDRESS)
log.info("$YarnConfiguration.RM_ADDRESS = $val")
assert val != YarnConfiguration.DEFAULT_RM_ADDRESS
}
@Test
public void testSecuritySettingsValid() throws Throwable {
Configuration conf = loadSliderConf();
if (SliderUtils.maybeInitSecurity(conf)) {
log.info("Security enabled")
SliderUtils.forceLogin()
}
log.info("Login User = ${UserGroupInformation.loginUser}")
}
}