提交 66841ab6 authored 作者: 黄夏豪's avatar 黄夏豪

fix(base): 修复了http执行器,在发生目标主机拒绝连接时,不返回status的情况

上级 d2e0e8e1
......@@ -29,6 +29,9 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -110,7 +113,7 @@ public class HttpClientActuator implements Actuator {
public HttpResponseDetail sendHttpRequest(HttpRequestDetail httpRequestDetail,Long envId,Long projectId) {
completeHttpRequestDetail(httpRequestDetail,envId,projectId);
CloseableHttpResponse response = null;
Date startTime = new Date();
Long startTime = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
String url = initUrlString(httpRequestDetail);
HttpRequestBase requestBase = initHttpRequestBase(url, httpRequestDetail.getMethod());
if (requestBase instanceof HttpEntityEnclosingRequestBase) {
......@@ -120,20 +123,20 @@ public class HttpClientActuator implements Actuator {
requestBase.setHeaders(httpRequestDetail.getHeadersArray());
try {
response = client.execute(requestBase);
Date endTime = new Date();
Long endTime = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
return new HttpResponseDetail(
response,
EntityUtils.toString(response.getEntity(), "UTF-8"),
HttpStatus.valueOf(response.getStatusLine().getStatusCode()),
endTime.getTime() - startTime.getTime()
endTime - startTime
);
}catch (HttpHostConnectException e){
Date endTime = new Date();
Long endTime = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
return new HttpResponseDetail(
response,
String.format("目标主机拒绝连接,本次请求URL: %s ",httpRequestDetail.getUrl()),
null,
endTime.getTime() - startTime.getTime()
HttpStatus.SERVICE_UNAVAILABLE,
endTime - startTime
);
} catch (IOException e) {
throw new HttpRequestException(String.format("解析返回值失败,本次请求详细参数如下: %s ",httpRequestDetail));
......
......@@ -14,9 +14,11 @@ public interface TestJobMapper extends BaseMapper<TestJob> {
/**
* 分页查询TestJob
* @param page 分页信息
* @param name 测试任务名(查询条件)
* @return 带有分页的测试任务列表
*/
@Select("SELECT\n" +
@Select("<script>" +
"SELECT\n" +
"\tktj.id,\n" +
"\tktj.`name`,\n" +
"\tktj.sql_statement,\n" +
......@@ -25,6 +27,12 @@ public interface TestJobMapper extends BaseMapper<TestJob> {
"FROM\n" +
"\t`kt_test_job` ktj\n" +
"\tLEFT JOIN ( SELECT job_id, union_key FROM kt_execution_history WHERE id IN ( SELECT max( id ) FROM kt_execution_history WHERE job_id != - 1 GROUP BY job_id ) ) keh ON ktj.id = keh.job_id\n" +
"\tLEFT JOIN ( SELECT union_key, IF ( MIN( `status` )= 0, 0, MAX( `status` )) `status` FROM kt_execution_history GROUP BY union_key ) us ON us.union_key = keh.union_key")
IPage<TestJobVo> pageTestJob(IPage<TestJob> page);
"\tLEFT JOIN ( SELECT union_key, IF ( MIN( `status` )= 0, 0, MAX( `status` )) `status` FROM kt_execution_history GROUP BY union_key ) us ON us.union_key = keh.union_key" +
"<where>" +
"<if test=\"name!=null and name!=''\">" +
"and ktj.`name` = #{name}" +
"</if>" +
"</where>" +
"</script>")
IPage<TestJobVo> pageTestJob(IPage<TestJob> page,String name);
}
......@@ -24,6 +24,6 @@ public interface IExecutionHistoryService extends IService<ExecutionHistory> {
* @param caseId 用例ID
* @return 执行记录列表
*/
IPage<ExecutionHistoryVo> pageByCaseIdAndJobId( Long caseId, Long jobId,int pageSize, int pageNum);
IPage<ExecutionHistoryVo> pageExecutionHistoryVoByCaseIdAndJobId(Long caseId, Long jobId, int pageSize, int pageNum);
}
package org.matrix.database.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.matrix.database.entity.TestJob;
import org.matrix.database.vo.TestJobVo;
/**
* @author mry
*/
public interface ITestJobService extends IService<TestJob> {
/**
* 根据任务名 查询对应的数据列表
* @param pageNum 页码
* @param pageSize 分页条数
* @param name 任务名(查询条件)
* @return 执行记录列表
*/
IPage<TestJobVo> pageTestJob(String name, int pageSize, int pageNum);
}
......@@ -21,7 +21,7 @@ import org.springframework.stereotype.Service;
public class ExecutionHistoryServiceImpl extends ServiceImpl<ExecutionHistoryMapper, ExecutionHistory> implements IExecutionHistoryService {
@Override
public IPage<ExecutionHistoryVo> pageByCaseIdAndJobId(Long caseId, Long jobId, int pageNum,int pageSize ) {
public IPage<ExecutionHistoryVo> pageExecutionHistoryVoByCaseIdAndJobId(Long caseId, Long jobId, int pageNum, int pageSize ) {
Page<ExecutionHistoryVo> page = new Page<>(pageNum, pageSize);
return baseMapper.pageByCaseIdAndJobId(page,caseId,jobId);
}
......
package org.matrix.database.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.matrix.database.entity.TestJob;
import org.matrix.database.mapper.TestJobMapper;
import org.matrix.database.service.ITestJobService;
import org.matrix.database.vo.ExecutionHistoryVo;
import org.matrix.database.vo.TestJobVo;
import org.springframework.stereotype.Service;
/**
......@@ -12,5 +16,9 @@ import org.springframework.stereotype.Service;
@Service
public class TestJobServiceImpl extends ServiceImpl<TestJobMapper, TestJob> implements ITestJobService {
@Override
public IPage<TestJobVo> pageTestJob(String name, int pageSize, int pageNum) {
Page<TestJob> page = new Page<>(pageNum, pageSize);
return baseMapper.pageTestJob(page,name);
}
}
package org.matrix.database.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.matrix.database.entity.TestJob;
/**
* testJob给前端展示用的Vo
* @author huangxiahao
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class TestJobVo extends TestJob {
private Integer status;
......
package org.matrix.autotest.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.*;
import org.matrix.autotest.utils.PageTools;
import org.matrix.database.entity.ExecutionRecord;
import org.matrix.database.service.IExecutionHistoryService;
import org.matrix.database.service.IExecutionRecordService;
import org.matrix.database.vo.CommonResult;
import org.matrix.database.vo.CommonResultObj;
import org.matrix.database.vo.ExecutionHistoryVo;
import org.matrix.enums.ExecutionRecType;
import org.matrix.socket.TestExecuteType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Optional;
/**
* @author hxh
*/
......@@ -48,7 +38,7 @@ public class ExecutionHistoryController {
@RequestParam(defaultValue = "-1") Long jobId,
Long caseId
){
IPage<ExecutionHistoryVo> page = executionHistoryService.pageByCaseIdAndJobId(caseId, jobId, pageNum, pageSize);
IPage<ExecutionHistoryVo> page = executionHistoryService.pageExecutionHistoryVoByCaseIdAndJobId(caseId, jobId, pageNum, pageSize);
return page.getRecords().size() != 0
? CommonResult.success(page, "查询成功")
: CommonResult.failed(page, "查询失败或无数据");
......
package org.matrix.autotest.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
......@@ -9,6 +10,7 @@ import org.matrix.database.entity.TestJob;
import org.matrix.database.service.ITestJobService;
import org.matrix.database.vo.CommonResult;
import org.matrix.database.vo.CommonResultObj;
import org.matrix.database.vo.TestJobVo;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
......@@ -56,17 +58,14 @@ public class TestJobController {
*/
@ApiOperation(value = "分页查询测试任务")
@GetMapping("/page")
public ResponseEntity<CommonResultObj<Page<TestJob>>> findPageTestTasks(
public ResponseEntity<CommonResultObj<IPage<TestJobVo>>> findPageTestTasks(
@RequestParam(defaultValue = "10") int pageSize,
@RequestParam(defaultValue = "1") int pageNum,
String name) {
Page<TestJob> results = Optional.of(testJobService.page(Page.of(pageNum, pageSize), Wrappers.lambdaQuery(TestJob.class)
.like(StringUtils.hasLength(name), TestJob::getName, name)))
.orElse(new Page<>());
PageTools.pageTool(pageSize, pageNum, results);
return results.getRecords().size() != 0
? CommonResult.success(results, "查询成功")
: CommonResult.failed(results, "查询失败或无数据");
IPage<TestJobVo> result = testJobService.pageTestJob(name, pageSize, pageNum);
return result.getRecords().size() != 0
? CommonResult.success(result, "查询成功")
: CommonResult.failed(result, "查询失败或无数据");
}
/**
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论