赞
踩
Max.Bai
2018-06
压测tcp请求的时候需要对数据进行处理才发送,比如AES数据加密。实现方法可以有两种,一种自己写java请求,不使用默认tcp sampler, 第二种用默认的Tcp sampler,beanshell实现AES加密。
记录下beanshell实现过程。
1. 添加TCP Sampler
EOL 设置为10 表示回车符号
2. 在TCP sampler添加 Add->Pre Process -> BeanShell PreProcess
3. 在BeanShell PreProcess 脚本里面添加如下代码。
AES 加密
- import org.apache.jmeter.protocol.tcp.sampler.*; // tcp sample lib
- import org.apache.jmeter.samplers.*; // jmeter samplers lib
- import org.apache.jmeter.config.*;
- import com.alibaba.fastjson.JSON; //fastjson jar save in /lib/ext folder or load in testplan
- import com.alibaba.fastjson.JSONObject;
- source("./telutils/AESCryptUtils.java"); //path start with bin as default
-
- String IV_PARAMETER = "941c2d70a830c950";
- String key = "941c2d70a830c950";
-
- String body = sampler.getRequestData(); // get tcp sample request data
- log.info("PreProcessor===========================================" + body);
-
- timestamp = System.currentTimeMillis(); // timestamp
- String seq_num ="201806071746210003";
- String s = String.format("abc %s %s", new Object[]{timestamp, seq_num}); //format string
- log.info("formate test --->" + s);
- log.info("dev id------->" + vars.get("dev_num")); // get vars, set vars.put("abc", "123");
-
- //parse json string to object
- JSONObject parseObject = JSON.parseObject(body);
- // get data
- // data to string
- String data = parseObject.getString("data");
- // string aes encode
- String aesbody = AESCryptUtils.encode(data, key, IV_PARAMETER);
- // String aesbody = "MTIzNDU2Nzg5MDA5ODc2NTQzMjExMjM0NTY3ODkwMDk";
- // set data
- parseObject.put("data", aesbody);
- parseObject.put("deviceID", "DEVDD" + vars.get("dev_num"));
- // add header to request
- String postData = "CST(" + parseObject.toJSONString() + ")\r\n"; // object to json string
- log.info("PreProcessor===========================================" + postData);
- //postData = "{\"code\":1002,\"deviceId\":\"0000111122223333aaaabbbb\",\"data\"

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。