From f8a3b463e0c618598cdcc6d372cd71f64427ed69 Mon Sep 17 00:00:00 2001 From: Hari Krishnan Date: Wed, 8 Sep 2021 15:33:02 +0530 Subject: [PATCH] renaming config params --- ...ateFeature.scala => GatlingScenario.scala} | 8 +++- .../znsio/perfiz/PerfizConfiguration.scala | 11 +++-- src/test/resources/perfiz-deprecated.yaml | 18 +++++++ .../perfiz-gatling-scala-simulations.yaml | 3 ++ src/test/resources/perfiz.yaml | 4 +- .../perfiz/PerfizConfigurationSpec.scala | 48 ++++++++++++++++++- .../org/znsio/perfiz/PerfizSimulation.scala | 16 +++---- 7 files changed, 92 insertions(+), 16 deletions(-) rename src/main/scala/org/znsio/perfiz/{KarateFeature.scala => GatlingScenario.scala} (81%) create mode 100644 src/test/resources/perfiz-deprecated.yaml create mode 100644 src/test/resources/perfiz-gatling-scala-simulations.yaml diff --git a/src/main/scala/org/znsio/perfiz/KarateFeature.scala b/src/main/scala/org/znsio/perfiz/GatlingScenario.scala similarity index 81% rename from src/main/scala/org/znsio/perfiz/KarateFeature.scala rename to src/main/scala/org/znsio/perfiz/GatlingScenario.scala index 52fbb1a..83f615c 100644 --- a/src/main/scala/org/znsio/perfiz/KarateFeature.scala +++ b/src/main/scala/org/znsio/perfiz/GatlingScenario.scala @@ -9,19 +9,25 @@ import scala.beans.BeanProperty import scala.jdk.CollectionConverters._ import scala.language.postfixOps -class KarateFeature { +class GatlingScenario { @BeanProperty var karateFile: String = _ + @deprecated("Will be removed in upcoming version. Replaced by gatlingScenarioName.") @BeanProperty var gatlingSimulationName: String = _ + @BeanProperty + var gatlingScenarioName: String = _ + @BeanProperty var loadPattern: List[GatlingWorkLoadModelStep] = new ArrayList[GatlingWorkLoadModelStep]() @BeanProperty var uriPatterns: List[String] = new ArrayList[String]() + def name(): String = Option(gatlingScenarioName) filterNot (_.isEmpty) getOrElse gatlingSimulationName + def openWorkloadModelSteps: Seq[GatlingWorkLoadModelStep] = loadPattern.asScala.toList.filter(loadPattern => { val openModelLoadPatterns = scala.List(NothingFor, AtOnceUsers, RampUsers, ConstantUsersPerSecond, RampUsersPerSecond, HeavisideUsers) openModelLoadPatterns.contains(loadPattern.patternType) diff --git a/src/main/scala/org/znsio/perfiz/PerfizConfiguration.scala b/src/main/scala/org/znsio/perfiz/PerfizConfiguration.scala index f5464ee..5b697d6 100644 --- a/src/main/scala/org/znsio/perfiz/PerfizConfiguration.scala +++ b/src/main/scala/org/znsio/perfiz/PerfizConfiguration.scala @@ -11,17 +11,22 @@ import scala.jdk.CollectionConverters._ import scala.language.postfixOps class PerfizConfiguration { + @deprecated("Will be removed in upcoming version. Replaced by gatlingScenarios.") @BeanProperty - var karateFeatures: List[KarateFeature] = new ArrayList[KarateFeature]() + var karateFeatures: List[GatlingScenario] = new ArrayList[GatlingScenario]() + @BeanProperty + var gatlingScenarios: List[GatlingScenario] = new ArrayList[GatlingScenario]() @BeanProperty var karateEnv: String = _ @BeanProperty var karateFeaturesDir: String = _ @BeanProperty var gatlingSimulationsDir: String = _ + @BeanProperty + var gatlingSimulationClass: String = _ - def karateFeaturesAsList = { - karateFeatures.asScala.toList + def gatlingScenariosAsList: scala.List[GatlingScenario] = { + karateFeatures.asScala.toList ++ gatlingScenarios.asScala.toList } } diff --git a/src/test/resources/perfiz-deprecated.yaml b/src/test/resources/perfiz-deprecated.yaml new file mode 100644 index 0000000..d910035 --- /dev/null +++ b/src/test/resources/perfiz-deprecated.yaml @@ -0,0 +1,18 @@ +karateFeaturesDir: "karate-features" +gatlingSimulationsDir: "src/gatling" +karateFeatures: + - karateFile: "petstore.feature" + gatlingSimulationName: "AllGet" + loadPattern: + - patternType: "nothingFor" + duration: "15 seconds" + - patternType: "constantUsersPerSec" + userCount: "1" + duration: "30 seconds" + randomised: "false" + - patternType: "constantUsersPerSec" + userCount: "3" + duration: "15 seconds" + randomised: "false" + uriPatterns: + - "/pets/{id}" \ No newline at end of file diff --git a/src/test/resources/perfiz-gatling-scala-simulations.yaml b/src/test/resources/perfiz-gatling-scala-simulations.yaml new file mode 100644 index 0000000..204b6af --- /dev/null +++ b/src/test/resources/perfiz-gatling-scala-simulations.yaml @@ -0,0 +1,3 @@ +karateFeaturesDir: "karate-features" +gatlingSimulationsDir: "src/gatling" +gatlingSimulationClass: "org.znsio.perfiz.PerfizSimulation" \ No newline at end of file diff --git a/src/test/resources/perfiz.yaml b/src/test/resources/perfiz.yaml index d910035..8ea9437 100644 --- a/src/test/resources/perfiz.yaml +++ b/src/test/resources/perfiz.yaml @@ -1,8 +1,8 @@ karateFeaturesDir: "karate-features" gatlingSimulationsDir: "src/gatling" -karateFeatures: +gatlingScenarios: - karateFile: "petstore.feature" - gatlingSimulationName: "AllGet" + gatlingScenarioName: "AllGet" loadPattern: - patternType: "nothingFor" duration: "15 seconds" diff --git a/src/test/scala/org/znsio/perfiz/PerfizConfigurationSpec.scala b/src/test/scala/org/znsio/perfiz/PerfizConfigurationSpec.scala index 6c7d57a..48c1b0e 100644 --- a/src/test/scala/org/znsio/perfiz/PerfizConfigurationSpec.scala +++ b/src/test/scala/org/znsio/perfiz/PerfizConfigurationSpec.scala @@ -3,6 +3,34 @@ package org.znsio.perfiz import org.scalatest.freespec.AnyFreeSpec class PerfizConfigurationSpec extends AnyFreeSpec { + "given deprecated yaml configuration" - { + System.setProperty("PERFIZ", this.getClass.getResource("/perfiz-deprecated.yaml").getPath) + + "when we parse it" - { + val configuration = PerfizConfiguration() + + "should not be null" in { + assert(configuration != null) + } + + "should extract karate features" in { + assert(configuration.gatlingScenariosAsList.size == 1) + } + + "should extract karate features dir" in { + assert(configuration.karateFeaturesDir.equals("karate-features")) + } + + "should extract gatling simulations dir" in { + assert(configuration.gatlingSimulationsDir.equals("src/gatling")) + } + + "should extract gatling simulation name" in { + assert(configuration.gatlingScenariosAsList.head.name().equals("AllGet")) + } + } + } + "given valid yaml configuration" - { System.setProperty("PERFIZ", this.getClass.getResource("/perfiz.yaml").getPath) @@ -13,8 +41,8 @@ class PerfizConfigurationSpec extends AnyFreeSpec { assert(configuration != null) } - "should extract karate features" in { - assert(configuration.karateFeaturesAsList.size == 1) + "should extract gatling scenarios" in { + assert(configuration.gatlingScenariosAsList.size == 1) } "should extract karate features dir" in { @@ -24,6 +52,22 @@ class PerfizConfigurationSpec extends AnyFreeSpec { "should extract gatling simulations dir" in { assert(configuration.gatlingSimulationsDir.equals("src/gatling")) } + + "should extract gatling scenario name" in { + assert(configuration.gatlingScenariosAsList.head.name().equals("AllGet")) + } + } + } + + "given valid yaml configuration with gatling scala simulation" - { + System.setProperty("PERFIZ", this.getClass.getResource("/perfiz-gatling-scala-simulations.yaml").getPath) + + "when we parse it" - { + val configuration = PerfizConfiguration() + + "should not be null" in { + assert(configuration != null) + } } } } diff --git a/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala b/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala index 1b65f99..e6ebe42 100644 --- a/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala +++ b/src/test/scala/org/znsio/perfiz/PerfizSimulation.scala @@ -14,8 +14,8 @@ class PerfizSimulation extends Simulation { private val configuration: PerfizConfiguration = PerfizConfiguration() - private val builders: List[PopulationBuilder] = configuration.karateFeaturesAsList.map(karateFeatureConfig => { - val openInjectionSteps = karateFeatureConfig.openWorkloadModelSteps.map(f = loadPattern => { + private val builders: List[PopulationBuilder] = configuration.gatlingScenariosAsList.map(gatlingScenario => { + val openInjectionSteps = gatlingScenario.openWorkloadModelSteps.map(f = loadPattern => { val openInjectionStep = loadPattern.getPatternType() match { case NothingFor => nothingFor(loadPattern.durationAsFiniteDuration) case AtOnceUsers => atOnceUsers(loadPattern.getUserCount()) @@ -38,7 +38,7 @@ class PerfizSimulation extends Simulation { } } else openInjectionStep }) - val closedInjectionSteps = karateFeatureConfig.closedWorkloadModelSteps.map(f = loadPattern => { + val closedInjectionSteps = gatlingScenario.closedWorkloadModelSteps.map(f = loadPattern => { loadPattern.getPatternType() match { case ConstantConcurrentUsers => constantConcurrentUsers(loadPattern.getUserCount()) during loadPattern.durationAsFiniteDuration @@ -48,16 +48,16 @@ class PerfizSimulation extends Simulation { } }) val protocol = karateProtocol( - karateFeatureConfig.getUriPatterns().asScala.map { uriPattern => uriPattern -> Nil }.toList: _* + gatlingScenario.getUriPatterns().asScala.map { uriPattern => uriPattern -> Nil }.toList: _* ) if (!openInjectionSteps.isEmpty) { - scenario(karateFeatureConfig.getGatlingSimulationName()). - exec(karateFeature("classpath:" + karateFeatureConfig.getKarateFile())). + scenario(gatlingScenario.name()). + exec(karateFeature("classpath:" + gatlingScenario.getKarateFile())). inject(openInjectionSteps). protocols(protocol) } else { - scenario(karateFeatureConfig.getGatlingSimulationName()). - exec(karateFeature("classpath:" + karateFeatureConfig.getKarateFile())). + scenario(gatlingScenario.name()). + exec(karateFeature("classpath:" + gatlingScenario.getKarateFile())). inject(closedInjectionSteps). protocols(protocol) }