io.nosqlbench.engine.api.activityconfig.rawyaml.RawScenarios Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of engine-api Show documentation
Show all versions of engine-api Show documentation
The engine API for nosqlbench;
Provides the interfaces needed to build internal modules for the
nosqlbench core engine
package io.nosqlbench.engine.api.activityconfig.rawyaml;
import io.nosqlbench.nb.api.errors.BasicError;
import java.util.*;
public class RawScenarios {
public static String STEPNAME = "%03d";
private final Map> scenarios = new LinkedHashMap<>();
public List getScenarioNames() {
return new ArrayList<>(scenarios.keySet());
}
public void setPropertiesByReflection(Object scenariosObject) {
scenarios.clear();
Objects.requireNonNull(scenariosObject);
if (scenariosObject instanceof Map) {
Map rawNamedScenarios = (Map) scenariosObject;
for (Map.Entry namedEntry : rawNamedScenarios.entrySet()) {
String scenarioName = namedEntry.getKey();
Object scenarioObj = namedEntry.getValue();
if (scenarioObj == null) {
throw new BasicError("Unable to use a null value for scenario named " + scenarioName + " in yaml.");
}
if (scenarioObj instanceof CharSequence) {
scenarios.put(scenarioName, Map.of(String.format(STEPNAME, 1), scenarioObj.toString()));
} else if (scenarioObj instanceof List) {
List list = (List) scenarioObj;
Map scenarioMap = new LinkedHashMap<>();
for (int i = 0; i < list.size(); i++) {
scenarioMap.put(String.format(STEPNAME, i), list.get(i));
}
scenarios.put(scenarioName, scenarioMap);
} else if (scenarioObj instanceof Map) {
scenarios.put(scenarioName, (Map)scenarioObj);
}
}
} else {
throw new RuntimeException("Named scenarios must be a map at the top level, instead found '" + scenariosObject.getClass().getCanonicalName() + "'");
}
}
public Map getNamedScenario(String scenarioName) {
return scenarios.get(scenarioName);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy