2016-02-11 82 views
0

如何在不使用csv文件的情况下在加特林中创建简单馈线? 我已经尝试了Gatling文档的脚本。 我已经在文档加特林简单馈线不使用csv文件

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

我不明白上面的代码中所看到的一个例子。

我尝试了一个使用csv文件并且成功执行的馈线的脚本。如何从csv文件中提供数据,而不是如何编写可以采用定义值的馈线。

+0

后更完整的示例,以便人们可以帮助你。馈线只是产生价值的无限流。 –

回答

1

作为docs状态,Feeder只是Iterator[Map[String, T]]的别名。您只需确保您的喂食器提供无限量的价值流,如RüdigerKlaehn所强调的。

既然你说你已经能够使用内置的CSV馈线运行的例子,让我们将其转化为我们自己的馈线所以它变得更清楚上面的自定义馈线代码做什么。

让我们采取的是来自advanced tutorial的例子:

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) 
} 

这是生成提要部分:

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

这是search.csv文件:

searchCriterion,searchComputerName 
Macbook,MacBook Pro 
eee,ASUS Eee PC 1005PE 

让我们用我们的新定制送纸器替换:

/* 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) 

这是很难在你提供的例子来看看,但你可以把它分解,以便更好地它已了解:

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