我正在创建一个负载测试,我需要从数据库中获取数据,所以我创建了另一个文件,用于从db获取数据并将其导出到csv文件,以后将该文件用作馈送器,导出到csv isn'工作
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报告错误
能否请你帮忙
你做:
var dataString: ArrayBuffer[String] = ArrayBuffer[String]()
writer.writeRow(dataString)
dataString
总是空的,你不会覆盖dataString
我想你的
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
})