Следующий код работает, как ожидалось, для каждой итерации следующего значения из valueFeed извлекается и записывается в файл output.csvГатлинга питатели - создание новых экземпляров
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)))
}
При создании корма встраиваются в кормах метод поведение еще точно то же
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)))
}
Поскольку создание корма не извлекается, я бы не ожидал каждой итерации использует один и тот же канал, но создавая свой собственный экземпляр корма.
Почему же это поведение подразумевает, что используется тот же канал, и первое значение из входного файла не всегда записывается на выход?
Пример входного файл (данные усеченные, испытанный с большим количеством линий, чтобы предотвратить пустое исключение фидера):
value
1
2
3
4
5