feat(接口测试): 任务排队信息查询
--task=1016575 --user=陈建星 任务项排队信息查询 https://www.tapd.cn/55049933/s/1594107
This commit is contained in:
parent
222606dbb5
commit
7aa2decb27
|
@ -25,6 +25,7 @@ import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Tag(name = "项目任务中心")
|
@Tag(name = "项目任务中心")
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -94,6 +95,12 @@ public class ProjectTaskHubController {
|
||||||
baseTaskHubLogService.projectBatchStopLog(ids);
|
baseTaskHubLogService.projectBatchStopLog(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/exec-task/item/order")
|
||||||
|
@Operation(summary = "系统-任务中心-用例执行任务-获取任务项的排队信息")
|
||||||
|
@RequiresPermissions(PermissionConstants.PROJECT_CASE_TASK_CENTER_READ)
|
||||||
|
public Map<String, Integer> getTaskItemOrder(@RequestBody List<String> taskIdItemIds) {
|
||||||
|
return baseTaskHubService.getTaskItemOrder(taskIdItemIds);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/exec-task/delete/{id}")
|
@GetMapping("/exec-task/delete/{id}")
|
||||||
@Operation(summary = "项目-任务中心-用例执行任务-删除任务")
|
@Operation(summary = "项目-任务中心-用例执行任务-删除任务")
|
||||||
|
|
|
@ -14,6 +14,7 @@ import org.springframework.test.context.jdbc.SqlConfig;
|
||||||
import org.springframework.test.web.servlet.MvcResult;
|
import org.springframework.test.web.servlet.MvcResult;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ProjectTaskHubControllerTests extends BaseTest {
|
public class ProjectTaskHubControllerTests extends BaseTest {
|
||||||
|
@ -28,6 +29,7 @@ public class ProjectTaskHubControllerTests extends BaseTest {
|
||||||
public static final String PROJECT_TASK_STOP = "/project/task-center/exec-task/stop/";
|
public static final String PROJECT_TASK_STOP = "/project/task-center/exec-task/stop/";
|
||||||
public static final String PROJECT_TASK_DELETE = "/project/task-center/exec-task/delete/";
|
public static final String PROJECT_TASK_DELETE = "/project/task-center/exec-task/delete/";
|
||||||
public static final String PROJECT_TASK_BATCH_STOP = "/project/task-center/exec-task/batch-stop/";
|
public static final String PROJECT_TASK_BATCH_STOP = "/project/task-center/exec-task/batch-stop/";
|
||||||
|
public static final String PROJECT_TASK_ITEM_ORDER = "/project/task-center/exec-task/item/order";
|
||||||
public static final String PROJECT_TASK_BATCH_DELETE = "/organization/task-center/exec-task/batch-delete/";
|
public static final String PROJECT_TASK_BATCH_DELETE = "/organization/task-center/exec-task/batch-delete/";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -141,6 +143,17 @@ public class ProjectTaskHubControllerTests extends BaseTest {
|
||||||
this.requestPost(PROJECT_TASK_BATCH_STOP, request);
|
this.requestPost(PROJECT_TASK_BATCH_STOP, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取任务项的排队信息
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Order(23)
|
||||||
|
public void projectGetTaskItemOrder() throws Exception {
|
||||||
|
MvcResult mvcResult = this.requestPostWithOkAndReturn(PROJECT_TASK_ITEM_ORDER, List.of("1"));
|
||||||
|
HashMap resultData = getResultData(mvcResult, HashMap.class);
|
||||||
|
// 返回请求正常
|
||||||
|
Assertions.assertNotNull(resultData);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项目执行任务删除
|
* 项目执行任务删除
|
||||||
|
|
|
@ -27,6 +27,7 @@ import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Tag(name = "组织任务中心")
|
@Tag(name = "组织任务中心")
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -102,7 +103,12 @@ public class OrganizationTaskHubController {
|
||||||
baseTaskHubLogService.orgBatchStopLog(ids);
|
baseTaskHubLogService.orgBatchStopLog(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/exec-task/item/order")
|
||||||
|
@Operation(summary = "系统-任务中心-用例执行任务-获取任务项的排队信息")
|
||||||
|
@RequiresPermissions(PermissionConstants.ORGANIZATION_CASE_TASK_CENTER_READ)
|
||||||
|
public Map<String, Integer> getTaskItemOrder(@RequestBody List<String> taskIdItemIds) {
|
||||||
|
return baseTaskHubService.getTaskItemOrder(taskIdItemIds);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/exec-task/delete/{id}")
|
@GetMapping("/exec-task/delete/{id}")
|
||||||
@Operation(summary = "组织-任务中心-用例执行任务-删除任务")
|
@Operation(summary = "组织-任务中心-用例执行任务-删除任务")
|
||||||
|
|
|
@ -24,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Tag(name = "系统任务中心")
|
@Tag(name = "系统任务中心")
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -102,6 +103,12 @@ public class SystemTaskHubController {
|
||||||
baseTaskHubLogService.systemBatchStopLog(ids);
|
baseTaskHubLogService.systemBatchStopLog(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/exec-task/item/order")
|
||||||
|
@Operation(summary = "系统-任务中心-用例执行任务-获取任务项的排队信息")
|
||||||
|
@RequiresPermissions(PermissionConstants.SYSTEM_CASE_TASK_CENTER_READ)
|
||||||
|
public Map<String, Integer> getTaskItemOrder(@RequestBody List<String> taskIdItemIds) {
|
||||||
|
return baseTaskHubService.getTaskItemOrder(taskIdItemIds);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/exec-task/delete/{id}")
|
@GetMapping("/exec-task/delete/{id}")
|
||||||
@Operation(summary = "系统-任务中心-用例执行任务-删除任务")
|
@Operation(summary = "系统-任务中心-用例执行任务-删除任务")
|
||||||
|
|
|
@ -19,6 +19,7 @@ import io.metersphere.sdk.util.BeanUtils;
|
||||||
import io.metersphere.sdk.util.JSON;
|
import io.metersphere.sdk.util.JSON;
|
||||||
import io.metersphere.sdk.util.LogUtils;
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
import io.metersphere.sdk.util.SubListUtils;
|
import io.metersphere.sdk.util.SubListUtils;
|
||||||
|
import io.metersphere.system.controller.handler.ResultHolder;
|
||||||
import io.metersphere.system.domain.*;
|
import io.metersphere.system.domain.*;
|
||||||
import io.metersphere.system.dto.pool.TestResourceDTO;
|
import io.metersphere.system.dto.pool.TestResourceDTO;
|
||||||
import io.metersphere.system.dto.pool.TestResourceNodeDTO;
|
import io.metersphere.system.dto.pool.TestResourceNodeDTO;
|
||||||
|
@ -33,6 +34,7 @@ import io.metersphere.system.dto.taskhub.response.TaskStatisticsResponse;
|
||||||
import io.metersphere.system.mapper.*;
|
import io.metersphere.system.mapper.*;
|
||||||
import io.metersphere.system.utils.PageUtils;
|
import io.metersphere.system.utils.PageUtils;
|
||||||
import io.metersphere.system.utils.Pager;
|
import io.metersphere.system.utils.Pager;
|
||||||
|
import io.metersphere.system.utils.TaskRunnerClient;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
@ -44,10 +46,7 @@ import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Propagation;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
@ -97,6 +96,8 @@ public class BaseTaskHubService {
|
||||||
@Resource
|
@Resource
|
||||||
private ApiReportRelateTaskMapper apiReportRelateTaskMapper;
|
private ApiReportRelateTaskMapper apiReportRelateTaskMapper;
|
||||||
|
|
||||||
|
private final static String GET_TASK_ITEM_ORDER_URL = "http://%s/api/task/item/order";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统-获取执行任务列表
|
* 系统-获取执行任务列表
|
||||||
*
|
*
|
||||||
|
@ -590,7 +591,6 @@ public class BaseTaskHubService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 停止任务项
|
* 停止任务项
|
||||||
*
|
*
|
||||||
|
@ -659,4 +659,46 @@ public class BaseTaskHubService {
|
||||||
return request.getSelectIds();
|
return request.getSelectIds();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, Integer> getTaskItemOrder(List<String> taskIdItemIds) {
|
||||||
|
List<ExecTaskItem> taskItemIds = getTaskItemByIds(taskIdItemIds);
|
||||||
|
Map<String, List<ExecTaskItem>> nodeResourceMap = taskItemIds.stream()
|
||||||
|
.collect(Collectors.groupingBy(ExecTaskItem::getResourcePoolNode));
|
||||||
|
|
||||||
|
Map<String, Integer> taskItemOrderMap = new HashMap<>();
|
||||||
|
|
||||||
|
List<Thread> threads = new ArrayList<>();
|
||||||
|
nodeResourceMap.forEach((node, items) -> {
|
||||||
|
if (StringUtils.isNotBlank(node)) {
|
||||||
|
Thread thread = Thread.startVirtualThread(() -> taskItemOrderMap.putAll(getTaskItemOrder(node, taskIdItemIds)));
|
||||||
|
threads.add(thread);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
for (Thread thread : threads) {
|
||||||
|
try {
|
||||||
|
thread.join();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
LogUtils.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return taskItemOrderMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, Integer> getTaskItemOrder(String node, List<String> taskIdItemIds) {
|
||||||
|
try {
|
||||||
|
ResultHolder body = TaskRunnerClient.post(String.format(GET_TASK_ITEM_ORDER_URL, node), taskIdItemIds);
|
||||||
|
return JSON.parseMap(JSON.toJSONString(body.getData()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
LogUtils.error(e.getMessage(), e);
|
||||||
|
}
|
||||||
|
return Map.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ExecTaskItem> getTaskItemByIds(List<String> taskIdItemIds) {
|
||||||
|
ExecTaskItemExample itemExample = new ExecTaskItemExample();
|
||||||
|
itemExample.createCriteria().andIdIn(taskIdItemIds);
|
||||||
|
return execTaskItemMapper.selectByExample(itemExample);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,22 @@ public class TaskRunnerClient {
|
||||||
return retry(url, null, action);
|
return retry(url, null, action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ResultHolder post(String url, Object param, Object... uriVariables) throws Exception {
|
||||||
|
// 定义action
|
||||||
|
Action action = (u, body) -> {
|
||||||
|
String token = totpGenerator.now();
|
||||||
|
HttpHeaders headers = new HttpHeaders();
|
||||||
|
headers.add(MsHttpHeaders.OTP_TOKEN, token);
|
||||||
|
headers.add(HttpHeaders.CONTENT_TYPE, "application/json");
|
||||||
|
headers.add(HttpHeaders.ACCEPT, "application/json");
|
||||||
|
HttpEntity<Object> httpEntity = new HttpEntity<>(param, headers);
|
||||||
|
ResponseEntity<ResultHolder> entity = restTemplateWithTimeOut.exchange(u, HttpMethod.POST, httpEntity, ResultHolder.class, uriVariables);
|
||||||
|
return entity.getBody();
|
||||||
|
};
|
||||||
|
|
||||||
|
return retry(url, null, action);
|
||||||
|
}
|
||||||
|
|
||||||
private static ResultHolder retry(String url, Object requestBody, Action action) throws Exception {
|
private static ResultHolder retry(String url, Object requestBody, Action action) throws Exception {
|
||||||
ResultHolder body;
|
ResultHolder body;
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -20,6 +20,7 @@ import org.springframework.test.web.servlet.MvcResult;
|
||||||
|
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
|
||||||
|
@ -47,6 +48,7 @@ public class BaseTaskHubControllerTests extends BaseTest {
|
||||||
public static final String SYSTEM_TASK_BATCH_DELETE = "/system/task-center/exec-task/batch-delete/";
|
public static final String SYSTEM_TASK_BATCH_DELETE = "/system/task-center/exec-task/batch-delete/";
|
||||||
public static final String SYSTEM_TASK_ITEM_STOP = "/system/task-center/exec-task/item/stop/";
|
public static final String SYSTEM_TASK_ITEM_STOP = "/system/task-center/exec-task/item/stop/";
|
||||||
public static final String SYSTEM_TASK_ITEM_BATCH_STOP = "/system/task-center/exec-task/item/batch-stop";
|
public static final String SYSTEM_TASK_ITEM_BATCH_STOP = "/system/task-center/exec-task/item/batch-stop";
|
||||||
|
public static final String SYSTEM_TASK_ITEM_ORDER = "/system/task-center/exec-task/item/order";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(1)
|
@Order(1)
|
||||||
|
@ -178,6 +180,14 @@ public class BaseTaskHubControllerTests extends BaseTest {
|
||||||
Assertions.assertNotNull(resultHolder);
|
Assertions.assertNotNull(resultHolder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(4)
|
||||||
|
public void systemGetTaskItemOrder() throws Exception {
|
||||||
|
MvcResult mvcResult = this.requestPostWithOkAndReturn(SYSTEM_TASK_ITEM_ORDER, List.of("1"));
|
||||||
|
HashMap resultData = getResultData(mvcResult, HashMap.class);
|
||||||
|
// 返回请求正常
|
||||||
|
Assertions.assertNotNull(resultData);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统执行任务删除
|
* 系统执行任务删除
|
||||||
|
@ -244,6 +254,7 @@ public class BaseTaskHubControllerTests extends BaseTest {
|
||||||
public static final String ORG_TASK_DELETE = "/organization/task-center/exec-task/delete/";
|
public static final String ORG_TASK_DELETE = "/organization/task-center/exec-task/delete/";
|
||||||
public static final String ORG_TASK_BATCH_STOP = "/organization/task-center/exec-task/batch-stop/";
|
public static final String ORG_TASK_BATCH_STOP = "/organization/task-center/exec-task/batch-stop/";
|
||||||
public static final String ORG_TASK_BATCH_DELETE = "/organization/task-center/exec-task/batch-delete/";
|
public static final String ORG_TASK_BATCH_DELETE = "/organization/task-center/exec-task/batch-delete/";
|
||||||
|
public static final String ORG_TASK_ITEM_ORDER = "/organization/task-center/exec-task/item/order";
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(20)
|
@Order(20)
|
||||||
|
@ -358,6 +369,17 @@ public class BaseTaskHubControllerTests extends BaseTest {
|
||||||
this.requestPost(ORG_TASK_BATCH_STOP, request);
|
this.requestPost(ORG_TASK_BATCH_STOP, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取任务项的排队信息
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
@Order(23)
|
||||||
|
public void orgGetTaskItemOrder() throws Exception {
|
||||||
|
MvcResult mvcResult = this.requestPostWithOkAndReturn(ORG_TASK_ITEM_ORDER, List.of("1"));
|
||||||
|
HashMap resultData = getResultData(mvcResult, HashMap.class);
|
||||||
|
// 返回请求正常
|
||||||
|
Assertions.assertNotNull(resultData);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(23)
|
@Order(23)
|
||||||
|
|
Loading…
Reference in New Issue