有没有一种方法可以在vegeta中更改json主体,在vegeta中进行发布请求负载测试。
我想在json主体中为每个请求发送一个具有不同参数的请求。例如,如果我有
POST https://endpoint.com/createNew
@/targets/data.json
和data.json看起来像
{
"id": 1234
}
最好的方法是什么,以使攻击中的每个请求都有不同的请求数据?
最佳答案
我需要做一些类似的事情,并决定使用vegeta lib而不是cli来实现这一点,这使我可以控制HTTP请求
因此,您需要编写自己的函数,该函数返回vegeta.Targeter
func NewCustomTargeter() vegeta.Targeter {
return func(tgt *vegeta.Target) error {
if tgt == nil {
return vegeta.ErrNilTarget
}
tgt.Method = "POST"
tgt.URL = "https://endpoint.com/createNew"
rand := generateFourDigitRandom()
payload := '{ "id":"`+rand+ `" } `
tgt.Body = []byte(payload)
return nil
}
}
并在这样的主要功能中使用此功能
targeter := NewCustomTargeter()
attacker := vegeta.NewAttacker()
var metrics vegeta.Metrics
for res := range attacker.Attack(targeter, rate, duration, "Load Test") {
metrics.Add(res)
}
metrics.Close()
fmt.Printf("%+v \n", metrics)
关于performance-testing - Vegeta负载测试: different body for each POST request in the attack,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43443586/