blob: 46489b9ebd9ff8aab1de8e24e19cdae672971b98 [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.accumulo.minicluster;
import java.io.File;
import java.util.Map;
import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;
/**
* Holds configuration for {@link MiniAccumuloCluster}. Required configurations must be passed to
* constructor(s) and all other configurations are optional.
*
* @since 1.5.0
*/
public class MiniAccumuloConfig {
private MiniAccumuloConfigImpl impl;
MiniAccumuloConfig(MiniAccumuloConfigImpl config) {
this.impl = config;
}
MiniAccumuloConfigImpl getImpl() {
return impl;
}
/**
* @param dir
* An empty or nonexistent directory that Accumulo and Zookeeper can store data in.
* Creating the directory is left to the user. Java 7, Guava, and Junit provide methods
* for creating temporary directories.
* @param rootPassword
* The initial password for the Accumulo root user
*/
public MiniAccumuloConfig(File dir, String rootPassword) {
this.impl = new MiniAccumuloConfigImpl(dir, rootPassword);
}
/**
* Calling this method is optional. If not set, it defaults to two.
*
* @param numTservers
* the number of tablet servers that mini accumulo cluster should start
*/
public MiniAccumuloConfig setNumTservers(int numTservers) {
impl.setNumTservers(numTservers);
return this;
}
/**
* Calling this method is optional. If not set, defaults to 'miniInstance'
*
* @since 1.6.0
*/
public MiniAccumuloConfig setInstanceName(String instanceName) {
impl.setInstanceName(instanceName);
return this;
}
/**
* Calling this method is optional. If not set, it defaults to an empty map.
*
* @param siteConfig
* key/values that you normally put in accumulo.properties can be put here.
*/
public MiniAccumuloConfig setSiteConfig(Map<String,String> siteConfig) {
impl.setSiteConfig(siteConfig);
return this;
}
/**
* Calling this method is optional. A random port is generated by default
*
* @param zooKeeperPort
* A valid (and unused) port to use for the zookeeper
*
* @since 1.6.0
*/
public MiniAccumuloConfig setZooKeeperPort(int zooKeeperPort) {
impl.setZooKeeperPort(zooKeeperPort);
return this;
}
/**
* Configure the time to wait for ZooKeeper to startup. Calling this method is optional. The
* default is 20000 milliseconds
*
* @param zooKeeperStartupTime
* Time to wait for ZooKeeper to startup, in milliseconds
*
* @since 1.6.1
*/
public MiniAccumuloConfig setZooKeeperStartupTime(long zooKeeperStartupTime) {
impl.setZooKeeperStartupTime(zooKeeperStartupTime);
return this;
}
/**
* Sets the amount of memory to use in the master process. Calling this method is optional.
* Default memory is 128M
*
* @param serverType
* the type of server to apply the memory settings
* @param memory
* amount of memory to set
*
* @param memoryUnit
* the units for which to apply with the memory size
*
* @since 1.6.0
*/
public MiniAccumuloConfig setMemory(ServerType serverType, long memory, MemoryUnit memoryUnit) {
impl.setMemory(serverType, memory, memoryUnit);
return this;
}
/**
* Sets the default memory size to use. This value is also used when a ServerType has not been
* configured explicitly. Calling this method is optional. Default memory is 128M
*
* @param memory
* amount of memory to set
*
* @param memoryUnit
* the units for which to apply with the memory size
*
* @since 1.6.0
*/
public MiniAccumuloConfig setDefaultMemory(long memory, MemoryUnit memoryUnit) {
impl.setDefaultMemory(memory, memoryUnit);
return this;
}
/**
* @return a copy of the site config
*/
public Map<String,String> getSiteConfig() {
return impl.getConfiguredSiteConfig();
}
/**
* @return name of configured instance
*
* @since 1.6.0
*/
public String getInstanceName() {
return impl.getInstanceName();
}
/**
* @return The configured zookeeper port
*
* @since 1.6.0
*/
public int getZooKeeperPort() {
return impl.getConfiguredZooKeeperPort();
}
/**
* @param serverType
* get configuration for this server type
*
* @return memory configured in bytes, returns default if this server type is not configured
*
* @since 1.6.0
*/
public long getMemory(ServerType serverType) {
return impl.getMemory(serverType);
}
/**
* @return memory configured in bytes
*
* @since 1.6.0
*/
public long getDefaultMemory() {
return impl.getDefaultMemory();
}
/**
* @return the base directory of the cluster configuration
*/
public File getDir() {
return impl.getDir();
}
/**
* @return the root password of this cluster configuration
*/
public String getRootPassword() {
return impl.getRootPassword();
}
/**
* @return the number of tservers configured for this cluster
*/
public int getNumTservers() {
return impl.getNumTservers();
}
/**
* @return is the current configuration in jdwpEnabled mode?
*
* @since 1.6.0
*/
public boolean isJDWPEnabled() {
return impl.isJDWPEnabled();
}
/**
* @param jdwpEnabled
* should the processes run remote jdwpEnabled servers?
* @return the current instance
*
* @since 1.6.0
*/
public MiniAccumuloConfig setJDWPEnabled(boolean jdwpEnabled) {
impl.setJDWPEnabled(jdwpEnabled);
return this;
}
/**
* @return the paths to use for loading native libraries
*
* @since 1.6.0
*/
public String[] getNativeLibPaths() {
return impl.getNativeLibPaths();
}
/**
* Sets the path for processes to use for loading native libraries
*
* @param nativePathItems
* the nativePathItems to set
*
* @since 1.6.0
*/
public MiniAccumuloConfig setNativeLibPaths(String... nativePathItems) {
impl.setNativeLibPaths(nativePathItems);
return this;
}
}