2016-04-11 5 views
0

Я хочу протестировать 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 выполняется только один раз и настраивает количество частей тела для всех будущих запросов.

Как я могу сделать количество частей тела случайным каждый раз?

ответ

1

Вам нужно будет построить каждую ветку (одну на одну часть, одну на 2 и т. Д.) Заранее, а затем switch randomly.

Смежные вопросы