diff --git a/test-common/src/main/java/com/test/common/utils/JMeterUtil.java b/test-common/src/main/java/com/test/common/utils/JMeterUtil.java index 1d8bec9..5df1bac 100644 --- a/test-common/src/main/java/com/test/common/utils/JMeterUtil.java +++ b/test-common/src/main/java/com/test/common/utils/JMeterUtil.java @@ -63,8 +63,8 @@ public class JMeterUtil { * @param jmeterHomePath * @return */ - public static String getJmeterResult(Long id, String url, int port, String method, String paramJson, String requestHeader, String jmeterHomePath) { - String result = ""; + public static Map getJmeterResult(Long id, String url, int port, String method, String paramJson, String requestHeader, String jmeterHomePath) { + Map result = null; try { // 1. 初始化 JMeter JMeterUtils.loadJMeterProperties(jmeterHomePath + "/bin/jmeter.properties"); @@ -379,7 +379,7 @@ public class JMeterUtil { * @param filePath * @return */ - private static String getResultMessageFromFile(String filePath) { + private static Map getResultMessageFromFile(String filePath) { File file = new File(filePath); if (!file.exists()) { return null; @@ -395,12 +395,16 @@ public class JMeterUtil { NodeList httpSampleList = document.getElementsByTagName("httpSample"); Node httpSampleNode = httpSampleList.item(0); if (httpSampleNode.getNodeType() == Node.ELEMENT_NODE) { + Map resultMap = new HashMap<>(); Element httpSampleElement = (Element) httpSampleNode; + String costMiliseconds = httpSampleElement.getAttribute("t"); + resultMap.put("costMiliseconds", costMiliseconds); // 提取子节点的内容 NodeList responseDataList = httpSampleElement.getElementsByTagName("responseData"); if (responseDataList.getLength() > 0) { Element responseDataElement = (Element) responseDataList.item(0); - return responseDataElement.getTextContent(); + resultMap.put("costMiliseconds", responseDataElement.getTextContent()); + return resultMap; } } } catch (Exception e) { @@ -415,7 +419,7 @@ public class JMeterUtil { String requestHeader = "{\"Content-Type\":\"application/json; charset=UTF-8\",\"Authorization\":\"Bearer token123\"}"; String jmeterHomePath = "D:/apache-jmeter-5.4.3"; // String result = getJmeterResult("http://127.0.0.1:3000/api/items/add", 3000, "POST", paramJson, requestHeader, jmeterHomePath); - String result = getJmeterResult(123L, "http://127.0.0.1:3000/api/items/user", 3000, "GET", paramJson, requestHeader, jmeterHomePath); - System.out.println(result); + getJmeterResult(123L, "http://127.0.0.1:3000/api/items/user", 3000, "GET", paramJson, requestHeader, jmeterHomePath); +// System.out.println(result); } } diff --git a/test-test/src/main/java/com/test/test/domain/TestCaseStep.java b/test-test/src/main/java/com/test/test/domain/TestCaseStep.java index 10ba209..d299beb 100644 --- a/test-test/src/main/java/com/test/test/domain/TestCaseStep.java +++ b/test-test/src/main/java/com/test/test/domain/TestCaseStep.java @@ -72,7 +72,7 @@ public class TestCaseStep extends BaseEntity { /** http 请求端口号 */ @Excel(name = "http 请求端口号") - private String apiPort; + private Integer apiPort; /** http 请求协议(http, https) */ @Excel(name = "http 请求协议(http, https)") diff --git a/test-test/src/main/java/com/test/test/service/ITestCaseStepService.java b/test-test/src/main/java/com/test/test/service/ITestCaseStepService.java index a6da036..b84812b 100644 --- a/test-test/src/main/java/com/test/test/service/ITestCaseStepService.java +++ b/test-test/src/main/java/com/test/test/service/ITestCaseStepService.java @@ -3,6 +3,7 @@ package com.test.test.service; import com.test.test.domain.TestCaseStep; import java.util.List; +import java.util.Map; /** * 用例步骤Service接口 @@ -67,5 +68,5 @@ public interface ITestCaseStepService * @param jmeterHomePath jmeter安装路径 * @return 结果 */ - public String executeJmeterTestCaseStepById(Long id, String jmeterHomePath); + public Map executeJmeterTestCaseStepById(Long id, String jmeterHomePath); } diff --git a/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java b/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java index 94eacb9..f073f93 100644 --- a/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java +++ b/test-test/src/main/java/com/test/test/service/impl/TestCaseStepServiceImpl.java @@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** * 用例步骤Service业务层处理 @@ -106,13 +107,12 @@ public class TestCaseStepServiceImpl implements ITestCaseStepService * @return 结果 */ @Override - public String executeJmeterTestCaseStepById(Long id, String jmeterHomePath) { + public Map executeJmeterTestCaseStepById(Long id, String jmeterHomePath) { TestCaseStep testCaseStep = testCaseStepMapper.selectTestCaseStepById(id); if (testCaseStep == null) { log.error("根据主键id:{}未查询到用例步骤计划", id); return null; } - String result = null; String url = testCaseStep.getRequestUrl(); String method = testCaseStep.getRequestMethod().toUpperCase(); if (!method.equals("GET") && !method.equals("POST")) { @@ -120,9 +120,9 @@ public class TestCaseStepServiceImpl implements ITestCaseStepService return null; } String requestHeader = testCaseStep.getRequestHeader(); - result = JMeterUtil.getJmeterResult(id, url, Integer.parseInt(testCaseStep.getApiPort()), testCaseStep.getRequestMethod(), testCaseStep.getRequestParams(), requestHeader, jmeterHomePath); + Map resultMap = JMeterUtil.getJmeterResult(id, url, testCaseStep.getApiPort(), testCaseStep.getRequestMethod(), testCaseStep.getRequestParams(), requestHeader, jmeterHomePath); - return result; + return resultMap; } } diff --git a/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml b/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml index 328ea3f..5c349b3 100644 --- a/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml +++ b/test-test/src/main/resources/mapper/test/TestCaseStepMapper.xml @@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and request_params = #{requestParams} and api_http_id = #{apiHttpId} and api_host = #{apiHost} - and api_port = #{apiPort} + and api_port = #{apiPort} and api_protocol = #{apiProtocol} and sql_command = #{sqlCommand} and count = #{count}