2016-06-03 10 views
1

Der folgende Code funktioniert wie erwartet, für jede Iteration der nächste Wert aus dem valueFeed geknallt wird und in die Datei geschrieben output.csvGatling Feeders - die Schaffung neuer Instanzen

class TestSimulation extends Simulation { 
    val valueFeed = csv("input.csv") 

    val writer = { 
    val fos = new java.io.FileOutputStream("output.csv") 
    new java.io.PrintWriter(fos, true) 
    } 

    val scn = scenario("Test Sim") 
    .repeat(2) { 
     feed(valueFeed) 
     .exec(session => { 
      writer.println(session("value").as[String]) 
      session 
     }) 
    } 

    setUp(scn.inject(constantUsersPerSec(1) during (10 seconds))) 
} 

Nach Ende des Zulaufes Schöpfung im Futter inlined ist Methode ist das Verhalten immer noch genau die gleichen

class TestSimulation extends Simulation { 

    val writer = { 
    val fos = new java.io.FileOutputStream("output.csv") 
    new java.io.PrintWriter(fos, true) 
    } 

    val scn = scenario("Test Sim") 
    .repeat(2) { 
     feed(csv("input.csv")) 
     .exec(session => { 
      writer.println(session("value").as[String]) 
      session 
     }) 
    } 

    setUp(scn.inject(constantUsersPerSec(1) during (10 seconds))) 
} 

Da das Futter Schöpfung ich würde nicht jede Iteration nicht extrahiert wird, erwartet das gleiche Futter zu verwenden, aber es ist eigene Feed-Instanz erstellen.

Warum ist es dann das Verhalten bedeutet, dass der gleiche Feed verwendet wird und der erste Wert aus der Eingabedatei nicht immer auf die Ausgabe geschrieben wird?

Beispiel Eingabedatei (Daten abgeschnitten, mit mehreren Linien getestet leere feeder Ausnahme zu verhindern):

value 
1 
2 
3 
4 
5 

Antwort

1

Weil csv(...) tatsächlich FeederBuilder die einmal aufgerufen wird, um den Zubringer zu erzeugen innerhalb des Szenarios verwendet werden.

Verwandte Themen