本文介绍微服务压测中的参数文件URL和动态参数调用规则。
参数文件URL:提供一个公网可下载的文件地址
平台会把该参数文件分发到每一个施压机,应用每一次调用参数就在该文件中按顺序读取一行。文件中也支持动态函数参数。
参数文件填写格式:
方法参数类型:填写的内容是一个字符串类型的JSON数组,数组的每一位代表对应位置的参数类型。除了Java基本类型,其余类型需要填写完整的类路径。
方法参数:填写的内容是一个字符串类型的JSON数组,数组的每一位代表对应位置的参数。
如下所示:
方法 | 参数类型填写方式 | 文件参数格式 |
|
|
|
|
|
|
|
|
|
|
|
|
动态参数
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"]