Scala 如何使用Gatling遍历目录中的所有文件?

Scala 如何使用Gatling遍历目录中的所有文件?,scala,load-testing,gatling,scala-gatling,Scala,Load Testing,Gatling,Scala Gatling,我需要迭代一个目录中的多个文件,以便对每个文件执行文件上载。目录位于src/test/resources中 我了解Gatling的文件馈送器,但我没有看到任何允许我从目录中查找文件的文件(文件名是任意的,如果可能的话,在测试中不应该是硬代码) 最好的方法是什么?首先,您需要一个带有文件的feeder。这是一个数组由Maps组成。这个映射需要有字符串作为一个键,每个文件都有它自己的映射和我们需要的东西 假设我们只需要一个名字,这样就可以了: def getFilePropsFromDir(dir:

我需要迭代一个目录中的多个文件,以便对每个文件执行文件上载。目录位于
src/test/resources

我了解Gatling的文件馈送器,但我没有看到任何允许我从目录中查找文件的文件(文件名是任意的,如果可能的话,在测试中不应该是硬代码)


最好的方法是什么?

首先,您需要一个带有文件的feeder。这是一个
数组
Map
s组成。这个映射需要有
字符串作为一个键,每个文件都有它自己的映射和我们需要的东西

假设我们只需要一个名字,这样就可以了:

def getFilePropsFromDir(dir:String):数组[Map[String,String]={
val d=新文件(目录)
if(d.exists&&d.isDirectory){
d、 listFiles.filter(u.isFile.map)(x=>map(“路径”->x.toString))
}否则{
数组()
}
}
val feederWithFiles=getFilePropsFromDir(“src/test/resources/dir_with_files/”)
然后你需要这样的场景(我不上传任何东西)

val sut=scenario(“只需输入文件并查询谷歌”)
.feed(feederWithFiles)
.exec(会话=>{
val path=session(“path”)。as[String]//从映射中按键获取值-我们在那里只有“path”
println(路径)
val fileToUpload=getFileToUpload(path)//伪函数
session.setAll(
//准备数据供以后使用。也可以是k->v
(“fileToUpload”,fileToUpload),
//另一个说明如何使用会话元素的条目
(“谷歌地址”http://google.com") 
)
}
)
行政长官(
执行官(
http(“应该做一些上传的事情,但我只是得到谷歌”)
.get(“${googleAddress}”)//从会话访问密钥“googleAddress”
)
)
设置(
sut.注入(在(1.秒)内)
).协议(http)
def getFileToUpload(路径:字符串):字符串={
路径
}
我创建了2个文件,GET执行了2次。现在你需要弄清楚如何上传

我有:

导入io.gatling.core.Predef_
导入io.gatling.core.body.StringBody
导入io.gatling.core.structure.ChainBuilder
导入io.gatling.http.Predef.http
导入java.io.xml文件
导入scala.concurrent.duration_
导入scala.io.Source

你能不能-列出文件夹中的所有文件-列出一个映射列表,例如
列表(Map(“file”,file01.txt),Map(“file”,file02.txt)…
)-使用
迭代器(myList)
(检查API)?注意你的策略依赖于
src/test/resources
现有的,即运行于一个分解的项目,而不是一个打包的jar。想知道是否有可能改为使用类路径解析。@pocza您的解决方案似乎有效,但我很好奇为什么在第二个代码段中有嵌套的
exec
调用?