分布式系统测试?使用HttpServer的一个并发问题
作者:网络转载 发布时间:[ 2014/2/28 10:21:22 ] 推荐标签:系统测试 分布式 并发
public void run() {
Random rd = new Random();
int index = rd.nextInt(60);
if (index < 10){
index = index + 10;
}
String indexStr = Integer.toString(index);
String path = indexStr+”-”+indexStr+”-”+indexStr+”/”;
LogGetter logGetter = new LogGetter();
logGetter.setPath(path);
String runningLog = logGetter.getRunningLog(0L);
if(runningLog.contains( “T3_000000000″ + indexStr)){
System.out.println(“==============>”+”exit”);
}else
{
String[] lines = runningLog.split(“ ”);
System.out.println(“期望:” + indexStr + “ ” + “实际请求的:” + lines[0] + “ ”);
}
}
}
}
定位到问题之后,我们决定放弃使用这个方法,自己重写一个parserQuery的方法,后台拿到url之后重新对url进行参数的解析。
Map params = HttpUtils.parseQuery(httpExchange.getRequestURI().getQuery());
public static Map parserQuery(String query) throws UnsupportedEncodingException {
Map parameters = new HashMap();
if (query != null) {
String pairs[] = query.split(“[&]“);
for (String pair : pairs) {
String param[] = pair.split(“[=]“);
String key = null;
String value = null;
if (param.length > 0) {
key = URLDecoder.decode(param[0], System.getProperty(“file.encoding”));
}
if (param.length > 1) {
value = URLDecoder.decode(param[1], System.getProperty(“file.encoding”));
}
parameters.put(key, value);
}
}
return parameters;
}
使用了新的params之后,重新使用1000并发,发10000,50000请求,都无法再出现类似的问题,该问题得到解决。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11