diff --git a/tests/openapi/src/test/java/com/tencent/bk/job/api/v3/model/EsbStepInstanceStatusV3DTO.java b/tests/openapi/src/test/java/com/tencent/bk/job/api/v3/model/EsbStepInstanceStatusV3DTO.java new file mode 100644 index 0000000000..df86852f7a --- /dev/null +++ b/tests/openapi/src/test/java/com/tencent/bk/job/api/v3/model/EsbStepInstanceStatusV3DTO.java @@ -0,0 +1,153 @@ +/* + * Tencent is pleased to support the open source community by making BK-JOB蓝鲸智云作业平台 available. + * + * Copyright (C) 2021 THL A29 Limited, a Tencent company. All rights reserved. + * + * BK-JOB蓝鲸智云作业平台 is licensed under the MIT License. + * + * License for BK-JOB蓝鲸智云作业平台: + * -------------------------------------------------------------------- + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and + * to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of + * the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO + * THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF + * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +package com.tencent.bk.job.api.v3.model; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Data +public class EsbStepInstanceStatusV3DTO { + + /** + * 步骤实例id + */ + @JsonProperty("step_instance_id") + private Long id; + + /** + * 执行次数 + */ + @JsonProperty("execute_count") + private Integer executeCount; + /** + * 名称 + */ + @JsonProperty("name") + private String name; + + /** + * 步骤类型:1.脚本步骤; 2.文件步骤; 4.SQL步骤 + */ + @JsonProperty("type") + private Integer type; + /** + * 状态: 1.未执行、2.正在执行、3.执行完成且成功、4.执行失败 + */ + @JsonProperty("status") + private Integer status; + /** + * 创建时间 + */ + @JsonProperty("create_time") + private Long createTime; + /** + * 开始时间 + */ + @JsonProperty("start_time") + private Long startTime; + /** + * 结束时间 + */ + @JsonProperty("end_time") + private Long endTime; + /** + * 总耗时,单位:毫秒 + */ + @JsonProperty("total_time") + private Long totalTime; + + @JsonProperty("step_result_group_list") + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List stepResultGroupList; + + @Setter + @Getter + public static class StepResultGroup { + @JsonProperty("result_type") + private Integer resultType; + + @JsonProperty("result_type_desc") + private String resultTypeDesc; + + private String tag; + + @JsonProperty("host_size") + private Integer hostSize; + + @JsonProperty("host_result_list") + private List hostResultList; + } + + @Setter + @Getter + public static class HostResult { + @JsonProperty("bk_host_id") + private Long hostId; + + private String ip; + + private String ipv6; + + @JsonProperty("bk_agent_id") + private String agentId; + + @JsonProperty("bk_cloud_id") + private Long cloudAreaId; + + @JsonProperty("bk_cloud_name") + private String cloudAreaName; + + private Integer status; + + @JsonProperty("status_desc") + private String statusDesc; + + private String tag; + + @JsonProperty("exit_code") + private Integer exitCode; + + /** + * 开始时间 + */ + @JsonProperty("start_time") + private Long startTime; + /** + * 结束时间 + */ + @JsonProperty("end_time") + private Long endTime; + /** + * 总耗时,单位:毫秒 + */ + @JsonProperty("total_time") + private Long totalTime; + } +} diff --git a/tests/openapi/src/test/java/com/tencent/bk/job/api/v3/testcase/EsbGetStepInstanceStatusV3ResourceAPITest.java b/tests/openapi/src/test/java/com/tencent/bk/job/api/v3/testcase/EsbGetStepInstanceStatusV3ResourceAPITest.java index 4667a0007f..c6d2c7b842 100644 --- a/tests/openapi/src/test/java/com/tencent/bk/job/api/v3/testcase/EsbGetStepInstanceStatusV3ResourceAPITest.java +++ b/tests/openapi/src/test/java/com/tencent/bk/job/api/v3/testcase/EsbGetStepInstanceStatusV3ResourceAPITest.java @@ -1,21 +1,21 @@ package com.tencent.bk.job.api.v3.testcase; import com.tencent.bk.job.api.constant.ErrorCode; +import com.tencent.bk.job.api.model.EsbResp; import com.tencent.bk.job.api.props.TestProps; import com.tencent.bk.job.api.util.ApiUtil; import com.tencent.bk.job.api.util.Operations; import com.tencent.bk.job.api.v3.constants.APIV3Urls; import com.tencent.bk.job.api.v3.model.EsbJobExecuteV3DTO; +import com.tencent.bk.job.api.v3.model.EsbStepInstanceStatusV3DTO; +import io.restassured.common.mapper.TypeRef; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.notNullValue; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; /** * 获取步骤状态 API 测试 @@ -36,7 +36,7 @@ void testGetScriptStepInstanceStatus() { // 1.触发一次执行 EsbJobExecuteV3DTO esbJobExecuteV3DTO = Operations.fastExecuteScriptTask(); // 2.获取步骤详情 - given() + EsbStepInstanceStatusV3DTO stepInstanceStatusV3DTO = given() .spec(ApiUtil.requestSpec(TestProps.DEFAULT_TEST_USER)) .param("bk_scope_type", "biz") .param("bk_scope_id", TestProps.DEFAULT_BIZ) @@ -46,13 +46,20 @@ void testGetScriptStepInstanceStatus() { .get(APIV3Urls.GET_STEP_INSTANCE_STATUS) .then() .spec(ApiUtil.successResponseSpec()) - .body("data", notNullValue()) - .body("data.step_instance_id", equalTo(esbJobExecuteV3DTO.getStepInstanceId())) - .body("data.execute_count", equalTo(0)) - .body("data.type", equalTo(1)) - .body("data.status", notNullValue()) - .body("data.total_time", greaterThan(0)) - .body("data.step_result_group_list", hasSize(1)); + .extract() + .body() + .as(new TypeRef>() { + }) + .getData(); + assertThat(stepInstanceStatusV3DTO).isNotNull(); + assertThat(stepInstanceStatusV3DTO.getId()).isEqualTo(esbJobExecuteV3DTO.getStepInstanceId()); + assertThat(stepInstanceStatusV3DTO.getExecuteCount()).isEqualTo(0); + assertThat(stepInstanceStatusV3DTO.getType()).isEqualTo(1); + assertThat(stepInstanceStatusV3DTO.getStatus()).isNotNull(); + assertThat(stepInstanceStatusV3DTO.getStartTime()).isGreaterThan(0L); + assertThat(stepInstanceStatusV3DTO.getTotalTime()).isGreaterThan(0L); + assertThat(stepInstanceStatusV3DTO.getStepResultGroupList()).isNotNull(); + assertThat(stepInstanceStatusV3DTO.getStepResultGroupList().size()).isEqualTo(1); } @Test @@ -61,7 +68,7 @@ void testGetFileStepInstanceStatus() { // 1.触发一次执行 EsbJobExecuteV3DTO esbJobExecuteV3DTO = Operations.fastTransferFileTask(); // 2.获取步骤详情 - given() + EsbStepInstanceStatusV3DTO stepInstanceStatusV3DTO = given() .spec(ApiUtil.requestSpec(TestProps.DEFAULT_TEST_USER)) .param("bk_scope_type", "biz") .param("bk_scope_id", TestProps.DEFAULT_BIZ) @@ -70,13 +77,20 @@ void testGetFileStepInstanceStatus() { .get(APIV3Urls.GET_STEP_INSTANCE_STATUS) .then() .spec(ApiUtil.successResponseSpec()) - .body("data", notNullValue()) - .body("data.step_instance_id", equalTo(esbJobExecuteV3DTO.getStepInstanceId())) - .body("data.execute_count", equalTo(0)) - .body("data.type", equalTo(2)) - .body("data.status", notNullValue()) - .body("data.total_time", greaterThan(0)) - .body("data.step_result_group_list", hasSize(1)); + .extract() + .body() + .as(new TypeRef>() { + }) + .getData(); + assertThat(stepInstanceStatusV3DTO).isNotNull(); + assertThat(stepInstanceStatusV3DTO.getId()).isEqualTo(esbJobExecuteV3DTO.getStepInstanceId()); + assertThat(stepInstanceStatusV3DTO.getExecuteCount()).isEqualTo(0); + assertThat(stepInstanceStatusV3DTO.getType()).isEqualTo(2); + assertThat(stepInstanceStatusV3DTO.getStatus()).isNotNull(); + assertThat(stepInstanceStatusV3DTO.getStartTime()).isGreaterThan(0L); + assertThat(stepInstanceStatusV3DTO.getTotalTime()).isGreaterThan(0L); + assertThat(stepInstanceStatusV3DTO.getStepResultGroupList()).isNotNull(); + assertThat(stepInstanceStatusV3DTO.getStepResultGroupList().size()).isEqualTo(1); } @Test