Gatling中的简单馈线,不使用csv文件

bot*_*ide 1 scala gatling

如何在不使用csv文件的情况下在Gatling中创建一个简单的进纸器?我尝试过Gatling文档中的脚本.我在文档中看到过一个例子

val random = new util.Random
val feeder = Iterator.continually(Map("email" -> random.nextString(20) + "@foo.com"))
Run Code Online (Sandbox Code Playgroud)

我不明白上面的代码.

我尝试使用带有csv文件的送纸器的脚本并成功执行.如何编写可以获取定义值的馈线,而不是从csv文件中提供数据.

Oni*_*iel 7

正如文档所述,a Feeder只是一个别名Iterator[Map[String, T]].您只需要确保您的馈线提供无限的价值流,如RüdigerKlaehn所强调的那样.

既然你说你已经能够使用内置csv进纸器运行一个例子,让我们把它转换成我们自己的进纸器,这样就可以更清楚上面的自定义进纸器代码做了什么.

我们来自高级教程的示例:

object Search {

  val feeder = csv("search.csv").random // 1, 2

  val search = exec(http("Home")
    .get("/"))
    .pause(1)
    .feed(feeder) // 3
    .exec(http("Search")
    .get("/computers?f=${searchCriterion}") // 4
    .check(css("a:contains('${searchComputerName}')", "href").saveAs("computerURL"))) // 5
    .pause(1)
    .exec(http("Select")
    .get("${computerURL}")) // 6
    .pause(1)
}
Run Code Online (Sandbox Code Playgroud)

这是生成Feed的部分:

  val feeder = csv("search.csv").random // 1, 2
Run Code Online (Sandbox Code Playgroud)

这是search.csv文件:

searchCriterion,searchComputerName
Macbook,MacBook Pro
eee,ASUS Eee PC 1005PE
Run Code Online (Sandbox Code Playgroud)

让我们用我们的新自定义进纸器代替它:

/* This is our list of choices, we won't ready from csv anymore */
val availableComputers = List(
  Map("searchCriterion" -> "MacBook", "searchComputerName" -> "Macbook Pro"),
  Map("searchCriterion" -> "eee", "searchComputerName" -> "ASUS Eee PC 1005PE")
)

/* Everytime we call this method we get a random member of availableComputers */
def pickARandomComputerInfo() = {
  availableComputers(Random.nextInt(availableComputers.size))
}

/* Continually means every time you ask feeder for a new input entry, 
   it will call pickARandomComputerInfo to gerenate an input for you.
   So iterating over feeder will never end, you will always get
   something */
val feeder = Iterator.continually(pickARandomComputerInfo)
Run Code Online (Sandbox Code Playgroud)

这在您提供的示例中很难看到,但您可以将其拆分以更好地解决它:

def getRandomEmailInfo() = Map("email" -> random.nextString(20) + "@foo.com")
val feeder = Iterator.continually(getRandomEmailInfo)
Run Code Online (Sandbox Code Playgroud)