首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vegeta负载测试:对攻击中的每个POST请求使用不同的主体

Vegeta负载测试:对攻击中的每个POST请求使用不同的主体
EN

Stack Overflow用户
提问于 2017-04-17 08:30:20
回答 3查看 5.6K关注 0票数 6

有没有办法改变vegeta Post请求负载测试中的json主体?

我想为每个请求发送一个在json主体中具有不同参数的请求。例如,如果我有

代码语言:javascript
复制
POST https://endpoint.com/createNew
@/targets/data.json

data.json看起来像是

代码语言:javascript
复制
{
   "id": 1234
}

让攻击中的每个请求都有不同的请求数据的最佳方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2018-10-16 17:43:12

我需要做一些类似的事情,并决定使用vegeta lib而不是cli来控制HTTP请求

因此您需要编写自己函数,它返回一个vegeta.Targeter

代码语言:javascript
复制
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
    }
}

并在main函数中使用此函数,如下所示

代码语言:javascript
复制
    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)
票数 9
EN

Stack Overflow用户

发布于 2018-11-22 02:08:38

2018年7月10日,vegeta#PR300推出了-format=json选项。下面是vegeta README的描述:

格式使得与动态生成目标的程序的集成变得更容易。每个目标在其自己的行中是一个JSON对象。方法和url字段是必需的。如果存在,body字段必须采用base64编码。生成的JSON Schema详细定义了格式。

以及他们提供的示例:

代码语言:javascript
复制
jq -ncM '{method: "GET", url: "http://goku", body: "Punch!" | @base64, header: {"Content-Type": ["text/plain"]}}' |
  vegeta attack -format=json -rate=100 | vegeta encode
票数 2
EN

Stack Overflow用户

发布于 2017-04-17 13:12:53

如果您在targets文件夹下有多个文件,并且希望在负载测试中使用所有这些文件,我建议使用以下配置:

  1. Install Directory Listing Config插件使用JMeter插件管理器

  1. 将其配置为指向targets文件夹:

  1. HTTP Request采样器中使用__FileToString()函数,如下所示:

${__FileToString(${文件名},,)}

  1. 当您运行测试时,它将从targets目录中选取下一个文件,并将其内容用作请求主体

票数 -5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43443586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档