2016-04-11 4 views
0

Ich möchte eine HTTP-Upload-API testen, die eine Liste von Dateien in einer einzigen Anfrage akzeptiert. Ich möchte ein Gatling-Skript schreiben, das jedes Mal eine Anfrage mit einer zufälligen Anzahl von Körperteilen generiert. DieseGatling Anfrage mit zufälliger Anzahl von Körperteilen

ist, was ich habe:

feed(feeder) 
    .exec(
    { 
     var req = http("My request") 
     .post("/${id}") 
     .header("Content-Type", "multipart/mixed") 

     1 to Random.nextInt(10) foreach { 
     i => { 
      req = req.bodyPart(
      ByteArrayBodyPart("file-put", session => randomByteArray(10 * 1024 + Random.nextInt(10 * 1024 * 1024))) 
       .contentType("application/pdf") 
       .fileName(session => s"/$i-UPLOAD-TEST.pdf") 
     ) 
     } 
     } 
     req 
    } 
) 

private def randomByteArray(size: Int): Array[Byte] = { 
    val bytes = new Array[Byte](size) 
    Random.nextBytes(bytes) 
    bytes 
} 

bei jeder Anfrage die Dateigrößen und der Inhalt werden randomisiert, so dass die randomByteArray funktioniert gut. Aber jedes Mal bekomme ich die gleiche Anzahl von Körperteilen. Ich nehme an, es ist, weil die Anforderung „Vorlage“ zu Beginn der Simulation erzeugt wird, so dass die foreach Schleife läuft nur einmal und konfiguriert die Anzahl der Körperteile für alle künftigen Anforderungen.

Wie kann ich die Anzahl der Körperteile jedes Mal zufällig machen?

Antwort

1

Sie müßten jeden Zweig bauen (eine für einen Teil, einen für 2 usw.) vorher und dann switch randomly.