在下面的代码片段中,我希望会话函数在HttpRequestbBuilder SolrProductionDataRequestBuilder之前执行,但我无法实现...... Scala和Gatling相对较新,所以请在这里原谅一个明显的错误...... (我需要修改会话密钥以使它们在将它们添加到http请求之前使其适合Solr - Solr允许(需要)重复密钥.Solr查询(从Splunk日志派生)通过tsv馈送器读入会话中)< / p>
var scn = scenario("Solr load scenario using production solr request traffic")
.feed(queryParameterFeeder)
.exec(session => {
duplicateGatlingSessionMap(session.attributes)
session
})
.exec(
SolrProductionDataRequestBuilder("wow", gatlingSessionMap)
.build()
.asJSON
.check(status.is(200))
)
.pause(3000 milliseconds, 5000 milliseconds)
答案 0 :(得分:1)
来自Session API doc:
会话实例是不可变的!
我不知道您的duplicateGatlingSessionMap
做了什么,但您的exec(function)
仅返回原始会话。
注意:请勿使用var
,请使用val
。没有理由使用可重新分配的参考文献。
答案 1 :(得分:0)
正如Stephane已经提到的“会话”是不可变的,即在你的第一个exec()中,你没有返回修改过的会话。否则exec()语句的流程就像代码一样,因此按顺序编写。
不确定你的代码是做什么的,但首选的/惯用的方法是这样写:
def duplicateGatlingSessionMap(session: Session) Session = {
// your session modification logic here
}
val scn = scenario("Solr load scenario using production solr request traffic")
.feed(queryParameterFeeder)
.exec( session => // above defined function which modifies the session and returns it back
duplicateGatlingSessionMap(session)
)
.exec(
SolrProductionDataRequestBuilder("wow", gatlingSessionMap)
.build()
.asJSON
.check(status.is(200))
)
.pause(3000 milliseconds, 5000 milliseconds)
希望这有帮助。
编辑:见评论