Как исправить этот код, я не получаю ошибку, но данные не экспортируются в CSV - PullRequest
0 голосов
/ 09 апреля 2019

Я создаю нагрузочное тестирование и мне нужно получить данные из базы данных, поэтому я создал еще один файл в gatling, чтобы получить данные из базы данных и экспортировать их в файл csv, чтобы позже использовать этот файл в качестве фидера, экспортируя в CSV не работает

import java.io._

import com.github.tototoshi.csv._
import io.gatling.core.Predef._
import io.gatling.core.feeder.SourceFeederBuilder
import io.gatling.jdbc.Predef._

import scala.collection.mutable.ArrayBuffer

class GenerateData extends Simulation {

  val csvFileLocation = new File("data.csv")
  val writers: CSVWriter = CSVWriter.open(csvFileLocation)

  // load and register JDBC driver for MySQL
  Class.forName("com.mysql.cj.jdbc.Driver")

  // DATABASE
  val dbStatement: String = System.getProperty("dbStatement", "SELECT * FROM db limit 1")
  val dbQuery: SourceFeederBuilder[Any] = jdbcFeeder("jdbc:mysql://localhost:3306/table?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC", "username", "pass", dbStatement)
//
  var recordCount: Int = dbQuery.readRecords.length
  var mList = new Array[String](recordCount)
  var dataString: ArrayBuffer[String] = ArrayBuffer[String]()
  var dataCounts: ArrayBuffer[Int] = ArrayBuffer[Int]()
  val out = new BufferedWriter(new FileWriter(csvFileLocation))
  val writer = new CSVWriter(out)

  val scn = scenario("Database Query")
    .feed(dbQuery)
    writer.writeRow(dataString)
    writer.close()

  setUp(scn.inject(atOnceUsers(1)))
}

Ничего не добавлено в CSV-файл, и я получаю только ошибку об отчете от gatling

Не могли бы вы помочь

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

Вы делаете:

var dataString: ArrayBuffer[String] = ArrayBuffer[String]()
writer.writeRow(dataString)

dataString всегда пусто, вы не перезаписываете dataString

0 голосов
/ 10 апреля 2019

Я думаю, что ваши

writer.writeRow(dataString) writer.close()

линии также должны быть в правильном шаге gatling dsl?

так ...

val scn = scenario("Database Query")
.feed(dbQuery)
.exec(session -> {
    //code to add the value from you dbQuery feeder to dataString 
    writer.writeRow(dataString)
    writer.close()
    session
})
...