blob: fd2fa38967e2b4d5ceb991193546424202e5855d [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.hadoop.conf;
import junit.framework.TestCase;
import java.util.Properties;
/**
* Created 21-Jan-2009 13:42:36
*/
public class TestConfigurationSubclass extends TestCase {
private static final String EMPTY_CONFIGURATION_XML
= "/org/apache/hadoop/conf/empty-configuration.xml";
public void testGetProps() {
SubConf conf = new SubConf(true);
Properties properties = conf.getProperties();
assertNotNull("hadoop.tmp.dir is not set",
properties.getProperty("hadoop.tmp.dir"));
}
public void testReload() throws Throwable {
SubConf conf = new SubConf(true);
assertFalse(conf.isReloaded());
Configuration.addDefaultResource(EMPTY_CONFIGURATION_XML);
assertTrue(conf.isReloaded());
Properties properties = conf.getProperties();
}
public void testReloadNotQuiet() throws Throwable {
SubConf conf = new SubConf(true);
conf.setQuietMode(false);
assertFalse(conf.isReloaded());
conf.addResource("not-a-valid-resource");
assertTrue(conf.isReloaded());
try {
Properties properties = conf.getProperties();
fail("Should not have got here");
} catch (RuntimeException e) {
assertTrue(e.toString(),e.getMessage().contains("not found"));
}
}
private static class SubConf extends Configuration {
private boolean reloaded;
/**
* A new configuration where the behavior of reading from the default resources
* can be turned off.
*
* If the parameter {@code loadDefaults} is false, the new instance will not
* load resources from the default files.
*
* @param loadDefaults specifies whether to load from the default files
*/
private SubConf(boolean loadDefaults) {
super(loadDefaults);
}
public Properties getProperties() {
return super.getProps();
}
/**
* {@inheritDoc}.
* Sets the reloaded flag.
*/
@Override
public void reloadConfiguration() {
super.reloadConfiguration();
reloaded = true;
}
public boolean isReloaded() {
return reloaded;
}
public void setReloaded(boolean reloaded) {
this.reloaded = reloaded;
}
}
}