package org.apache.hadoop.corona; import java.util.HashMap; import java.util.Map; /** * A fake {@link ConfigManager} that allows set the configuration manually */ public class FakeConfigManager extends ConfigManager { private final Map<String, Object> config = new HashMap<String, Object>(); private static final String SEPARATOR = "" + ((char)1); private enum PROPERTY { MAX, MIN, WEIGHT, PREEMPTED_TASKS_MAX_RUNNING_TIME, COMPARATOR, SHARE_STARVING_RATIO, STARVING_TIME_FOR_SHARE, STARVING_TIME_FOR_MIN, LOCALITY_WAIT; final private static String POSTFIX = "" + ((char)2); @Override public String toString() { return super.toString() + POSTFIX; } } public FakeConfigManager() { } @Override public void start() { } @Override public void close() { } public void setMaximum(String name, String type, int val) { String key = PROPERTY.MAX + name + SEPARATOR + type; config.put(key, val); } @Override public int getMaximum(String name, String type) { String key = PROPERTY.MAX + name + SEPARATOR + type; if (!config.containsKey(key)) { return Integer.MAX_VALUE; } return (Integer)config.get(key); } public void setMinimum(String name, String type, int val) { String key = PROPERTY.MIN + name + SEPARATOR + type; config.put(key, val); } @Override public int getMinimum(String name, String type) { String key = PROPERTY.MIN + name + SEPARATOR + type; if (!config.containsKey(key)) { return 0; } return (Integer)config.get(key); } public void setWeight(String name, double val) { String key = PROPERTY.WEIGHT + name; config.put(key, val); } @Override public double getWeight(String name) { String key = PROPERTY.WEIGHT + name; if (!config.containsKey(key)) { return 1.0; } return (Integer)config.get(key); } public void setComparator(String name, ScheduleComparator val) { String key = PROPERTY.COMPARATOR + name; config.put(key, val); } @Override public ScheduleComparator getComparator(String name) { String key = PROPERTY.COMPARATOR + name; if (!config.containsKey(key)) { return ScheduleComparator.FIFO; } return (ScheduleComparator)config.get(key); } public void setPreemptedTaskMaxRunningTime(long val) { config.put(PROPERTY.PREEMPTED_TASKS_MAX_RUNNING_TIME.toString(), val); } @Override public long getPreemptedTaskMaxRunningTime() { String key = PROPERTY.PREEMPTED_TASKS_MAX_RUNNING_TIME.toString(); if (!config.containsKey(key)) { return Long.MAX_VALUE; } return (Long)config.get(key); } public void setShareStarvingRatio(double val) { config.put(PROPERTY.SHARE_STARVING_RATIO.toString(), val); } @Override public double getShareStarvingRatio() { String key = PROPERTY.SHARE_STARVING_RATIO.toString(); if (!config.containsKey(key)) { return 0.5; } return (Double)config.get(key); } public void setStarvingTimeForShare(long val) { config.put(PROPERTY.STARVING_TIME_FOR_SHARE.toString(), val); } @Override public long getStarvingTimeForShare() { String key = PROPERTY.STARVING_TIME_FOR_SHARE.toString(); if (!config.containsKey(key)) { return Long.MAX_VALUE; } return (Long)config.get(key); } public void setStarvingTimeForMinimum(long val) { config.put(PROPERTY.STARVING_TIME_FOR_MIN.toString(), val); } @Override public long getStarvingTimeForMinimum() { String key = PROPERTY.STARVING_TIME_FOR_MIN.toString(); if (!config.containsKey(key)) { return Long.MAX_VALUE; } return (Long)config.get(key); } public void setLocalityWait(String type, LocalityLevel level, long val) { String key = PROPERTY.LOCALITY_WAIT + type + SEPARATOR + level; config.put(key, val); } @Override public long getLocalityWait(String type, LocalityLevel level) { String key = PROPERTY.LOCALITY_WAIT + type + SEPARATOR + level; if (!config.containsKey(key)) { return 0L; } return (Long)config.get(key); } }