Я хочу протестировать API загрузки HTTP, который принимает список файлов в одном запросе. Я хочу написать сценарий Gatling, который каждый раз генерирует запрос со случайным числом частей тела.Запрос Gatling со случайным числом частей тела
Это то, что у меня есть:
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
работает отлично. Но каждый раз я получаю такое же количество частей тела. Я предполагаю, что это потому, что запрос «шаблон» генерируется в начале моделирования, поэтому цикл foreach
выполняется только один раз и настраивает количество частей тела для всех будущих запросов.
Как я могу сделать количество частей тела случайным каждый раз?