diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTest.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTest.java new file mode 100644 index 0000000000..5343fb5449 --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTest.java @@ -0,0 +1,86 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel(value = "性能测试用例") +@TableName("load_test") +@Data +public class LoadTest implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test.id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "测试ID", required = true, allowableValues = "range[1, 50]") + private String id; + + @Size(min = 1, max = 50, message = "{load_test.project_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.project_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "项目ID", required = true, allowableValues = "range[1, 50]") + private String projectId; + + @Size(min = 1, max = 255, message = "{load_test.name.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.name.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "测试名称", required = true, allowableValues = "range[1, 255]") + private String name; + + + @ApiModelProperty(name = "状态为Error时表示错误信息", required = false, allowableValues = "range[1, 500]") + private String description; + + + @ApiModelProperty(name = "创建时间", required = true, dataType = "Long") + private Long createTime; + + + @ApiModelProperty(name = "更新时间", required = true, dataType = "Long") + private Long updateTime; + + @Size(min = 1, max = 64, message = "{load_test.status.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.status.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "状态: Starting, Running, Completed, Error, etc.", required = true, allowableValues = "range[1, 64]") + private String status; + + @Size(min = 1, max = 50, message = "{load_test.test_resource_pool_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.test_resource_pool_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "资源池ID", required = true, allowableValues = "range[1, 50]") + private String testResourcePoolId; + + + @ApiModelProperty(name = "测试数字ID,例如: 100001", required = true, dataType = "Integer") + private Integer num; + + @Size(min = 1, max = 100, message = "{load_test.create_user.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.create_user.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "创建人", required = true, allowableValues = "range[1, 100]") + private String createUser; + + + @ApiModelProperty(name = "自定义排序,间隔5000", required = true, dataType = "Long") + private Long pos; + + @Size(min = 1, max = 50, message = "{load_test.version_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.version_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "版本ID", required = true, allowableValues = "range[1, 50]") + private String versionId; + + @Size(min = 1, max = 50, message = "{load_test.ref_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.ref_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "基版本数据ID,首条测试和测试ID相同", required = true, allowableValues = "range[1, 50]") + private String refId; + + @Size(min = 1, max = 1, message = "{load_test.latest.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test.latest.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "是否为最新版本 0:否,1:是", required = true, allowableValues = "range[1, 1]") + private Boolean latest; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestApi.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestApi.java new file mode 100644 index 0000000000..751ae346fe --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestApi.java @@ -0,0 +1,48 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import java.io.Serializable; + +@ApiModel(value = "关联场景测试和性能测试") +@TableName("load_test_api") +@Data +public class LoadTestApi implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_api.id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "ID", required = true, allowableValues="range[1, 50]") + private String id; + + @Size(min = 1, max = 255, message = "{load_test_api.api_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_api.api_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "接口场景或用例ID", required = true, allowableValues="range[1, 255]") + private String apiId; + + @Size(min = 1, max = 50, message = "{load_test_api.load_test_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_api.load_test_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "性能测试ID", required = true, allowableValues="range[1, 50]") + private String loadTestId; + + + @ApiModelProperty(name = "环境ID", required = false, allowableValues="range[1, 50]") + private String envId; + + @Size(min = 1, max = 20, message = "{load_test_api.type.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_api.type.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "类型: SCENARIO, CASE", required = true, allowableValues="range[1, 20]") + private String type; + + + @ApiModelProperty(name = "关联版本", required = false, dataType = "Integer") + private Integer apiVersion; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestBlob.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestBlob.java new file mode 100644 index 0000000000..7ff386045e --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestBlob.java @@ -0,0 +1,38 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel(value = "性能测试用例大字段") +@TableName("load_test_blob") +@Data +public class LoadTestBlob implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_blob.test_id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "测试ID", required = true, allowableValues = "range[1, 50]") + private String testId; + + + @ApiModelProperty(name = "压力配置", required = false, allowableValues = "range[1, ]") + private byte[] loadConfiguration; + + + @ApiModelProperty(name = "高级配置", required = false, allowableValues = "range[1, ]") + private byte[] advancedConfiguration; + + + @ApiModelProperty(name = "环境信息 (JSON format)", required = false, allowableValues = "range[1, ]") + private byte[] envInfo; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestFile.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestFile.java new file mode 100644 index 0000000000..e43ef5158b --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestFile.java @@ -0,0 +1,34 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel(value = "测试和文件的关联表") +@TableName("load_test_file") +@Data +public class LoadTestFile implements Serializable { + private static final long serialVersionUID = 1L; + @Size(min = 1, max = 64, message = "{load_test_file.test_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_file.test_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "测试ID", required = true, allowableValues = "range[1, 64]") + private String testId; + + @Size(min = 1, max = 64, message = "{load_test_file.file_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_file.file_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "文件ID", required = true, allowableValues = "range[1, 64]") + private String fileId; + + + @ApiModelProperty(name = "文件排序", required = true, dataType = "Integer") + private Integer sort; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestFollow.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestFollow.java new file mode 100644 index 0000000000..f26e95ff25 --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestFollow.java @@ -0,0 +1,30 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel(value = "性能用例关注人") +@TableName("load_test_follow") +@Data +public class LoadTestFollow implements Serializable { + private static final long serialVersionUID = 1L; + @Size(min = 1, max = 50, message = "{load_test_follow.test_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_follow.test_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "测试ID", required = true, allowableValues = "range[1, 50]") + private String testId; + + @Size(min = 1, max = 50, message = "{load_test_follow.follow_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_follow.follow_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "关注人ID", required = true, allowableValues = "range[1, 50]") + private String followId; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReport.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReport.java new file mode 100644 index 0000000000..4a833832b6 --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReport.java @@ -0,0 +1,110 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import java.io.Serializable; + +@ApiModel(value = "性能报告") +@TableName("load_test_report") +@Data +public class LoadTestReport implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_report.id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "报告ID", required = true, allowableValues="range[1, 50]") + private String id; + + @Size(min = 1, max = 50, message = "{load_test_report.test_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.test_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "测试ID", required = true, allowableValues="range[1, 50]") + private String testId; + + @Size(min = 1, max = 64, message = "{load_test_report.name.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.name.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "报告名称", required = true, allowableValues="range[1, 64]") + private String name; + + + @ApiModelProperty(name = "报告描述", required = false, allowableValues="range[1, 500]") + private String description; + + + @ApiModelProperty(name = "创建时间", required = true, dataType = "Long") + private Long createTime; + + + @ApiModelProperty(name = "更新时间", required = true, dataType = "Long") + private Long updateTime; + + @Size(min = 1, max = 64, message = "{load_test_report.status.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.status.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "状态: Starting, Running, Error,Completed etc.", required = true, allowableValues="range[1, 64]") + private String status; + + @Size(min = 1, max = 64, message = "{load_test_report.create_user.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.create_user.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "创建人(执行人)ID", required = true, allowableValues="range[1, 64]") + private String createUser; + + @Size(min = 1, max = 64, message = "{load_test_report.trigger_mode.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.trigger_mode.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "触发方式", required = true, allowableValues="range[1, 64]") + private String triggerMode; + + + @ApiModelProperty(name = "最大并发数", required = false, allowableValues="range[1, 10]") + private String maxUsers; + + + @ApiModelProperty(name = "平均响应时间", required = false, allowableValues="range[1, 10]") + private String avgResponseTime; + + + @ApiModelProperty(name = "每秒事务数", required = false, allowableValues="range[1, 10]") + private String tps; + + @Size(min = 1, max = 50, message = "{load_test_report.project_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.project_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "项目ID", required = true, allowableValues="range[1, 50]") + private String projectId; + + @Size(min = 1, max = 64, message = "{load_test_report.test_name.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.test_name.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "测试名称", required = true, allowableValues="range[1, 64]") + private String testName; + + @Size(min = 1, max = 50, message = "{load_test_report.test_resource_pool_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.test_resource_pool_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "资源池ID", required = true, allowableValues="range[1, 50]") + private String testResourcePoolId; + + + @ApiModelProperty(name = "测试开始时间", required = false, dataType = "Long") + private Long testStartTime; + + + @ApiModelProperty(name = "测试结束时间", required = false, dataType = "Long") + private Long testEndTime; + + + @ApiModelProperty(name = "执行时长", required = false, dataType = "Long") + private Long testDuration; + + @Size(min = 1, max = 50, message = "{load_test_report.version_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report.version_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "版本ID", required = true, allowableValues="range[1, 50]") + private String versionId; + + + @ApiModelProperty(name = "关联的测试计划报告ID(可以为空)", required = false, allowableValues="range[1, 50]") + private String relevanceTestPlanReportId; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportBlob.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportBlob.java new file mode 100644 index 0000000000..d873503d43 --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportBlob.java @@ -0,0 +1,40 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel(value = "性能报告大字段") +@TableName("load_test_report_blob") +@Data +public class LoadTestReportBlob implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_report_blob.report_id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "报告ID", required = true, allowableValues = "range[1, 50]") + private String reportId; + + + @ApiModelProperty(name = "压力配置", required = false, allowableValues = "range[1, ]") + private byte[] loadConfiguration; + + + @ApiModelProperty(name = "JMX内容", required = false, allowableValues = "range[1, ]") + private byte[] jmxContent; + + + @ApiModelProperty(name = "高级配置", required = false, allowableValues = "range[1, ]") + private byte[] advancedConfiguration; + + + @ApiModelProperty(name = "环境信息 (JSON format)", required = false, allowableValues = "range[1, ]") + private byte[] envInfo; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportFile.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportFile.java new file mode 100644 index 0000000000..40aa152183 --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportFile.java @@ -0,0 +1,34 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import java.io.Serializable; + +@ApiModel(value = "测试报告文件关联表") +@TableName("load_test_report_file") +@Data +public class LoadTestReportFile implements Serializable { + private static final long serialVersionUID = 1L; + @Size(min = 1, max = 50, message = "{load_test_report_file.report_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report_file.report_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "报告ID", required = true, allowableValues="range[1, 50]") + private String reportId; + + @Size(min = 1, max = 50, message = "{load_test_report_file.file_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report_file.file_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "文件ID", required = true, allowableValues="range[1, 50]") + private String fileId; + + + @ApiModelProperty(name = "文件排序", required = true, dataType = "Integer") + private Integer sort; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportLog.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportLog.java new file mode 100644 index 0000000000..403d248b1c --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportLog.java @@ -0,0 +1,43 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import java.io.Serializable; + +@ApiModel(value = "报告日志jmeter.log") +@TableName("load_test_report_log") +@Data +public class LoadTestReportLog implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_report_log.id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "主键无实际意义", required = true, allowableValues="range[1, 50]") + private String id; + + @Size(min = 1, max = 50, message = "{load_test_report_log.report_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report_log.report_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "报告ID", required = true, allowableValues="range[1, 50]") + private String reportId; + + @Size(min = 1, max = 50, message = "{load_test_report_log.resource_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report_log.resource_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "资源节点ID", required = true, allowableValues="range[1, 50]") + private String resourceId; + + + @ApiModelProperty(name = "jmeter.log 内容", required = false, allowableValues="range[1, ]") + private byte[] content; + + + @ApiModelProperty(name = "日志内容分段", required = false, dataType = "Long") + private Long part; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResult.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResult.java new file mode 100644 index 0000000000..95a8b20943 --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResult.java @@ -0,0 +1,39 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel(value = "报告结果") +@TableName("load_test_report_result") +@Data +public class LoadTestReportResult implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_report_result.id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "主键无实际意义", required = true, allowableValues = "range[1, 50]") + private String id; + + @Size(min = 1, max = 50, message = "{load_test_report_result.report_id.length_range}", groups = {Created.class, Updated.class}) + @NotBlank(message = "{load_test_report_result.report_id.not_blank}", groups = {Created.class}) + @ApiModelProperty(name = "报告ID", required = true, allowableValues = "range[1, 50]") + private String reportId; + + + @ApiModelProperty(name = "报告项目key", required = false, allowableValues = "range[1, 64]") + private String reportKey; + + + @ApiModelProperty(name = "报告项目内容", required = false, allowableValues = "range[1, ]") + private byte[] reportValue; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResultPart.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResultPart.java new file mode 100644 index 0000000000..0554508bd8 --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResultPart.java @@ -0,0 +1,38 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +import java.io.Serializable; + +@ApiModel(value = "部分报告结果") +@TableName("load_test_report_result_part") +@Data +public class LoadTestReportResultPart implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_report_result_part.report_id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "报告ID", required = true, allowableValues = "range[1, 50]") + private String reportId; + + @TableId + @NotBlank(message = "{load_test_report_result_part.report_key.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "报告项目key", required = true, allowableValues = "range[1, 64]") + private String reportKey; + + @TableId + @NotBlank(message = "{load_test_report_result_part.resource_index.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "资源节点索引号", required = true, dataType = "Integer") + private Integer resourceIndex; + + + @ApiModelProperty(name = "报告项目内容", required = false, allowableValues = "range[1, ]") + private byte[] reportValue; + + +} \ No newline at end of file diff --git a/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResultRealtime.java b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResultRealtime.java new file mode 100644 index 0000000000..c319beed5c --- /dev/null +++ b/backend/framework/domain/src/main/java/io/metersphere/load/domain/LoadTestReportResultRealtime.java @@ -0,0 +1,44 @@ +package io.metersphere.load.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.metersphere.validation.groups.Created; +import io.metersphere.validation.groups.Updated; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; +import lombok.Data; +import java.io.Serializable; + +@ApiModel(value = "即时报告结果") +@TableName("load_test_report_result_realtime") +@Data +public class LoadTestReportResultRealtime implements Serializable { + private static final long serialVersionUID = 1L; + @TableId + @NotBlank(message = "{load_test_report_result_realtime.report_id.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "报告ID", required = true, allowableValues="range[1, 50]") + private String reportId; + + @TableId + @NotBlank(message = "{load_test_report_result_realtime.report_key.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "报告项目key", required = true, allowableValues="range[1, 64]") + private String reportKey; + + @TableId + @NotBlank(message = "{load_test_report_result_realtime.resource_index.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "资源节点索引号", required = true, dataType = "Integer") + private Integer resourceIndex; + + @TableId + @NotBlank(message = "{load_test_report_result_realtime.sort.not_blank}", groups = {Updated.class}) + @ApiModelProperty(name = "报告项目内容排序", required = true, dataType = "Integer") + private Integer sort; + + + @ApiModelProperty(name = "报告项目内容", required = false, allowableValues="range[1, ]") + private byte[] reportValue; + + +} \ No newline at end of file diff --git a/backend/framework/sdk/src/main/resources/i18n/load.properties b/backend/framework/sdk/src/main/resources/i18n/load.properties index e69de29bb2..8394d83d76 100644 --- a/backend/framework/sdk/src/main/resources/i18n/load.properties +++ b/backend/framework/sdk/src/main/resources/i18n/load.properties @@ -0,0 +1,72 @@ +load_test_report.id.not_blank= +load_test_report.test_id.length_range= +load_test_report.test_id.not_blank= +load_test_report.name.length_range= +load_test_report.name.not_blank= +load_test_report.status.length_range= +load_test_report.status.not_blank= +load_test_report.create_user.length_range= +load_test_report.create_user.not_blank= +load_test_report.trigger_mode.length_range= +load_test_report.trigger_mode.not_blank= +load_test_report.project_id.length_range= +load_test_report.project_id.not_blank= +load_test_report.test_name.length_range= +load_test_report.test_name.not_blank= +load_test_report.test_resource_pool_id.length_range= +load_test_report.test_resource_pool_id.not_blank= +load_test_report.version_id.length_range= +load_test_report.version_id.not_blank= +load_test_report_result.id.not_blank= +load_test_report_result.report_id.length_range= +load_test_report_result.report_id.not_blank= +load_test_follow.test_id.length_range= +load_test_follow.test_id.not_blank= +load_test_follow.follow_id.length_range= +load_test_follow.follow_id.not_blank= +load_test_report_result_part.report_id.not_blank= +load_test_report_result_part.report_key.not_blank= +load_test_report_result_part.resource_index.not_blank= +load_test.id.not_blank= +load_test.project_id.length_range= +load_test.project_id.not_blank= +load_test.name.length_range= +load_test.name.not_blank= +load_test.status.length_range= +load_test.status.not_blank= +load_test.test_resource_pool_id.length_range= +load_test.test_resource_pool_id.not_blank= +load_test.create_user.length_range= +load_test.create_user.not_blank= +load_test.version_id.length_range= +load_test.version_id.not_blank= +load_test.ref_id.length_range= +load_test.ref_id.not_blank= +load_test.latest.length_range= +load_test.latest.not_blank= +load_test_report_blob.report_id.not_blank= +load_test_api.id.not_blank= +load_test_api.api_id.length_range= +load_test_api.api_id.not_blank= +load_test_api.load_test_id.length_range= +load_test_api.load_test_id.not_blank= +load_test_api.type.length_range= +load_test_api.type.not_blank= +load_test_report_file.report_id.length_range= +load_test_report_file.report_id.not_blank= +load_test_report_file.file_id.length_range= +load_test_report_file.file_id.not_blank= +load_test_report_result_realtime.report_id.not_blank= +load_test_report_result_realtime.report_key.not_blank= +load_test_report_result_realtime.resource_index.not_blank= +load_test_report_result_realtime.sort.not_blank= +load_test_file.test_id.length_range= +load_test_file.test_id.not_blank= +load_test_file.file_id.length_range= +load_test_file.file_id.not_blank= +load_test_blob.test_id.not_blank= +load_test_report_log.id.not_blank= +load_test_report_log.report_id.length_range= +load_test_report_log.report_id.not_blank= +load_test_report_log.resource_id.length_range= +load_test_report_log.resource_id.not_blank= diff --git a/backend/framework/sdk/src/main/resources/i18n/load_en_US.properties b/backend/framework/sdk/src/main/resources/i18n/load_en_US.properties index e69de29bb2..ffb57c4792 100644 --- a/backend/framework/sdk/src/main/resources/i18n/load_en_US.properties +++ b/backend/framework/sdk/src/main/resources/i18n/load_en_US.properties @@ -0,0 +1,72 @@ +load_test_report.id.not_blank=Load Test Report ID is required +load_test_report.test_id.length_range=Load Test ID must be between {min} and {max} characters +load_test_report.test_id.not_blank=Load Test ID is required +load_test_report.name.length_range=Load Test Report Name must be between {min} and {max} characters +load_test_report.name.not_blank=Load Test Report Name is required +load_test_report.status.length_range=Load Test Report Status must be between {min} and {max} characters +load_test_report.status.not_blank=Load Test Report Status is required +load_test_report.create_user.length_range=Load Test Report Create User must be between {min} and {max} characters +load_test_report.create_user.not_blank=Load Test Report Create User is required +load_test_report.trigger_mode.length_range=Load Test Report Trigger Mode must be between {min} and {max} characters +load_test_report.trigger_mode.not_blank=Load Test Report Trigger Mode is required +load_test_report.project_id.length_range=Load Test Report Project ID must be between {min} and {max} characters +load_test_report.project_id.not_blank=Load Test Report Project ID is required +load_test_report.test_name.length_range=Load Test Report Test Name must be between {min} and {max} characters +load_test_report.test_name.not_blank=Load Test Report Test Name is required +load_test_report.test_resource_pool_id.length_range=Load Test Report Test Resource Pool ID must be between {min} and {max} characters +load_test_report.test_resource_pool_id.not_blank=Load Test Report Test Resource Pool ID is required +load_test_report.version_id.length_range=Load Test Report Version ID must be between {min} and {max} characters +load_test_report.version_id.not_blank=Load Test Report Version ID is required +load_test_report_result.id.not_blank=Load Test Report Result ID is required +load_test_report_result.report_id.length_range=Load Test Report Result Report ID must be between {min} and {max} characters +load_test_report_result.report_id.not_blank=Load Test Report Result Report ID is required +load_test_follow.test_id.length_range=Load Test Follow Test ID must be between {min} and {max} characters +load_test_follow.test_id.not_blank=Load Test Follow Test ID is required +load_test_follow.follow_id.length_range=Load Test Follow ID must be between {min} and {max} characters +load_test_follow.follow_id.not_blank=Load Test Follow ID is required +load_test_report_result_part.report_id.not_blank=Load Test Report Result Part Report ID is required +load_test_report_result_part.report_key.not_blank=Load Test Report Result Part Report Key is required +load_test_report_result_part.resource_index.not_blank=Load Test Report Result Part Resource Index is required +load_test.id.not_blank=Load Test ID is required +load_test.project_id.length_range=Load Test Project ID must be between {min} and {max} characters +load_test.project_id.not_blank=Load Test Project ID is required +load_test.name.length_range=Load Test Name must be between {min} and {max} characters +load_test.name.not_blank=Load Test Name is required +load_test.status.length_range=Load Test Status must be between {min} and {max} characters +load_test.status.not_blank=Load Test Status is required +load_test.test_resource_pool_id.length_range=Load Test Resource Pool ID must be between {min} and {max} characters +load_test.test_resource_pool_id.not_blank=Load Test Resource Pool ID is required +load_test.create_user.length_range=Load Test Create User must be between {min} and {max} characters +load_test.create_user.not_blank=Load Test Create User is required +load_test.version_id.length_range=Load Test Version ID must be between {min} and {max} characters +load_test.version_id.not_blank=Load Test Version ID is required +load_test.ref_id.length_range=Load Test Ref ID must be between {min} and {max} characters +load_test.ref_id.not_blank=Load Test Ref ID is required +load_test.latest.length_range=Load Test Latest must be between {min} and {max} characters +load_test.latest.not_blank=Load Test Latest is required +load_test_report_blob.report_id.not_blank=Load Test Report Blob Report ID is required +load_test_api.id.not_blank=Load Test API ID is required +load_test_api.api_id.length_range=Load Test API ID must be between {min} and {max} characters +load_test_api.api_id.not_blank=Load Test API ID is required +load_test_api.load_test_id.length_range=Load Test API Load Test ID must be between {min} and {max} characters +load_test_api.load_test_id.not_blank=Load Test API Load Test ID is required +load_test_api.type.length_range=Load Test API Type must be between {min} and {max} characters +load_test_api.type.not_blank=Load Test API Type is required +load_test_report_file.report_id.length_range=Load Test Report File Report ID must be between {min} and {max} characters +load_test_report_file.report_id.not_blank=Load Test Report File Report ID is required +load_test_report_file.file_id.length_range=Load Test Report File ID must be between {min} and {max} characters +load_test_report_file.file_id.not_blank=Load Test Report File ID is required +load_test_report_result_realtime.report_id.not_blank=Load Test Report Result Realtime Report ID is required +load_test_report_result_realtime.report_key.not_blank=Load Test Report Result Realtime Report Key is required +load_test_report_result_realtime.resource_index.not_blank=Load Test Report Result Realtime Resource Index is required +load_test_report_result_realtime.sort.not_blank=Load Test Report Result Realtime Sort is required +load_test_file.test_id.length_range=Load Test File Test ID must be between {min} and {max} characters +load_test_file.test_id.not_blank=Load Test File Test ID is required +load_test_file.file_id.length_range=Load Test File ID must be between {min} and {max} characters +load_test_file.file_id.not_blank=Load Test File ID is required +load_test_blob.test_id.not_blank=Load Test Blob Test ID is required +load_test_report_log.id.not_blank=Load Test Report Log ID is required +load_test_report_log.report_id.length_range=Load Test Report Log Report ID must be between {min} and {max} characters +load_test_report_log.report_id.not_blank=Load Test Report Log Report ID is required +load_test_report_log.resource_id.length_range=Load Test Report Log Resource ID must be between {min} and {max} characters +load_test_report_log.resource_id.not_blank=Load Test Report Log Resource ID is required diff --git a/backend/framework/sdk/src/main/resources/i18n/load_zh_CN.properties b/backend/framework/sdk/src/main/resources/i18n/load_zh_CN.properties index e69de29bb2..269b731ceb 100644 --- a/backend/framework/sdk/src/main/resources/i18n/load_zh_CN.properties +++ b/backend/framework/sdk/src/main/resources/i18n/load_zh_CN.properties @@ -0,0 +1,72 @@ +load_test_report.id.not_blank=性能测试报告ID不能为空 +load_test_report.test_id.length_range=性能测试ID长度范围为{min}到{max} +load_test_report.test_id.not_blank=性能测试ID不能为空 +load_test_report.name.length_range=性能测试报告名称长度范围为{min}到{max} +load_test_report.name.not_blank=性能测试报告名称不能为空 +load_test_report.status.length_range=性能测试报告状态长度范围为{min}到{max} +load_test_report.status.not_blank=性能测试报告状态不能为空 +load_test_report.create_user.length_range=性能测试报告创建人长度范围为{min}到{max} +load_test_report.create_user.not_blank=性能测试报告创建人不能为空 +load_test_report.trigger_mode.length_range=性能测试报告触发方式长度范围为{min}到{max} +load_test_report.trigger_mode.not_blank=性能测试报告触发方式不能为空 +load_test_report.project_id.length_range=性能测试报告项目ID长度范围为{min}到{max} +load_test_report.project_id.not_blank=性能测试报告项目ID不能为空 +load_test_report.test_name.length_range=性能测试报告测试名称长度范围为{min}到{max} +load_test_report.test_name.not_blank=性能测试报告测试名称不能为空 +load_test_report.test_resource_pool_id.length_range=性能测试报告测试资源池ID长度范围为{min}到{max} +load_test_report.test_resource_pool_id.not_blank=性能测试报告测试资源池ID不能为空 +load_test_report.version_id.length_range=性能测试报告版本ID长度范围为{min}到{max} +load_test_report.version_id.not_blank=性能测试报告版本ID不能为空 +load_test_report_result.id.not_blank=性能测试报告结果ID不能为空 +load_test_report_result.report_id.length_range=性能测试报告结果报告ID长度范围为{min}到{max} +load_test_report_result.report_id.not_blank=性能测试报告结果报告ID不能为空 +load_test_follow.test_id.length_range=性能测试ID长度范围为{min}到{max} +load_test_follow.test_id.not_blank=性能测试ID不能为空 +load_test_follow.follow_id.length_range=性能测试关注ID长度范围为{min}到{max} +load_test_follow.follow_id.not_blank=性能测试关注ID不能为空 +load_test_report_result_part.report_id.not_blank=性能测试报告结果报告ID不能为空 +load_test_report_result_part.report_key.not_blank=性能测试报告结果报告KEY不能为空 +load_test_report_result_part.resource_index.not_blank=性能测试报告结果资源索引不能为空 +load_test.id.not_blank=性能测试ID不能为空 +load_test.project_id.length_range=性能测试项目ID长度范围为{min}到{max} +load_test.project_id.not_blank=性能测试项目ID不能为空 +load_test.name.length_range=性能测试名称长度范围为{min}到{max} +load_test.name.not_blank=性能测试名称不能为空 +load_test.status.length_range=性能测试状态长度范围为{min}到{max} +load_test.status.not_blank=性能测试状态不能为空 +load_test.test_resource_pool_id.length_range=性能测试资源池ID长度范围为{min}到{max} +load_test.test_resource_pool_id.not_blank=性能测试资源池ID不能为空 +load_test.create_user.length_range=性能测试创建人长度范围为{min}到{max} +load_test.create_user.not_blank=性能测试创建人不能为空 +load_test.version_id.length_range=性能测试版本ID长度范围为{min}到{max} +load_test.version_id.not_blank=性能测试版本ID不能为空 +load_test.ref_id.length_range=性能测试关联ID长度范围为{min}到{max} +load_test.ref_id.not_blank=性能测试关联ID不能为空 +load_test.latest.length_range=性能测试是否为最新版本长度范围为{min}到{max} +load_test.latest.not_blank=性能测试是否为最新版本不能为空 +load_test_report_blob.report_id.not_blank=性能测试报告结果报告ID不能为空 +load_test_api.id.not_blank=性能测试接口ID不能为空 +load_test_api.api_id.length_range=性能测试接口ID长度范围为{min}到{max} +load_test_api.api_id.not_blank=性能测试接口ID不能为空 +load_test_api.load_test_id.length_range=性能测试接口性能测试ID长度范围为{min}到{max} +load_test_api.load_test_id.not_blank=性能测试接口性能测试ID不能为空 +load_test_api.type.length_range=性能测试接口类型长度范围为{min}到{max} +load_test_api.type.not_blank=性能测试接口类型不能为空 +load_test_report_file.report_id.length_range=性能测试报告结果报告ID长度范围为{min}到{max} +load_test_report_file.report_id.not_blank=性能测试报告结果报告ID不能为空 +load_test_report_file.file_id.length_range=性能测试报告结果文件ID长度范围为{min}到{max} +load_test_report_file.file_id.not_blank=性能测试报告结果文件ID不能为空 +load_test_report_result_realtime.report_id.not_blank=性能测试报告结果报告ID不能为空 +load_test_report_result_realtime.report_key.not_blank=性能测试报告结果报告KEY不能为空 +load_test_report_result_realtime.resource_index.not_blank=性能测试报告结果资源索引不能为空 +load_test_report_result_realtime.sort.not_blank=性能测试报告结果排序不能为空 +load_test_file.test_id.length_range=性能测试文件ID长度范围为{min}到{max} +load_test_file.test_id.not_blank=性能测试文件ID不能为空 +load_test_file.file_id.length_range=性能测试文件文件ID长度范围为{min}到{max} +load_test_file.file_id.not_blank=性能测试文件文件ID不能为空 +load_test_blob.test_id.not_blank=性能测试二进制文件ID不能为空 +load_test_report_log.id.not_blank=性能测试报告日志ID不能为空 +load_test_report_log.report_id.length_range=性能测试报告日志报告ID长度范围为{min}到{max} +load_test_report_log.report_id.not_blank=性能测试报告日志报告ID不能为空 +load_test_report_log.resource_id.length_range=性能测试报告日志资源ID长度范围为{min}到{max} +load_test_report_log.resource_id.not_blank=性能测试报告日志资源ID不能为空 diff --git a/backend/framework/sdk/src/main/resources/i18n/load_zh_TW.properties b/backend/framework/sdk/src/main/resources/i18n/load_zh_TW.properties index e69de29bb2..da15520453 100644 --- a/backend/framework/sdk/src/main/resources/i18n/load_zh_TW.properties +++ b/backend/framework/sdk/src/main/resources/i18n/load_zh_TW.properties @@ -0,0 +1,72 @@ +load_test_report.id.not_blank=性能測試報告ID不能為空 +load_test_report.test_id.length_range=性能測試ID長度範圍為{min}到{max} +load_test_report.test_id.not_blank=性能測試ID不能為空 +load_test_report.name.length_range=性能測試報告名稱長度範圍為{min}到{max} +load_test_report.name.not_blank=性能測試報告名稱不能為空 +load_test_report.status.length_range=性能測試報告狀態長度範圍為{min}到{max} +load_test_report.status.not_blank=性能測試報告狀態不能為空 +load_test_report.create_user.length_range=性能測試報告創建人長度範圍為{min}到{max} +load_test_report.create_user.not_blank=性能測試報告創建人不能為空 +load_test_report.trigger_mode.length_range=性能測試報告觸發方式長度範圍為{min}到{max} +load_test_report.trigger_mode.not_blank=性能測試報告觸發方式不能為空 +load_test_report.project_id.length_range=性能測試報告項目ID長度範圍為{min}到{max} +load_test_report.project_id.not_blank=性能測試報告項目ID不能為空 +load_test_report.test_name.length_range=性能測試報告測試名稱長度範圍為{min}到{max} +load_test_report.test_name.not_blank=性能測試報告測試名稱不能為空 +load_test_report.test_resource_pool_id.length_range=性能測試報告測試資源池ID長度範圍為{min}到{max} +load_test_report.test_resource_pool_id.not_blank=性能測試報告測試資源池ID不能為空 +load_test_report.version_id.length_range=性能測試報告版本ID長度範圍為{min}到{max} +load_test_report.version_id.not_blank=性能測試報告版本ID不能為空 +load_test_report_result.id.not_blank=性能測試報告結果ID不能為空 +load_test_report_result.report_id.length_range=性能測試報告結果報告ID長度範圍為{min}到{max} +load_test_report_result.report_id.not_blank=性能測試報告結果報告ID不能為空 +load_test_follow.test_id.length_range=性能測試ID長度範圍為{min}到{max} +load_test_follow.test_id.not_blank=性能測試ID不能為空 +load_test_follow.follow_id.length_range=性能測試關注ID長度範圍為{min}到{max} +load_test_follow.follow_id.not_blank=性能測試關注ID不能為空 +load_test_report_result_part.report_id.not_blank=性能測試報告結果報告ID不能為空 +load_test_report_result_part.report_key.not_blank=性能測試報告結果報告KEY不能為空 +load_test_report_result_part.resource_index.not_blank=性能測試報告結果資源索引不能為空 +load_test.id.not_blank=性能測試ID不能為空 +load_test.project_id.length_range=性能測試項目ID長度範圍為{min}到{max} +load_test.project_id.not_blank=性能測試項目ID不能為空 +load_test.name.length_range=性能測試名稱長度範圍為{min}到{max} +load_test.name.not_blank=性能測試名稱不能為空 +load_test.status.length_range=性能測試狀態長度範圍為{min}到{max} +load_test.status.not_blank=性能測試狀態不能為空 +load_test.test_resource_pool_id.length_range=性能測試資源池ID長度範圍為{min}到{max} +load_test.test_resource_pool_id.not_blank=性能測試資源池ID不能為空 +load_test.create_user.length_range=性能測試創建人長度範圍為{min}到{max} +load_test.create_user.not_blank=性能測試創建人不能為空 +load_test.version_id.length_range=性能測試版本ID長度範圍為{min}到{max} +load_test.version_id.not_blank=性能測試版本ID不能為空 +load_test.ref_id.length_range=性能測試關聯ID長度範圍為{min}到{max} +load_test.ref_id.not_blank=性能測試關聯ID不能為空 +load_test.latest.length_range=性能測試是否為最新版本長度範圍為{min}到{max} +load_test.latest.not_blank=性能測試是否為最新版本不能為空 +load_test_report_blob.report_id.not_blank=性能測試報告結果報告ID不能為空 +load_test_api.id.not_blank=性能測試接口ID不能為空 +load_test_api.api_id.length_range=性能測試接口ID長度範圍為{min}到{max} +load_test_api.api_id.not_blank=性能測試接口ID不能為空 +load_test_api.load_test_id.length_range=性能測試接口性能測試ID長度範圍為{min}到{max} +load_test_api.load_test_id.not_blank=性能測試接口性能測試ID不能為空 +load_test_api.type.length_range=性能測試接口類型長度範圍為{min}到{max} +load_test_api.type.not_blank=性能測試接口類型不能為空 +load_test_report_file.report_id.length_range=性能測試報告結果報告ID長度範圍為{min}到{max} +load_test_report_file.report_id.not_blank=性能測試報告結果報告ID不能為空 +load_test_report_file.file_id.length_range=性能測試報告結果文件ID長度範圍為{min}到{max} +load_test_report_file.file_id.not_blank=性能測試報告結果文件ID不能為空 +load_test_report_result_realtime.report_id.not_blank=性能測試報告結果報告ID不能為空 +load_test_report_result_realtime.report_key.not_blank=性能測試報告結果報告KEY不能為空 +load_test_report_result_realtime.resource_index.not_blank=性能測試報告結果資源索引不能為空 +load_test_report_result_realtime.sort.not_blank=性能測試報告結果排序不能為空 +load_test_file.test_id.length_range=性能測試文件ID長度範圍為{min}到{max} +load_test_file.test_id.not_blank=性能測試文件ID不能為空 +load_test_file.file_id.length_range=性能測試文件文件ID長度範圍為{min}到{max} +load_test_file.file_id.not_blank=性能測試文件文件ID不能為空 +load_test_blob.test_id.not_blank=性能測試二進製文件ID不能為空 +load_test_report_log.id.not_blank=性能測試報告日誌ID不能為空 +load_test_report_log.report_id.length_range=性能測試報告日誌報告ID長度範圍為{min}到{max} +load_test_report_log.report_id.not_blank=性能測試報告日誌報告ID不能為空 +load_test_report_log.resource_id.length_range=性能測試報告日誌資源ID長度範圍為{min}到{max} +load_test_report_log.resource_id.not_blank=性能測試報告日誌資源ID不能為空 \ No newline at end of file