blob: 04be7c03018784c05c2c091a5c9d5a226726e232 [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.agent.freezethaw
import groovy.transform.CompileStatic
import groovy.util.logging.Slf4j
import org.apache.hadoop.fs.FileSystem as HadoopFS
import org.apache.hadoop.fs.Path
import org.apache.hadoop.yarn.api.records.ApplicationReport
import org.apache.hadoop.yarn.conf.YarnConfiguration
import org.apache.slider.agent.AgentMiniClusterTestBase
import org.apache.slider.client.SliderClient
import org.apache.slider.common.tools.SliderUtils
import org.apache.slider.core.main.ServiceLauncher
import org.junit.Test
/**
* freeze and thaw an AM
*/
@CompileStatic
@Slf4j
class TestFreezeThawMasterlessAM extends AgentMiniClusterTestBase {
File getConfDirFile() {
return new File("target/TestFreezeThawMasterlessAM/conf")
}
@Override
String getConfDir() {
return confDirFile.toURI().toString()
}
@Test
public void testFreezeThawMasterlessAM() throws Throwable {
YarnConfiguration conf = configuration
String clustername = createMiniCluster("", conf, 1, 1, 1, true, false)
describe "create a masterless AM, freeze it, thaw it"
//copy the confdir somewhere
Path resConfPath = new Path(resourceConfDirURI)
Path tempConfPath = new Path(confDir)
SliderUtils.copyDirectory(conf, resConfPath, tempConfPath, null)
ServiceLauncher<SliderClient> launcher = createStandaloneAM(
clustername,
true,
true)
SliderClient sliderClient = launcher.service
addToTeardown(sliderClient);
assert 0 == clusterActionFreeze(sliderClient, clustername)
// here we do something devious: delete our copy of the configuration
// this makes sure the remote config gets picked up
HadoopFS localFS = HadoopFS.get(tempConfPath.toUri(), conf)
localFS.delete(tempConfPath,true)
//now start the cluster
ServiceLauncher launcher2 = thawCluster(clustername, [], true);
SliderClient newCluster = launcher2.service
addToTeardown(newCluster);
// ApplicationReport report = waitForClusterLive(newCluster)
newCluster.getClusterDescription(clustername);
//freeze
assert 0 == clusterActionFreeze(sliderClient, clustername)
//freeze again
assert 0 == clusterActionFreeze(sliderClient, clustername)
}
}