org.apache.hadoop.fs.slive.ConfigOption.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hadoop.fs.slive.ConfigOption.java

Source

/**
 * 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.fs.slive;

import org.apache.commons.cli.Option;

/**
 * Class which extends the basic option object and adds in the configuration id
 * and a default value so a central place can be used for retrieval of these as
 * needed
 */
class ConfigOption<T> extends Option {

    private static final long serialVersionUID = 7218954906367671150L;

    // config starts with this prefix
    private static final String SLIVE_PREFIX = "slive";

    // command line options and descriptions and config option name
    static final ConfigOption<Integer> MAPS = new ConfigOption<Integer>("maps", true, "Number of maps",
            SLIVE_PREFIX + ".maps", 10);

    static final ConfigOption<Integer> REDUCES = new ConfigOption<Integer>("reduces", true, "Number of reduces",
            SLIVE_PREFIX + ".reduces", 1);

    static final ConfigOption<Integer> OPS = new ConfigOption<Integer>("ops", true,
            "Max number of operations per map", SLIVE_PREFIX + ".map.ops", 1000);

    static final ConfigOption<Integer> DURATION = new ConfigOption<Integer>("duration", true,
            "Duration of a map task in seconds (MAX_INT for no limit)", SLIVE_PREFIX + ".duration",
            Integer.MAX_VALUE);

    static final ConfigOption<Boolean> EXIT_ON_ERROR = new ConfigOption<Boolean>("exitOnError", false,
            "Exit on first error", SLIVE_PREFIX + ".exit.on.error", false);

    static final ConfigOption<Integer> FILES = new ConfigOption<Integer>("files", true, "Max total number of files",
            SLIVE_PREFIX + ".total.files", 10);

    static final ConfigOption<Integer> DIR_SIZE = new ConfigOption<Integer>("dirSize", true,
            "Max files per directory", SLIVE_PREFIX + ".dir.size", 32);

    static final ConfigOption<String> BASE_DIR = new ConfigOption<String>("baseDir", true, "Base directory path",
            SLIVE_PREFIX + ".base.dir", "/test/slive");

    static final ConfigOption<String> RESULT_FILE = new ConfigOption<String>("resFile", true, "Result file name",
            SLIVE_PREFIX + ".result.file", "part-0000");

    static final ConfigOption<Short> REPLICATION_AM = new ConfigOption<Short>("replication", true,
            "Min,max value for replication amount", SLIVE_PREFIX + ".file.replication", (short) 3);

    static final ConfigOption<Long> BLOCK_SIZE = new ConfigOption<Long>("blockSize", true,
            "Min,max for dfs file block size", SLIVE_PREFIX + ".block.size", 64L * Constants.MEGABYTES);

    static final ConfigOption<Long> READ_SIZE = new ConfigOption<Long>("readSize", true,
            "Min,max for size to read (min=max=MAX_LONG=read entire file)", SLIVE_PREFIX + ".op.read.size", null);

    static final ConfigOption<Long> WRITE_SIZE = new ConfigOption<Long>("writeSize", true,
            "Min,max for size to write (min=max=MAX_LONG=blocksize)", SLIVE_PREFIX + ".op.write.size", null);

    static final ConfigOption<Long> SLEEP_TIME = new ConfigOption<Long>("sleep", true,
            "Min,max for millisecond of random sleep to perform (between operations)",
            SLIVE_PREFIX + ".op.sleep.range", null);

    static final ConfigOption<Long> APPEND_SIZE = new ConfigOption<Long>("appendSize", true,
            "Min,max for size to append (min=max=MAX_LONG=blocksize)", SLIVE_PREFIX + ".op.append.size", null);

    static final ConfigOption<Long> RANDOM_SEED = new ConfigOption<Long>("seed", true, "Random number seed",
            SLIVE_PREFIX + ".seed", null);

    // command line only options
    static final Option HELP = new Option("help", false, "Usage information");

    static final Option CLEANUP = new Option("cleanup", true, "Cleanup & remove directory after reporting");

    // non slive specific settings
    static final ConfigOption<String> QUEUE_NAME = new ConfigOption<String>("queue", true, "Queue name",
            "mapred.job.queue.name", "default");

    static final ConfigOption<String> PACKET_SIZE = new ConfigOption<String>("packetSize", true,
            "Dfs write packet size", "dfs.write.packet.size", null);

    /**
     * Hadoop configuration property name
     */
    private String cfgOption;

    /**
     * Default value if no value is located by other means
     */
    private T defaultValue;

    ConfigOption(String cliOption, boolean hasArg, String description, String cfgOption, T def) {
        super(cliOption, hasArg, description);
        this.cfgOption = cfgOption;
        this.defaultValue = def;
    }

    /**
     * @return the configuration option name to lookup in Configuration objects
     *         for this option
     */
    String getCfgOption() {
        return cfgOption;
    }

    /**
     * @return the default object for this option
     */
    T getDefault() {
        return defaultValue;
    }

}