Jmeter:如何动态增加 Request json 的大小。 (IBM cloudant db 通过 Jmeter 可接受的最大 json 文件大小。)

Jmeter: How I can increase the size of Request json dynamically. (IBM cloudant db maximum acceptable json file size through Jmeter.)

我必须通过 Jmeter 在 IBM cloudant db 中测试可接受的最大 JSON 大小。我已经创建了一个 JSON 文件,我需要在 JMeter 的 JSON 文件中增加公民详细信息的编号。举个例子,我创建了一个 JSON 文件,并在第一次迭代中传递了一个公民的信息,下一次迭代应该是两个公民,并且它会不断增加......第 n 次迭代应该是 n 没有公民详细信息。(如果我增加 body,JSON 大小也会增加)。我该怎么做,谁能提出建议。

"docs": [
    {
        "name": "Nicholas",
        "age": 45,
        "gender": "male",
        "_attachments": {

        }
    },
    {
        "name": "Taylor",
        "age": 50,
        "gender": "male",
        "_attachments": {

        }
    }  
]
 }

如果要向 JSON payload on each iteration of the Thread Group 添加新条目:

  1. JSR223 PreProcessor 添加为要参数化的 HTTP 请求采样器的子项
  2. 将以下代码放入"Script"区域:

    import groovy.json.JsonBuilder
    import groovy.json.internal.LazyMap
    import org.apache.commons.lang3.RandomStringUtils
    import org.apache.commons.lang3.RandomUtils
    
    def data = []
    
    0.upto(vars.get('__jm__Thread Group__idx') as int, {
        def entry = new LazyMap()
        entry.put('name', RandomStringUtils.randomAlphabetic(10))
        entry.put('age', RandomUtils.nextInt(18, 99))
        entry.put('gender', 'male')
        entry.put('__attachments', {})
        data.add(entry)
    })
    
    def builder = new JsonBuilder()
    
    builder(docs: data.collect {
        [name: it.get('name'), age: it.get('age'), gender: it.get('gender'), __attachments: it.get('__attachments')]
    })
    
    sampler.getArguments().removeAllArguments()
    sampler.addNonEncodedArgument('', builder.toPrettyString(), '')
    sampler.setPostBodyRaw(true)
    
  3. 就是这样,在线程组的每次迭代中,HTTP Request 采样器将发送一个递增的 "docs" 随机数据。

参考文献: