我试着用各种“Rest”和“atOnceUser”进行注射。我在留档上没有找到一个好的解决方案。
我的方法是使用本地计数器创建一个名为“getNextNumber()”的函数,以增加“atOnceUser”的数量,但该函数一开始只调用一次。
有什么想法吗?
我的代码:
class TestCombinationGetFiles extends Simulation {
var counter: Int =1
def getNextNumber():Int = {
counter+= 1
return counter
}
val Get20Files = scenario("get20Files")
.feed(UuidFeeder.feeder)
.exec(WebAuth.AuthenticateUser)
.pause(30)
.exec(WebCloudContent.GoToTestFolder20)
val Get10Files = scenario("get10Files").feed(UuidFeeder.feeder)
.exec(WebAuth.AuthenticateUser)
.pause(15)
.exec(WebCloudContent.GoToTestFolder10)
val loadFolder20TestRamp =
scenario("loadFolder20TestRamp").exec(WebAuthSwisscom.AuthenticateUser,
WebCloudContentSwisscom.GoToTestFolder20)
setUp(Get20Files.inject(
splitUsers(36) into(
atOnceUsers(getNextNumber()))
separatedBy(30 seconds))
/* messy Code with correct functionality
atOnceUsers(1),
nothingFor(30 seconds),
atOnceUsers(2),
nothingFor(30 seconds),
atOnceUsers(3),
nothingFor(30 seconds),
atOnceUsers(4),
nothingFor(30 seconds),
atOnceUsers(5),
nothingFor(30 seconds),
atOnceUsers(6),
nothingFor(30 seconds),
atOnceUsers(7),
nothingFor(30 seconds),
atOnceUsers(8),
nothingFor(30 seconds))
*/
,
Get10Files.inject(
splitUsers(16) into(
atOnceUsers(1))
separatedBy(15 seconds))
).protocols(WebSetUp.httpProtocol)
}
我想你发现了加特林身上缺失的一个特征!我将进一步开发此功能,并向Gatling团队提交一个pull请求(希望)将其加入到项目中,但与此同时,您可以通过提供自己的自定义InjectionStep
实现来获得所需的功能——只需将此粘贴到模拟
文件的顶部即可:
import io.gatling.core.controller.inject._
import scala.concurrent.duration._
case class AtOnceIncrementalInjection(users: Int) extends InjectionStep {
require(users > 0, "The number of users must be a strictly positive value")
var count = users
override def chain(chained: Iterator[FiniteDuration]): Iterator[FiniteDuration] = {
val currentUsers = count
count += 1
Iterator.continually(0 milliseconds).take(currentUsers) ++ chained
}
}
def atOnceIncrementalUsers(initialUsers:Int) = AtOnceIncrementalInjection(initialUsers)
这基本上就是你试图用atoceusers
做的,但关键的区别是计数在chain
方法中,这将得到你想要的递增行为,因为每次Gatling决定发送一些请求时,chain
都会被调用。
现在,您可以像在ceusers上使用的那样使用helper函数:
splitUsers(36) into(
atOnceIncrementalUsers(1))
separatedBy(30 seconds))
Gatling解析Strings参数值并将它们转换为函数,这些函数将根据存储在会话中的数据计算结果,然后对其进行评估。 加特林文件 有没有办法在exec中手动执行此操作? 我有多个使用EL属性的请求体模板,发送的请求将因进纸器而异 我目前拥有的代码如下: 我希望没有办法评估嵌套的EL属性,但是有没有办法使用会话变量手动评估它?类似于 我在其他一些问题中看到过ELCompiler被引用,但不确定从哪
我有一个包含JSON数组的JSON文件 测验json 我想针对endpoint测试JSON数组中的每个元素,以观察系统针对唯一有效负载的性能 目前我有 测试ervice.scala 我无法从作为JSON Gatling文档称JSON Feeder将数组的每个元素加载到一个记录集合中 https://gatling.io/docs/2.3/session/feeder/ 即: 并将正文设置为 问题是
我有一个加特林记录,现在我想重复这个场景10次,但我遇到了一些问题,我的重复动作只在第一步启动,不会完成场景的整个步骤。我能知道有什么问题吗?我是否需要在每一步中添加重复(10){}?下面是我的scala代码。
我的加特林版本是2.2.0,例如: 只是一个接受用户名并返回凭据字符串的函数。 如您所见,用户名存储在
我对加特林和scala不熟悉,所以这绝对是一个00b问题,但我正在努力解决这个问题。我发现这篇很棒的博客文章能够使用UUIDhttp://www.andrewgorton.uk/blog/gatling-uuid-feeder/ 这很好用,我的问题是,当我把它放入循环时,我不知道如何获得新的值。 我是这样用的- 如果我在后续测试中使用${uuid},它将是相同的值。如何为下一次通话获取新值?
我有一个数组,我想用于2个馈线。我希望每个馈线都能够使用数组中的所有值。但似乎值用完了