2016-06-03 5 views
1

Следующий код работает, как ожидалось, для каждой итерации следующего значения из 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 

ответ

1

Поскольку csv(...) фактически FeederBuilder, который вызывается один раз для получения фидера, который будет использоваться в сценарии.

Смежные вопросы