Судя по обсуждению Gatling, я так поняла, что здесь есть люди понимающие и в этом инструменте и в Scala. Поэтому попробую задать свой вопрос здесь, прежде чем идти в официальную группу (как-то не удается сформулировать вопрос по-английски, надеюсь на родном языке это получится лучше )
В ходе нагрузочного теста вызываются библиотеки.
Тест-кейс:
Вызываю первый раз библиотеку, получаю параметр dictionary_sync2
В новый запрос подставляю полученный параметр ${dictionary_sync2}. Получаю респонс, в котором беру новый номер библиотеки dictionary_sync2 (новая переменная с таким-же именем запоминается “поверх” старой)
Делаю новый запрос, в который подставляю переменную dictionary_sync2 и так по лупу, пока в респонсе приходит нужная мне переменная.
Я написала следующий код:
val request_dictionary = exec(http("request_dictionary") //получаю переменную первый раз
.post("""/dict""")
.headers(headers_Content_Length_0)
.param("""request""", """<request type="sync" version="1.1"> <dictionary sync_ts="${dictionary_sync}"/></request>""")
.check(
xpath("/example/dictionary/@sync_ts")
.find
.dontValidate
.saveAs("dictionary_sync2")
)
)
Далее мне надо как-то “закуклить” следующий запрос - Т.е. мне надо делать один и тот же запрос до тех пор, пока переменная dictionary_sync2 не придет пустой. Это может быть на 10 или на 5 “круге”: Чувствую, что делаю что-то не так, но не могу понять как правильно его зациклить на самом себе и при этом не сделать loop бесконечным. В таком варианте я получаю ошибку:
14:19:36.750 [ERROR] i.g.c.a.InnerWhile - Could not evaluate condition: Can’t cast value 2014.06.19 18:24:52.311 of type class java.lang.String into interface scala.collection.Seq, exiting loop
val request_new_dictionary = foreach ("${dictionary_sync2}", "dictionary_sync2") {
doIf(session => session("dictionary_sync2").as[String].length > 0){
exec(http("request_new_dictionary")
.post("""/dict""")
.headers(headers_Content_Length_0)
.param("""request""", """<request type="sync" version="1.1"> <dictionary sync_ts="${dictionary_sync2}"/></request>""")
.check(
xpath("/response/dictionary/@sync_ts")
.find
.dontValidate
.saveAs("dictionary_sync2")
)
)
}
}
убираю условие foreach ("${dictionary_sync2}", “dictionary_sync2”) - запрос отправляется только один раз
P.S В Scala - я полный ноль. У меня “родной” язык - Java