本文介绍微服务压测中的参数文件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"]