带有随机数 body 部分的 Gatling 请求
Gatling request with random number of body parts
我想测试在单个请求中接受文件列表的 HTTP 上传 API。
我想编写一个 Gatling 脚本,每次生成一个带有随机数 body 部分的请求。
这是我的:
feed(feeder)
.exec(
{
var req = http("My request")
.post("/${id}")
.header("Content-Type", "multipart/mixed")
1 to Random.nextInt(10) foreach {
i => {
req = req.bodyPart(
ByteArrayBodyPart("file-put", session => randomByteArray(10 * 1024 + Random.nextInt(10 * 1024 * 1024)))
.contentType("application/pdf")
.fileName(session => s"/$i-UPLOAD-TEST.pdf")
)
}
}
req
}
)
private def randomByteArray(size: Int): Array[Byte] = {
val bytes = new Array[Byte](size)
Random.nextBytes(bytes)
bytes
}
对于每个请求,文件大小和内容都是随机的,因此 randomByteArray
工作正常。但是每次我得到相同数量的 body 零件。我假设这是因为请求 "template" 是在模拟开始时生成的,所以 foreach
循环只运行一次并为所有未来请求配置 body 部分的数量。
如何让 body 个零件的数量每次都是随机的?
您必须事先构建每个分支(一个用于一个部分,一个用于 2,等等)然后 switch randomly。
我想测试在单个请求中接受文件列表的 HTTP 上传 API。 我想编写一个 Gatling 脚本,每次生成一个带有随机数 body 部分的请求。
这是我的:
feed(feeder)
.exec(
{
var req = http("My request")
.post("/${id}")
.header("Content-Type", "multipart/mixed")
1 to Random.nextInt(10) foreach {
i => {
req = req.bodyPart(
ByteArrayBodyPart("file-put", session => randomByteArray(10 * 1024 + Random.nextInt(10 * 1024 * 1024)))
.contentType("application/pdf")
.fileName(session => s"/$i-UPLOAD-TEST.pdf")
)
}
}
req
}
)
private def randomByteArray(size: Int): Array[Byte] = {
val bytes = new Array[Byte](size)
Random.nextBytes(bytes)
bytes
}
对于每个请求,文件大小和内容都是随机的,因此 randomByteArray
工作正常。但是每次我得到相同数量的 body 零件。我假设这是因为请求 "template" 是在模拟开始时生成的,所以 foreach
循环只运行一次并为所有未来请求配置 body 部分的数量。
如何让 body 个零件的数量每次都是随机的?
您必须事先构建每个分支(一个用于一个部分,一个用于 2,等等)然后 switch randomly。