有没有一种方法可以在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/

10-12 19:40