Jdbc Feeder использует данные, созданные в симуляции перед шагом - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь создать фидер, основанный на данных jdbc, которые создаются на этапе перед сценарием. Мне не удается получить правильные данные в фидере.

package com.testing

import com.testing.config.Config
import io.gatling.core.Predef._
import io.gatling.core.Predef.Simulation
import io.gatling.core.feeder.SourceFeederBuilder
import io.gatling.jdbc.Predef.jdbcFeeder

object PostgresDb {

  def prepareData() {
   // postgress data generation here
  }

  def emptyDatabase() {
   // postgress truncate table
  }
}

class MyFeeder {
  private[this] val databaseConfig: Config.DatabaseConfig = Config.databaseConfig

  // Database feeder
  val dbData : SourceFeederBuilder[Any]
  = jdbcFeeder( databaseConfig.url
    , databaseConfig.username
    , databaseConfig.password
    , "SELECT \"Id\" FROM test.\"Ids\" ORDER BY random()"
  ).circular
}


class Experiment extends Simulation {

  before{ PostgresDb.emptyDatabase()
          PostgresDb.prepareData() }

  val lazyFeeder = new MyFeeder

  Class.forName("org.postgresql.Driver")

  val scn = scenario("Demo").feed(lazyFeeder.dbData).
            exec(session => {
                    println("Id: " + session("Id").as[String])
                    session }).inject(atOnceUsers(1))
  setUp(scn)

}

Я ожидаю, что в фидере будут данные, основанные на шаге подготовки / перед моим сценарием. Однако мне кажется, что я получаю данные моего предыдущего прогона, что подразумевает, что данные фидера инициализируются до того, как данные будут обновлены на шаге до.

Как я могу использовать свежие данные, а не данные, которые есть в базе данныхуже

1 Ответ

1 голос
/ 04 ноября 2019

Я думаю, что если вы определите фидер там, где он в данный момент находится, но инициализируете его в блоке «до», он должен работать.

в данный момент вы инициализируете и выполняете запрос фидера навремя загрузки вашего класса - до выполнения чего-либо (включая блок before).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...