要设置全局 Options,你可在脚本最外层定义一个 option 对象(export const option = {…}),再根据你的需求,在 option 对象中定义 tlsConfig、http 等字段。
注意:说明:
注意:参数详情可参见 PTS JavaScript API 文档:Option。
一、HTTP 全局配置
通过 option 里的 http 字段,你可配置压测引擎作为 HTTP 客户端的相关参数,这些参数对本次压测任务的所有 HTTP 请求全局生效。
常用参数如下:
·headers:设置请求头。
·basicAuth:使用 HTTP basic auth 认证时,通过该参数传入用户名和密码。
·disableKeepAlives:若要禁用长连接,可将该字段设置为 true。
·discardResponseBody:若要丢弃服务端返回的响应包体,可将该字段设置为 true。
·http2:若要启用 HTTP2 协议,可将该字段设置为 true。
·maxIdleConns:单个 VU 的最大连接数,默认值为 100个。
·maxIdleConnsPerHost:单个 VU 针对单个 host(地址+端口)的最大连接数,默认值为 2。
·maxRedirects:重定向跳转的最大次数,默认值为 10次。
·timeout:请求超时时间,单位为毫秒,默认值为 10000(10 秒)。
脚本示例:
import http from 'pts/http';import { check } from 'pts';export const option = { http: { maxRedirects: 10, maxIdleConns: 100, headers: { 'key': 'value' } }}export default function () { // get request with headers and parameters const resp1 = http.get('http://httpbin.org/get', { headers: { Connection: 'keep-alive', 'User-Agent': 'pts-engine', }, query: { name1: 'value1', name2: 'value2', }, }); console.log(resp1.json().args.name1); // 'value1' check('status is 200', () => resp1.statusCode === 200); check('body.args.name1 equals value1', () => resp1.json().args.name1 === 'value1'); check('headers.key equals value', () => resp1.json().headers.key === 'value')}
二、WebSocket 全局配置
通过 option 里的 ws 字段,你可配置压测引擎作为 WebSocket 客户端的相关参数,这些参数对本次压测任务的所有 WebSocket 请求全局生效。
常用参数如下:
·handshakeTimeout:握手超时时间,单位为毫秒,默认值为 30 秒。
·readTimeout:读消息超时时间,单位为毫秒,默认不限制。
·writeControlTimeout:写控制指令超时时间,单位为毫秒,默认为 10 秒。
·writeTimeout:写消息超时时间,单位为毫秒,默认不限制。
示例:
export const option = { ws: { writeTimeout: 3000, readTimeout: 3000, }}
三、TLS 全局配置
压测引擎作为客户端,在建立 TLS (Transport Layer Security/传输层安全协议)连接时,支持以下配置选项:
·insecureSkipVerify:是否验证服务器的证书链和主机名。若设置为 true 则不验证(默认为 false)。
·rootCAs:在验证服务器证书时,使用的一组根证书颁发机构。 若为空,则默认使用主机的根 CA 集。
·certificates:在双向 TLS 认证中,客户端提供的供服务端验证的证书列表(证书文件可通过场景的 文件管理 > 请求文件 上传)。
示例:
export const option = { tlsConfig: { 'localhost': { insecureSkipVerify: false, rootCAs: [open('ca.crt')], certificates: [{cert: open('client.crt'), key: open('client.key')}] } }}
四、预处理与后处理配置
·setupTimeoutSeconds:预处理(setup)步骤的超时时间。默认为 60 秒。 示例:
export const option = { setupTimeoutSeconds: 30 }
·teardownTimeoutSeconds:后处理(teardown)步骤的超时时间。默认为 60 秒。
export const option = { teardownTimeoutSeconds: 30}
注意:说明:
注意:关于脚本的预处理/后处理的详情,参见:脚本概述。