From ef1983e2f6e864063807b25b72c506663f44fa23 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Mon, 16 Mar 2020 11:41:36 -0500 Subject: [PATCH] support for Scenarios properties in Yaml Loader --- .../activityconfig/rawyaml/RawScenarios.java | 16 +++++ .../activityconfig/rawyaml/RawStmtsDoc.java | 9 +++ .../rawyaml/RawYamlStatementLoaderTest.java | 26 +++++++- .../resources/testdocs/docs_blocks_stmts.yaml | 64 ++++++++++--------- 4 files changed, 85 insertions(+), 30 deletions(-) create mode 100644 engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java 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 new file mode 100644 index 000000000..b4023a306 --- /dev/null +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawScenarios.java @@ -0,0 +1,16 @@ +package io.nosqlbench.engine.api.activityconfig.rawyaml; + +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.List; + +public class RawScenarios extends LinkedHashMap> { + + public List getScenarioNames() { + return new LinkedList<>(this.keySet()); + } + + public List getNamedScenario(String scenarioName) { + return this.get(scenarioName); + } +} diff --git a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java index 70941ecff..6f280fa0b 100644 --- a/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java +++ b/engine-api/src/main/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawStmtsDoc.java @@ -31,6 +31,7 @@ import java.util.List; */ public class RawStmtsDoc extends StatementsOwner { + private RawScenarios scenarios = new RawScenarios(); private List blocks = new ArrayList<>(); /** @@ -57,4 +58,12 @@ public class RawStmtsDoc extends StatementsOwner { this.blocks.clear(); this.blocks.addAll(blocks); } + + public RawScenarios getScenarios() { + return this.scenarios; + } + + public void setScenarios(RawScenarios scenarios) { + this.scenarios = scenarios; + } } diff --git a/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlStatementLoaderTest.java b/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlStatementLoaderTest.java index 6c3688c78..351d14e46 100644 --- a/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlStatementLoaderTest.java +++ b/engine-api/src/test/java/io/nosqlbench/engine/api/activityconfig/rawyaml/RawYamlStatementLoaderTest.java @@ -21,6 +21,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.annotations.Test; +import java.util.LinkedHashMap; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -30,7 +31,7 @@ public class RawYamlStatementLoaderTest { private final static Logger logger = LoggerFactory.getLogger(RawYamlStatementLoaderTest.class); @Test - public void tetLoadPropertiesBlock() { + public void testLoadPropertiesBlock() { RawYamlStatementLoader ysl = new RawYamlStatementLoader(); RawStmtsDocList rawBlockDocs = ysl.load(logger, "testdocs/rawblock.yaml"); assertThat(rawBlockDocs.getStmtsDocs()).hasSize(1); @@ -56,5 +57,28 @@ public class RawYamlStatementLoaderTest { assertThat(rawStmtsBlock.getName()).isEqualTo("block0"); } + @Test + public void testLoadScenarios() { + RawYamlStatementLoader ysl = new RawYamlStatementLoader(); + RawStmtsDocList erthing = ysl.load(logger, "testdocs/docs_blocks_stmts.yaml"); + List rawStmtsDocs = erthing.getStmtsDocs(); + assertThat(rawStmtsDocs).hasSize(2); + RawStmtsDoc rawStmtsDoc = rawStmtsDocs.get(0); + List blocks = rawStmtsDoc.getBlocks(); + RawScenarios rawScenarios = rawStmtsDoc.getScenarios(); + assertThat(rawScenarios.getScenarioNames()).containsExactly("default", "schema-only"); + List defaultScenario = rawScenarios.getNamedScenario("default"); + assertThat(defaultScenario).containsExactly("run type=stdout alias=step1","run type=stdout alias=step2"); + List schemaOnlyScenario = rawScenarios.getNamedScenario("schema-only"); + assertThat(schemaOnlyScenario).containsExactly("run type=blah tags=phase:schema"); + + assertThat(rawStmtsDoc.getName()).isEqualTo("doc1"); + assertThat(blocks).hasSize(1); + RawStmtsBlock rawStmtsBlock = blocks.get(0); + assertThat(rawStmtsBlock.getName()).isEqualTo("block0"); + + + + } } diff --git a/engine-api/src/test/resources/testdocs/docs_blocks_stmts.yaml b/engine-api/src/test/resources/testdocs/docs_blocks_stmts.yaml index 4b4b7d518..b90bca225 100644 --- a/engine-api/src/test/resources/testdocs/docs_blocks_stmts.yaml +++ b/engine-api/src/test/resources/testdocs/docs_blocks_stmts.yaml @@ -1,40 +1,46 @@ +scenarios: + default: + - run type=stdout alias=step1 + - run type=stdout alias=step2 + schema-only: + - run type=blah tags=phase:schema tags: - atagname: atagvalue + atagname: atagvalue name: doc1 statements: - - s1 - - s2 + - s1 + - s2 bindings: - b1 : b1d - b2 : b2d + b1: b1d + b2: b2d params: - param1: value1 + param1: value1 --- name: doc2 tags: - root1: val1 - root2: val2 + root1: val1 + root2: val2 blocks: - - name: block1 - tags: - block1tag: tag-value1 - params: - timeout: 23423 - foobar: baz - bindings: - b11: override-b11 - foobar: overized-beez - statements: - - s11 - - s12 - - name: block2 - tags: - root1: value23 - statements: - s13: statement thirteen - s14: statement fourteen + - name: block1 + tags: + block1tag: tag-value1 + params: + timeout: 23423 + foobar: baz + bindings: + b11: override-b11 + foobar: overized-beez + statements: + - s11 + - s12 + - name: block2 + tags: + root1: value23 + statements: + s13: statement thirteen + s14: statement fourteen params: - foobar: beez + foobar: beez bindings: - b11: b11d - b12: b12d + b11: b11d + b12: b12d