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

Jmeter:如何动态增加请求json的大小。(IBM cloudant db通过Jmeter可接受的最大json文件大小。),jmeter,ibm-cloud,cloudant,jmeter-plugins,Jmeter,Ibm Cloud,Cloudant,Jmeter Plugins,我必须通过Jmeter在IBMCloudAntDB中测试最大可接受JSON大小。我已经创建了一个JSON文件,需要在JMeter中增加JSON文件中公民详细信息的数量。举个例子,我创建了一个JSON文件,并在第一次迭代中传递了一个公民的信息,下一次迭代应该是两个公民,它将不断增加。。。第n次迭代应该是n个公民详细信息(如果我增加主体,JSON大小也会增加)。我怎样才能做到这一点,请任何人提出建议 "docs": [ { "name": "Nicholas",

我必须通过Jmeter在IBMCloudAntDB中测试最大可接受JSON大小。我已经创建了一个JSON文件,需要在JMeter中增加JSON文件中公民详细信息的数量。举个例子,我创建了一个JSON文件,并在第一次迭代中传递了一个公民的信息,下一次迭代应该是两个公民,它将不断增加。。。第n次迭代应该是n个公民详细信息(如果我增加主体,JSON大小也会增加)。我怎样才能做到这一点,请任何人提出建议

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

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

        }
    }  
]
 }

如果要在每次迭代时向有效负载添加新条目,请执行以下操作:

  • 作为要参数化的HTTP请求采样器的子级添加
  • 将以下代码放入“脚本”区域:

  • 就是这样,在线程组的每次迭代中,采样器都会发送递增数量的带有随机数据的“文档” 参考资料:

    • 测试计划结构:


    很抱歉出现混淆,说明更新了Hanks Dmitri,不幸的是,上面的代码块将JSON文件封装为一个公民详细信息,这并没有增加公民详细信息的数量,作为第一次迭代,它应该是一个公民详细信息,第二个是两个公民详细信息和。。。第n次迭代,应该是n个公民详细信息。你能帮个忙吗
    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)