2015-08-27 13 views
5

Ich möchte eine zufällige URL auf http-Anforderung erhalten für GatlingWie bekomme ich eine Random URL auf http Anfrage für Gatling?

Mein Szenario wie folgt definiert ist:

import io.gatling.core.Predef._ 
import io.gatling.http.Predef._ 
import scala.concurrent.duration._ 
import scala.util.Random 

class testSimulation extends Simulation { 

    val httpConf = http.baseURL("OURURL") 


    val scn = scenario("View HomePages") 
       .exec(
         http("Home page") 
           .get("/" + new Random().nextInt()) 
           .resources(
             http("genericons.css").get("/wp-content/themes/twentyfifteen/genericons/generi$ 
             http("style.css").get("/wp-content/themes/twentyfifteen/style.css?ver=4.2.3"), 
             http("jquery.js").get("/wp-includes/js/jquery/jquery.js?ver=1.11.2"), 
             http("jquery-migrate.min.js").get("/wp-includes/js/jquery/jquery-migrate.min.j$ 
             http("skip-link-focus-fix.js").get("/wp-content/themes/twentyfifteen/js/skip-l$ 
             http("functions.js").get("/wp-content/themes/twentyfifteen/js/functions.js?ver$ 
             http("wp-emoji-release.min.js").get("/wp-includes/js/wp-emoji-release.min.js?v$ 
             http("wp-emoji-release.min.js").get("/wp-includes/js/wp-emoji-release.min.js?v$ 
             http("skip-link-focus-fix.js").get("/wp-content/themes/twentyfifteen/js/skip-l$ 
             http("functions.js").get("/wp-content/themes/twentyfifteen/js/functions.js?ver$ 
          ) 
       ) 

    setUp(
     scn.inject 
     (
     rampUsersPerSec(1) to(300) during(60 seconds), 
     constantUsersPerSec(300) during(600 seconds) 
    ) 
     .protocols(httpConf) 
    ) 
} 

Ich habe nur eine Zufallszahl erzeugt statt einer pro Anfrage. Weißt du, wie man es löst? Vielen Dank !

+0

Ich bin nicht vertraut mit Gatling. Betrachtet man nur die Skala, so erscheint der Parameter, einschließlich des Aufrufs Random.nextInt, an "scenario.exec" wird sofort in der val-Zeile ausgeführt. Der übliche Weg, den Randomizer mehr als einmal aufzurufen, wäre es, ihn in eine Funktion zu schreiben, die mehr als einmal ausgeführt wird, was wiederum davon abhängen kann, ob 'scenario.exec()' eine Funktion als Parameter annehmen kann oder ob Sie eine Klasse erweitern können, die sie als Parameter für Ihren Anwendungsfall richtig verwendet. – Paul

Antwort

2

Sie übergeben einen Wert, so wird natürlich new Random().nextInt nur einmal aufgerufen, wenn die Simulation erstellt wird.

Sie müssen eine Expression, dh eine Funktion übergeben. Nur dann wird es jedes Mal bewertet.

.get(session => "/" + new Random().nextInt())