首页 > 解决方案 > 为大型 json 数据文件创建一个加特林自定义馈线

问题描述

我是 Gatling 和 Scala 的新手,我正在尝试创建一个具有自定义“馈送器”的测试,这将允许每个负载测试线程使用(和重用)大约 250 个 json 数据文件中的一个作为后负载。

每个 post 有效负载文件有 1000 条这种形式的记录:

[{
    "zip": "66221-2115",
    "recordId": "18378e10-e046-4ad3-9293-0847f8a05b2f",
    "firstName": "ANGELA",
    "lastName": "MADEUP",
    "city": "Springfield",
    "street": "123 Fake St",
    "state": "KS",
    "email": "AMADEUP@GMAIL.COM"
 }, 
 ...
]

(每个文件大约 250kB)

理想情况下,我想在测试开始时阅读它们,如下所示:

int fileCount = 3;

ClassLoader classLoader = getClass().getClassLoader();
List<File> files = new ArrayList<>();

for (int i =0; i<=fileCount; i++){
  String fileName = String.format("identityMatching/address_data_%d.json", i);
  File file = new File(classLoader.getResource(fileName).getFile());
  files.add(file);
}

然后使用以下内容获取文件内容:

FileUtils.readFileToString(files.get(1), StandardCharsets.UTF_8)

我现在正在摆弄让这段代码在 scala 中工作,但我想知道一些事情:

1) 我可以将此代码制作成馈送器,以便我可以像 CSV 馈送器一样使用它吗?

2) 我应该什么时候将文件中的 json 加载到内存中?在测试开始时或每个线程需要数据时?

标签: scalagatlingscala-gatling

解决方案


我还没有收到任何答案,所以我将发布我学到的东西。

1)我能够使用带有文件名的进纸器(不是文件内容)

2)我认为读取数据的最佳方法是:

.body(RawFileBody(jsonMessage))

RawFileBody(path: Expression[String]) 其中 path 是将按原样上传的文件的位置(来自https://gatling.io/docs/current/http/http_request


推荐阅读