Ich versuche, eine Reihe von Leistungstests in Gatling zu modularisieren.Modularisierung von Szenarien mit Gatling
Einige der Tests führen den gleichen anfänglichen Pfad durch die Seiten aus, also dachte ich, ich könnte sie in eine Reihe von Szenarien aufteilen, wobei jedes Szenario eine Reihe von gemeinsamen Aktionen in einer eigenen Datei und dann ein Finale definiert Simulationsdefinition, die einfach die angegebenen Szenarien nacheinander ausführt.
Was ich dann brauche, ist, dass meine Simulation diese Szenarien nacheinander ausführt; aber ich kann nur herausfinden, wie ich sie entweder gleichzeitig oder mit einer bestimmten Verzögerung zwischen ihnen ausführen kann. Gibt es eine Simulations-Setup-Option, um die definierten Szenarien nacheinander auszuführen, ohne eine willkürliche Verzögerung festzulegen?
EDIT
Derzeit habe ich folgende von Dateien festgelegt:
homepageHeaders.scala
package advanced
object homepageHeaders {
val homepage_headers_1 = Map(
"Accept" -> """text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8""",
"If-Modified-Since" -> """Wed, 20 Mar 2013 15:36:31 +0000""",
"If-None-Match" -> """"1363793791""""
)
}
homepageChain.scala
package advanced
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import com.excilys.ebi.gatling.jdbc.Predef._
import akka.util.duration._
import homepageHeaders._
object homepageChain {
val homepageChain =
//Homepage
exec(http("homepage")
.get("/")
.headers(homepageHeaders.homepage_headers_1)
)
}
pageHeaders.scala
012.351.package advanced
object pageHeaders {
val page_headers_1 = Map(
"Accept" -> """text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"""
)
}
pageChain.scala
package advanced
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import com.excilys.ebi.gatling.jdbc.Predef._
import akka.util.duration._
import pageHeaders._
object pageChain {
val pageChain =
//Page Menu
exec(http("page request")
.get("/page1")
.headers(pageHeaders.page_headers_1)
)
}
pageSimulation.scala
package advanced
import com.excilys.ebi.gatling.core.Predef._
import com.excilys.ebi.gatling.http.Predef._
import com.excilys.ebi.gatling.jdbc.Predef._
import homepageChain._
import pageChain._
class pageSimulation extends Simulation {
val urlBase = "http://www.mytestsite.com"
val httpConf = httpConfig
.baseURL(urlBase)
.acceptHeader("image/png,image/*;q=0.8,*/*;q=0.5")
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("en-gb,en;q=0.5")
.userAgentHeader("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0")
val pageScenario = scenario("Bodycare Scenario")
.exec(homepageChain.homepageChain)
.exec(pageChain.pageChain)
setUp(
homepageScenario.users(1).protocolConfig(httpConf)
)
}
Der Fehler, ich bin immer ist:
14:40:50.800 [ERROR] c.e.e.g.a.ZincCompiler$ - /Gatling/user-files/simulations/advanced/pageChain.scala:13: not found: value exec
14:40:50.807 [ERROR] c.e.e.g.a.ZincCompiler$ - exec(http("page request")
14:40:50.808 [ERROR] c.e.e.g.a.ZincCompiler$ - ^
14:40:53.988 [ERROR] c.e.e.g.a.ZincCompiler$ - /Gatling/user-files/simulations/advanced/homepageChain.scala:13: not found: value exec
14:40:53.989 [ERROR] c.e.e.g.a.ZincCompiler$ - exec(http("homepage")
14:40:53.989 [ERROR] c.e.e.g.a.ZincCompiler$ - ^
14:41:17.274 [ERROR] c.e.e.g.a.ZincCompiler$ - two errors found
Exception in thread "main" Compilation failed
Klar fehlt mir etwas in meinem Definition, aber ich verstehe einfach nicht, was es ist
ich das allgemeine Prinzip sehen kann, aber ich kämpfen um es in der Praxis zu implementieren - mein Mangel an Java/Scala fängt wirklich an, nach Hause zu kommen –
An diesem Punkt ist das eher ein Gatling DSL Problem (Doku, vielleicht) als ein Scala. Hier ein Beispiel: https://github.com/excilys/gatling-hands-on/blob/master/gatling-hands-on-demo/src/test/scala/computerdatabase/Step10.scala –
In Bezug auf Ihre Bearbeitung: Sie vermissen einige Importe (sie waren hier sicher, wenn Sie den Recorder verwendet haben). Hier fehlt der Bootstrap, aber die anderen werden früher oder später getroffen. Bitte werfen Sie einen Blick auf die von mir zur Verfügung gestellte Probe und fügen Sie alle hinzu. –