diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java index b4023a306..ecf8b5f8f 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java @@ -1,8 +1,6 @@ package io.nosqlbench.engine.api.activityconfig.rawyaml; -import java.util.LinkedHashMap; -import java.util.LinkedList; -import java.util.List; +import java.util.*; public class RawScenarios extends LinkedHashMap> { @@ -11,6 +9,23 @@ public class RawScenarios extends LinkedHashMap> { } public List getNamedScenario(String scenarioName) { - return this.get(scenarioName); + Object v = this.get(scenarioName); + if (v==null) { return null; } + + // Yes this looks strange. Yes it will work. SnakeYaml and generics are a bad combo. + if (v instanceof List) { + return (List) v; + } else if (v instanceof CharSequence) { + return List.of(v.toString()); + } else if (v instanceof Map) { + Object[] o = ((Map) v).values().toArray(); + ArrayList strings = new ArrayList<>(o.length); + for (Object o1 : o) { + strings.add(o.toString()); + } + return strings; + } else { + throw new RuntimeException("Unknown type while access raw named scenarios data: " + v.getClass().getCanonicalName()); + } } } diff --git a/nb/src/main/resources/activities/examples/sequences.yaml b/nb/src/main/resources/activities/examples/sequences.yaml index 093403c09..c9bc71500 100644 --- a/nb/src/main/resources/activities/examples/sequences.yaml +++ b/nb/src/main/resources/activities/examples/sequences.yaml @@ -1,20 +1,20 @@ # eb sequences concat -# yields ABBCCCDDDDABBCCCDDDD +# yields A B B C C C D D D D A B B C C C D D D D # eb run driver=stdout workload=examples/sequences cycles=20 seq=interval -# yields ABCDDCBDCDABCDDCBDCD +# yields A B C D D C B D C D A B C D D C B D C D # eb run driver=stdout workload=examples/sequences cycles=20 seq=bucket -# yields ABCDBCDCDDABCDBCDCDD +# yields A B C D B C D C D D A B C D B C D C D D scenarios: - concat: driver===stdout seq===concat - bucket: driver===stdout seq===bucket - interval: driver===stdout seq===interval + concat: run driver===stdout seq===concat cycles=20 + bucket: run driver===stdout seq===bucket cycles=20 + interval: run driver===stdout seq===interval cycles=20 statements: - - A1: "|" + - A1: "A " ratio: 1 - - B2: "_" + - B2: "B " ratio: 2 - - C3: "=" + - C3: "C " ratio: 3 - - D4: ":" + - D4: "D " ratio: 4