Gatling官网教程翻译之Simulation Structure

Simulation是我们操作Gatling时,主要编写的对象,本文主要介绍Simulation的结构。
还是那句,欢迎转载,不过请注明出处。

Simulation结构详解
原文来自: http://gatling.io/docs/2.1.7/general/simulation_structure.html

Simulation是一个包含四个部分的Scala类:
1.HTTP协议设置;
2.header定义;
3.场景定义;
4.simulation定义;

译者注:原文还有一个简单的举例,不过链接已404(https://github.com/gatling/gatling/blob/master/gatling-bundle/src/universal/user-files/simulations/computerdatabase/BasicSimulation.scala)。

HTTP protocol configuration – HTTP协议设置

第一个元素就是定义HTTP协议。
在一些例子里面,这个配置非常的基础,只是单纯地定义了一下。
baseURL就是下面全部相对路径(推荐使用)指向的地址。这里的base URL就是 http://computer-database.gatling.io
common headers会加到每个请求里面。

HTTP配置会被储存成一个我们可以在simulation里面定义的Scala的值。

Headers definition – header定义

下面的例子中你将看到,我们在gatling中定义场景的时候,我们可以给每个请求定义header。因为例子中的header是通过recorder,也就是录制器生成的,所有header都会在文件前面被声明,然后在场景定义中被调用。

注意:加上一个通用的header看上去没啥用,但是别忘了,它们也可以直接影响到你server的处理方式(就像Accept-Encoding 或者是 If-Last-Modified)

headers可以使用Scala的map进行定义:

val headers_10 = Map("Content-Type" -> """application/x-www-form-urlencoded""")

Scenario definition – 场景定义

Header定以后,接下来就是场景的定义。场景的定义需要设置一个名称,因为你需要在simulation里面定义好几个场景。场景一般会保存成一个Scala的值。

val scn = scenario("ScenarioName")

这个场景结构由两个方法组成:exec 和 pause。exec用来定义一个动作的描述,通常是发送一个测试应用的请求。pause是用来设置用户的思考时间的,思考时间通常是指两个请求之间的间隔。
HTTP请求通常像下面那样去定义:

// Here's an example of a POST request
http("request_10")
  .post("/computers")
  .headers(headers_10)
  .formParam("name", "Beautiful Computer")
  .formParam("introduced", "2012-05-30")
  .formParam("discontinued", "")
  .formParam("company", "37")

上面的请求实际上发送的数据如下:

HTTP request:
POST http://computer-database.gatling.io/computers
headers=
  Accept: [text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8]
  Content-Type: [application/x-www-form-urlencoded]
  DNT: [1]
  Accept-Language: [en-US,en;q=0.5]
  Accept-Encoding: [gzip, deflate]
  User-Agent: [Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0]
  Referer: [http://computer-database.gatling.io/computers/new]
params=
  company: [37]
  discontinued: []
  name: [Beautiful Computer]
  introduced: [2012-05-30]

Simulation definitions – 多场景定义

The last part of the file contains the simulation definition, this is where you define the load you want to inject to your server, e.g.:

下面的例子里包括了simulation定义,定义了你希望注入到server的位置:

setUp(
  scn.inject(atOnceUsers(1)) // (1)
    .protocols(httpConf) // (2)
)

解释下上面的脚本:
1.注入了一个虚拟用户到scn这个场景里面;
2.使用的http配置是httpConf,所有之前定义的http配置,比如base URL都会被加载到这个simulation里面;

Hooks – 就是Hooks

Gatling提供了两种Hooks:
- before – 在你的simulation执行前执行
- after – 在你的simulation执行后执行

before {
  println("Simulation is about to start!")
}
after {
  println("Simulation is finished!")
}

注:这里不能使用Gatling的DSL语言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值