删除无用代码
This commit is contained in:
parent
57120bb1a0
commit
58756c1ab6
|
@ -9,7 +9,6 @@ import io.metersphere.commons.utils.Pager;
|
|||
import io.metersphere.controller.request.ReportRequest;
|
||||
import io.metersphere.dto.ReportDTO;
|
||||
import io.metersphere.report.base.*;
|
||||
import io.metersphere.report.dto.ErrorsTop5DTO;
|
||||
import io.metersphere.service.ReportService;
|
||||
import io.metersphere.user.SessionUtils;
|
||||
import org.apache.shiro.authz.annotation.Logical;
|
||||
|
|
|
@ -4,7 +4,6 @@ import com.opencsv.bean.CsvToBean;
|
|||
import com.opencsv.bean.CsvToBeanBuilder;
|
||||
import com.opencsv.bean.HeaderColumnNameMappingStrategy;
|
||||
import io.metersphere.report.base.*;
|
||||
import io.metersphere.report.dto.ErrorsTop5DTO;
|
||||
import io.metersphere.report.parse.ResultDataParse;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.jmeter.report.processor.ErrorsSummaryConsumer;
|
||||
|
@ -16,8 +15,6 @@ import org.apache.jmeter.report.processor.graph.impl.ResponseTimeOverTimeGraphCo
|
|||
import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
|
@ -28,9 +25,7 @@ import java.util.stream.Collectors;
|
|||
|
||||
public class GenerateReport {
|
||||
|
||||
private static final Integer ERRORS_TOP_SIZE = 5;
|
||||
private static final String DATE_TIME_PATTERN = "yyyy/MM/dd HH:mm:ss";
|
||||
private static final String TIME_PATTERN = "HH:mm:ss";
|
||||
|
||||
private static List<Metric> resolver(String jtlString) {
|
||||
HeaderColumnNameMappingStrategy<Metric> ms = new HeaderColumnNameMappingStrategy<>();
|
||||
|
@ -64,10 +59,6 @@ public class GenerateReport {
|
|||
return ResultDataParse.summaryMapParsing(statisticsDataMap, Statistics.class);
|
||||
}
|
||||
|
||||
private static String getResponseCodeAndFailureMessage(Metric metric) {
|
||||
return metric.getResponseCode() + "/" + metric.getResponseMessage();
|
||||
}
|
||||
|
||||
public static TestOverview getTestOverview(String jtlString) {
|
||||
TestOverview testOverview = new TestOverview();
|
||||
DecimalFormat decimalFormat = new DecimalFormat("0.00");
|
||||
|
@ -188,14 +179,4 @@ public class GenerateReport {
|
|||
return localDateTime.format(dateTimeFormatter);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param "yyyy-MM-dd HH:mm:ss"
|
||||
* @return "HH:mm:ss"
|
||||
*/
|
||||
private static String formatDate(String dateString) throws ParseException {
|
||||
SimpleDateFormat before = new SimpleDateFormat(DATE_TIME_PATTERN);
|
||||
SimpleDateFormat after = new SimpleDateFormat(TIME_PATTERN);
|
||||
return after.format(before.parse(dateString));
|
||||
}
|
||||
|
||||
}
|
|
@ -1,136 +0,0 @@
|
|||
package io.metersphere.report.base;
|
||||
|
||||
public class RequestStatistics {
|
||||
|
||||
/**请求标签*/
|
||||
private String requestLabel;
|
||||
|
||||
/**压测请求数*/
|
||||
private Integer samples;
|
||||
|
||||
/**平均响应时间*/
|
||||
private String average;
|
||||
|
||||
/**平均点击率*/
|
||||
private String avgHits;
|
||||
|
||||
/**90% Line*/
|
||||
private String tp90;
|
||||
|
||||
/**95% Line*/
|
||||
private String tp95;
|
||||
|
||||
/**99% Line*/
|
||||
private String tp99;
|
||||
|
||||
/**最小请求时间 Min Response Time /ms */
|
||||
private String min;
|
||||
|
||||
/**最大请求时间 Max Response Time /ms */
|
||||
private String max;
|
||||
|
||||
/**吞吐量 KB/sec*/
|
||||
private String kbPerSec;
|
||||
|
||||
/**错误率 Error Percentage */
|
||||
private String errors;
|
||||
|
||||
/**错误个数*/
|
||||
private Integer ko;
|
||||
|
||||
public String getRequestLabel() {
|
||||
return requestLabel;
|
||||
}
|
||||
|
||||
public void setRequestLabel(String requestLabel) {
|
||||
this.requestLabel = requestLabel;
|
||||
}
|
||||
|
||||
public Integer getSamples() {
|
||||
return samples;
|
||||
}
|
||||
|
||||
public void setSamples(Integer samples) {
|
||||
this.samples = samples;
|
||||
}
|
||||
|
||||
public String getAverage() {
|
||||
return average;
|
||||
}
|
||||
|
||||
public void setAverage(String average) {
|
||||
this.average = average;
|
||||
}
|
||||
|
||||
public String getAvgHits() {
|
||||
return avgHits;
|
||||
}
|
||||
|
||||
public void setAvgHits(String avgHits) {
|
||||
this.avgHits = avgHits;
|
||||
}
|
||||
|
||||
public String getTp90() {
|
||||
return tp90;
|
||||
}
|
||||
|
||||
public void setTp90(String tp90) {
|
||||
this.tp90 = tp90;
|
||||
}
|
||||
|
||||
public String getTp95() {
|
||||
return tp95;
|
||||
}
|
||||
|
||||
public void setTp95(String tp95) {
|
||||
this.tp95 = tp95;
|
||||
}
|
||||
|
||||
public String getTp99() {
|
||||
return tp99;
|
||||
}
|
||||
|
||||
public void setTp99(String tp99) {
|
||||
this.tp99 = tp99;
|
||||
}
|
||||
|
||||
public String getMin() {
|
||||
return min;
|
||||
}
|
||||
|
||||
public void setMin(String min) {
|
||||
this.min = min;
|
||||
}
|
||||
|
||||
public String getMax() {
|
||||
return max;
|
||||
}
|
||||
|
||||
public void setMax(String max) {
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
public String getKbPerSec() {
|
||||
return kbPerSec;
|
||||
}
|
||||
|
||||
public void setKbPerSec(String kbPerSec) {
|
||||
this.kbPerSec = kbPerSec;
|
||||
}
|
||||
|
||||
public String getErrors() {
|
||||
return errors;
|
||||
}
|
||||
|
||||
public void setErrors(String errors) {
|
||||
this.errors = errors;
|
||||
}
|
||||
|
||||
public Integer getKo() {
|
||||
return ko;
|
||||
}
|
||||
|
||||
public void setKo(Integer ko) {
|
||||
this.ko = ko;
|
||||
}
|
||||
}
|
|
@ -1,135 +0,0 @@
|
|||
package io.metersphere.report.dto;
|
||||
|
||||
import io.metersphere.report.base.ErrorsTop5;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ErrorsTop5DTO {
|
||||
|
||||
private List<ErrorsTop5> errorsTop5List;
|
||||
private String label;
|
||||
private String totalSamples;
|
||||
private String totalErrors;
|
||||
private String error1;
|
||||
private String error1Size;
|
||||
private String error2;
|
||||
private String error2Size;
|
||||
private String error3;
|
||||
private String error3Size;
|
||||
private String error4;
|
||||
private String error4Size;
|
||||
private String error5;
|
||||
private String error5Size;
|
||||
|
||||
public List<ErrorsTop5> getErrorsTop5List() {
|
||||
return errorsTop5List;
|
||||
}
|
||||
|
||||
public void setErrorsTop5List(List<ErrorsTop5> errorsTop5List) {
|
||||
this.errorsTop5List = errorsTop5List;
|
||||
}
|
||||
|
||||
public String getLabel() {
|
||||
return label;
|
||||
}
|
||||
|
||||
public void setLabel(String label) {
|
||||
this.label = label;
|
||||
}
|
||||
|
||||
public String getTotalSamples() {
|
||||
return totalSamples;
|
||||
}
|
||||
|
||||
public void setTotalSamples(String totalSamples) {
|
||||
this.totalSamples = totalSamples;
|
||||
}
|
||||
|
||||
public String getTotalErrors() {
|
||||
return totalErrors;
|
||||
}
|
||||
|
||||
public void setTotalErrors(String totalErrors) {
|
||||
this.totalErrors = totalErrors;
|
||||
}
|
||||
|
||||
public String getError1() {
|
||||
return error1;
|
||||
}
|
||||
|
||||
public void setError1(String error1) {
|
||||
this.error1 = error1;
|
||||
}
|
||||
|
||||
public String getError1Size() {
|
||||
return error1Size;
|
||||
}
|
||||
|
||||
public void setError1Size(String error1Size) {
|
||||
this.error1Size = error1Size;
|
||||
}
|
||||
|
||||
public String getError2() {
|
||||
return error2;
|
||||
}
|
||||
|
||||
public void setError2(String error2) {
|
||||
this.error2 = error2;
|
||||
}
|
||||
|
||||
public String getError2Size() {
|
||||
return error2Size;
|
||||
}
|
||||
|
||||
public void setError2Size(String error2Size) {
|
||||
this.error2Size = error2Size;
|
||||
}
|
||||
|
||||
public String getError3() {
|
||||
return error3;
|
||||
}
|
||||
|
||||
public void setError3(String error3) {
|
||||
this.error3 = error3;
|
||||
}
|
||||
|
||||
public String getError3Size() {
|
||||
return error3Size;
|
||||
}
|
||||
|
||||
public void setError3Size(String error3Size) {
|
||||
this.error3Size = error3Size;
|
||||
}
|
||||
|
||||
public String getError4() {
|
||||
return error4;
|
||||
}
|
||||
|
||||
public void setError4(String error4) {
|
||||
this.error4 = error4;
|
||||
}
|
||||
|
||||
public String getError4Size() {
|
||||
return error4Size;
|
||||
}
|
||||
|
||||
public void setError4Size(String error4Size) {
|
||||
this.error4Size = error4Size;
|
||||
}
|
||||
|
||||
public String getError5() {
|
||||
return error5;
|
||||
}
|
||||
|
||||
public void setError5(String error5) {
|
||||
this.error5 = error5;
|
||||
}
|
||||
|
||||
public String getError5Size() {
|
||||
return error5Size;
|
||||
}
|
||||
|
||||
public void setError5Size(String error5Size) {
|
||||
this.error5Size = error5Size;
|
||||
}
|
||||
}
|
|
@ -29,26 +29,29 @@ public class ResultDataParse {
|
|||
ListResultData items = (ListResultData) mapResultData.getResult("items");
|
||||
if (items.getSize() > 0) {
|
||||
for (int i = 0; i < items.getSize(); i++) {
|
||||
MapResultData resultData = (MapResultData) items.get(i);
|
||||
ListResultData data = (ListResultData) resultData.getResult("data");
|
||||
int size = data.getSize();
|
||||
String[] strArray = new String[size];
|
||||
for (int j = 0; j < size; j++) {
|
||||
ValueResultData valueResultData = (ValueResultData) data.get(j);
|
||||
if (valueResultData.getValue() == null) {
|
||||
strArray[j] = "";
|
||||
} else {
|
||||
String accept = valueResultData.accept(new JsonizerVisitor());
|
||||
strArray[j] = accept.replace("\\", "");
|
||||
}
|
||||
}
|
||||
T t = null;
|
||||
try {
|
||||
t = setParam(clazz, strArray);
|
||||
MapResultData resultData = (MapResultData) items.get(i);
|
||||
ListResultData data = (ListResultData) resultData.getResult("data");
|
||||
int size = data.getSize();
|
||||
String[] strArray = new String[size];
|
||||
T t = clazz.newInstance();
|
||||
if (size > 0) {
|
||||
for (int j = 0; j < size; j++) {
|
||||
ValueResultData valueResultData = (ValueResultData) data.get(j);
|
||||
if (valueResultData.getValue() == null) {
|
||||
strArray[j] = "";
|
||||
} else {
|
||||
String accept = valueResultData.accept(new JsonizerVisitor());
|
||||
strArray[j] = accept.replace("\\", "");
|
||||
}
|
||||
}
|
||||
t = setParam(clazz, strArray);
|
||||
}
|
||||
list.add(t);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
list.add(t);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,7 +13,6 @@ import io.metersphere.engine.Engine;
|
|||
import io.metersphere.engine.EngineFactory;
|
||||
import io.metersphere.report.GenerateReport;
|
||||
import io.metersphere.report.base.*;
|
||||
import io.metersphere.report.dto.ErrorsTop5DTO;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
package io.metersphere;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.opencsv.bean.CsvToBean;
|
||||
import com.opencsv.bean.CsvToBeanBuilder;
|
||||
import com.opencsv.bean.HeaderColumnNameMappingStrategy;
|
||||
import io.metersphere.report.base.RequestStatistics;
|
||||
import org.junit.Test;
|
||||
import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
|
@ -201,73 +199,6 @@ public class JtlTest {
|
|||
List<Metric> metrics = beanBuilderExample(jtlString);
|
||||
// 根据label分组,label作为map的key
|
||||
Map<String, List<Metric>> map = metrics.stream().collect(Collectors.groupingBy(Metric::getLabel));
|
||||
getOneRpsResult(map);
|
||||
}
|
||||
|
||||
private void getOneRpsResult(Map<String, List<Metric>> map){
|
||||
Iterator<Map.Entry<String, List<Metric>>> iterator = map.entrySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Map.Entry<String, List<Metric>> entry = iterator.next();
|
||||
String label = entry.getKey();
|
||||
List<Metric> list = entry.getValue();
|
||||
List<String> timestampList = list.stream().map(Metric::getTimestamp).collect(Collectors.toList());
|
||||
int index=0;
|
||||
//总的响应时间
|
||||
int sumElapsed=0;
|
||||
Integer failSize = 0;
|
||||
Integer totalBytes = 0;
|
||||
// 响应时间的列表排序之后 用于计算90%line、95%line、99line
|
||||
List<Integer> elapsedList = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
try {
|
||||
Metric row = list.get(i);
|
||||
//响应时间
|
||||
String elapsed = row.getElapsed();
|
||||
sumElapsed += Integer.valueOf(elapsed);
|
||||
elapsedList.add(Integer.valueOf(elapsed));
|
||||
//成功与否
|
||||
String success = row.getSuccess();
|
||||
if (!"true".equals(success)){
|
||||
failSize++;
|
||||
}
|
||||
//字节
|
||||
String bytes = row.getBytes();
|
||||
totalBytes += Integer.valueOf(bytes);
|
||||
|
||||
index++;
|
||||
}catch (Exception e){
|
||||
System.out.println("exception i:"+i);
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(elapsedList, new Comparator<Integer>() {
|
||||
public int compare(Integer o1, Integer o2) {
|
||||
return o1-o2;
|
||||
}
|
||||
});
|
||||
|
||||
Integer tp90 = elapsedList.size()*9/10;
|
||||
Integer tp95 = elapsedList.size()*95/100;
|
||||
Integer tp99 = elapsedList.size()*99/100;
|
||||
|
||||
Long l = Long.valueOf(timestampList.get(index-1)) - Long.valueOf(timestampList.get(0));
|
||||
|
||||
RequestStatistics sceneResult = new RequestStatistics();
|
||||
sceneResult.setRequestLabel(label);
|
||||
sceneResult.setSamples(index);
|
||||
// sceneResult.setAverage(sumElapsed/index);
|
||||
sceneResult.setTp90(elapsedList.get(tp90)+"");
|
||||
sceneResult.setTp95(elapsedList.get(tp95)+"");
|
||||
sceneResult.setTp99(elapsedList.get(tp99)+"");
|
||||
sceneResult.setMin(elapsedList.get(0)+"");
|
||||
sceneResult.setMax(elapsedList.get(index-1)+"");
|
||||
sceneResult.setErrors(String.format("%.2f",failSize*100.0/index)+"%");
|
||||
sceneResult.setKbPerSec(String.format("%.2f",totalBytes*1.0/1024/(l*1.0/1000)));
|
||||
System.out.println(JSONObject.toJSONString(sceneResult));
|
||||
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue