本文介绍微服务压测中的参数文件URL和动态参数调用规则。
参数文件URL:提供一个公网可下载的文件地址
平台会把该参数文件分发到每一个施压机,应用每一次调用参数就在该文件中按顺序读取一行。文件里面也支持动态函数参数。
参数文件填写格式:
- 方法参数类型:填写的内容是一个字符串类型的JSON数组,数组的每一位代表对应位置的参数类型。除了Java基本类型,其余类型需要填写完整的类路径。
- 方法参数:填写的内容是一个字符串类型的JSON数组,数组的每一位代表对应位置的参数。
如下所示:
方法 | 参数类型填写方式 | 文件参数格式 |
---|---|---|
String sayHello(String name) | ["java.lang.String"] | |
String helloBean(HelloBean helloBean) | ["com.alibaba.pts.dubbo.api.DemoService"] | |
String helloList(List helloList1, List helloList2) | ["java.util.List","java.util.List"] | |
String sayHello(String name) | ["java.lang.String"] |
动态参数
PTS微服务压测内置了若干函数,可实现简单的随机参数。
平台每一次调用接口时,通过动态参数模板,先生成实际参数,然后再调用此参数。动态参数以标识符${__
开头,并以标识符}
为结束。运行时,平台会将标识符及其中间所有的字符串,替换成动态生成的字符串。其余字符串保持不变。
- 生成随机数
用户填写示例 转换结果 说明 ${__Random(1,1000)} - 第一次:3454
- 第二次:67
- 第三次:53
随机1~1000中的一个数字。 ["Tom",463${__Random(5,10)}] - 第一次:["Tom",4635]
- 第二次:["Tom",4637]
- 第三次:["Tom",4638]
随机5~10中的一个数字。动态参数之外的字符串,["Tom",和463]会保持原样。 - 生成不同格式的当前时间
用户填写示例 转换结果 说明 ${__time(,)} 1450056496991 获取1970年1月1日到当前的毫秒数。 ${__time(yyyyMMdd,)} 20151214 当前时间格式化成年月日。 ${__time(HHmmss,)} 092816 当前时间格式化成时分秒。 ${__time(yyyyMMdd-HHmmss,)} 20151214-092816 当前时间格式化成年月日-时分秒。 ["time":"${__time(HHmmss,)}.log"] ["time":"053816.log"] 动态参数之外的字符串,["time","和.log"]会保持原样。 - 随机字符串
用户填写示例 转换结果 说明 ${__RandomString(5)} faAfg 随机5个英文字母,包含大小写。 ${__RandomString(5,abcd)} aabdc 随机5个英文字母,随机范围是abcd四个英文字母。 ["name":"${__RandomString(5)}"] ["name":"abddc"] 动态参数之外的字符串,["name","和"]会保持原样。 - 随机指定字符串或者数字
用户填写示例 转换结果 说明 ${__RandomSpecifiedString(aaa;;;bbb;;;ccc)} bbb 随机从aaa、bbb或ccc中取一个字符串。 ${__RandomSpecifiedString(111;;;222;;;333)} 333 随机从111、222或333中取一个字符串。 ["name":"${__RandomSpecifiedString(aaa;;;bbb;;;ccc)}"] ["name":"ccc"] 动态参数之外的字符串,["name","和"]会保持原样。 - MVEL表达式
用户填写示例 转换结果 说明 ${__Expression(3+5)} 8 获取表达式3+5的值。 ${__Expression(${__RandomSpecifiedString(100;;;200;;;300)}+5)} 105 表达式嵌套,随机取100、200或者300中的一个数字加上5,实际结果可能是105、205或者305中的一个。 ["time":"${__Expression(3*5)}"] ["time":"15"] 动态参数之外的字符串,["time","和"]会保持原样。
一个复杂参数填写示例:
- 调用接口函数:
String sayHello(String name)
- 动态参数填写格式:
["${__RandomString(4,abcdefg)}-${__RandomSpecifiedString(aaa;;;bbb;;;ccc)}-${__Expression(3+5)}]
- 实际参数:
["adag-ccc-8"]