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

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

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