【问题标题】:JMeter / AMQ - Substitute substring when reading strings from JSON fileJMeter / AMQ - 从 JSON 文件读取字符串时替换子字符串
【发布时间】:2012-10-03 05:46:11
【问题描述】:

从星期一开始,我就一直在这方面碰壁,当时客户告诉我,我们需要模拟多达 50,000 个伪并发实体来进行性能测试。这是设置。我有一个充满 JSON 对象的文本文件,其中包含看起来有点像这样的 JSON 数据:

{"customerId"=>"900", "assetId"=>"NN_18_144", "employee"=>"", "visible"=>false,
 "GenerationDate"=>"2012-09-21T09:41:39Z", "index"=>52, "Category"=>2...}

这是一条线的一个对象。我正在使用 JMeter 的 JMS 发布者按顺序读取这些行:

${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json)}

每一个都包含不同的场景。

我需要做的是读取文件并将assetId的值替换为从50,000个非顺序的预生成字符串列表中随机选择的值(我不可能为每个assetId创建一个单独的文件,因为这将涉及在负载注入器中乱扔 50,000 个文件,并在 JMeter 中为每个文件配置一个线程组)。以编程方式,执行替换是一件微不足道的事情,但在 JMeter 中动态执行它并不是那么简单。

通常,我会将其视为有趣的技术挑战并花几天时间解决,但我只有周末,我怀疑我会在办公室过夜。

谁能帮帮我,好吗?

谢谢。

【问题讨论】:

    标签: json scripting jms activemq jmeter


    【解决方案1】:

    要读取您的资产,请使用 CSV Data SetConfig ,我想assetId 将是变量名。

    修改你的表达方式:

       ${_StringFromFile(${PATH_TO_DATA_FILES}scenario_9.json, lineToSubstitute)}
    

    要进行替换,请添加 Beanshell samplerJSR223_SamplerJ(使用 groovy)并编写替换代码:

       String assetId = vars.get("assetId");
       String lineToSubstitute = vars.get("lineToSubstitute");
       String lineSubstituted = ....;
       vars.put("lineSubstituted", lineSubstituted);
    

    【讨论】:

    • 谢谢,伙计。我希望我能给你一个以上的支持。我正在使用带有 groovy 的 JSR223 预处理器,但我不知道如何访问变量、执行替换或读取assetIds。你救了我的命。
    【解决方案2】:

    如果您的 JSON 正文始终相同,或者您的内容几乎没有变化,您应该:

    • 使用带有 RAW POST 正文的 HTTP 采样器

    • 将带有资产 ID 变量的 JSON 正文放入其中

    • 将资产 ID 放入 CSV 数据集配置中

    避免使用 ${_StringFromFile},因为它有成本。

    如果您需要脚本,请使用 JSR223 后处理器和外部文件中的脚本 + 缓存(自 2.8 起可用)以便编译脚本。

    【讨论】:

    • 哦,这要简单得多。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2017-04-24
    • 2017-03-23
    • 2018-07-07
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多