fix(接口测试): 添加执行附件后缀检查的逻辑

添加执行附件后缀检查的逻辑
This commit is contained in:
song-tianyang 2023-02-17 17:48:49 +08:00 committed by 建国
parent c74b5806a2
commit 4f08b44e33
9 changed files with 32 additions and 16 deletions

View File

@ -204,6 +204,7 @@ public class ApiFileUtil extends FileUtils {
attachmentBodyFile.setFileUpdateTime(fileMetadata.getUpdateTime());
attachmentBodyFile.setProjectId(fileMetadata.getProjectId());
attachmentBodyFile.setFilePath(path);
attachmentBodyFile.setFileType(fileMetadata.getType());
if (StringUtils.isNotBlank(fileMetadata.getAttachInfo())) {
attachmentBodyFile.setFileAttachInfoJson(fileMetadata.getAttachInfo());
}
@ -212,10 +213,11 @@ public class ApiFileUtil extends FileUtils {
if (!isLocal) {
testElement.setProperty(JmxFileMetadataColumns.REF_FILE_STORAGE.name(), fileMetadata.getStorage());
testElement.setProperty(JmxFileMetadataColumns.REF_FILE_NAME.name(), fileMetadata.getName());
testElement.setProperty(JmxFileMetadataColumns.REF_FILE_TYPE.name(), fileMetadata.getType());
testElement.setProperty(JmxFileMetadataColumns.REF_FILE_UPDATE_TIME.name(), fileMetadata.getUpdateTime());
testElement.setProperty(JmxFileMetadataColumns.REF_FILE_PROJECT_ID.name(), fileMetadata.getProjectId());
} else {
path = temporaryFileUtil.generateFilePath(attachmentBodyFile.getProjectId(), attachmentBodyFile.getFileMetadataId(), attachmentBodyFile.getFileUpdateTime(), attachmentBodyFile.getName());
path = temporaryFileUtil.generateFilePath(attachmentBodyFile.getProjectId(), attachmentBodyFile.getFileMetadataId(), attachmentBodyFile.getFileUpdateTime(), attachmentBodyFile.getName(), attachmentBodyFile.getFileType());
}
testElement.setProperty(ElementConstants.FILENAME, path);

View File

@ -8,6 +8,7 @@ import lombok.Setter;
public class AttachmentBodyFile {
private String id;
private String name;
private String fileType;
// 调试附件处理
private String refResourceId;

View File

@ -5,5 +5,6 @@ public enum JmxFileMetadataColumns {
REF_FILE_UPDATE_TIME,
REF_FILE_PROJECT_ID,
REF_FILE_NAME,
REF_FILE_TYPE,
JAR_PATH_CONFIG,
}

View File

@ -49,8 +49,16 @@ public class TemporaryFileUtil {
return fileFolder + generateRelativeDir(folder, fileMetadataId, updateTime);
}
public String generateFilePath(String folder, String fileMetadataId, long updateTime, String fileName) {
return generateFileDir(folder, fileMetadataId, updateTime) + fileName;
private String getFileName(String fileName, String fileSuffix) {
if (StringUtils.endsWithIgnoreCase(fileName, "." + fileSuffix)) {
return fileName;
} else {
return StringUtils.join(fileName, ".", fileSuffix);
}
}
public String generateFilePath(String folder, String fileMetadataId, long updateTime, String fileName, String fileSuffix) {
return generateFileDir(folder, fileMetadataId, updateTime) + getFileName(fileName, fileSuffix);
}
public String generateLocalFilePath(String filePath) {
@ -63,8 +71,8 @@ public class TemporaryFileUtil {
return file.exists() ? file : null;
}
public File getFile(String folder, String fileMetadataId, long updateTime, String fileName) {
File file = new File(generateFilePath(folder, fileMetadataId, updateTime, fileName));
public File getFile(String folder, String fileMetadataId, long updateTime, String fileName, String fileSuffix) {
File file = new File(generateFilePath(folder, fileMetadataId, updateTime, fileName, fileSuffix));
if (file.exists()) {
return file;
} else {
@ -72,18 +80,18 @@ public class TemporaryFileUtil {
}
}
public void saveFile(String folder, String fileMetadataId, long updateTime, String fileName, byte[] fileBytes) {
public void saveFile(String folder, String fileMetadataId, long updateTime, String fileName, String fileSuffix, byte[] fileBytes) {
//删除过期文件
deleteOldFile(folder, fileMetadataId, updateTime, fileName);
this.createFile(generateFilePath(folder, fileMetadataId, updateTime, fileName), fileBytes);
this.createFile(generateFilePath(folder, fileMetadataId, updateTime, fileName, fileSuffix), fileBytes);
}
public void saveFileByParamCheck(String folder, String fileMetadataId, long updateTime, String fileName, byte[] fileBytes) {
public void saveFileByParamCheck(String folder, String fileMetadataId, long updateTime, String fileName, String fileSuffix, byte[] fileBytes) {
if (fileBytes != null && StringUtils.isNotBlank(folder) && updateTime > 0
&& StringUtils.isNotBlank(fileName) && fileBytes.length > 0) {
//删除过期文件
deleteOldFile(folder, fileMetadataId, updateTime, fileName);
this.createFile(generateFilePath(folder, fileMetadataId, updateTime, fileName), fileBytes);
this.createFile(generateFilePath(folder, fileMetadataId, updateTime, fileName, fileSuffix), fileBytes);
}
}

View File

@ -8,6 +8,8 @@ import lombok.Data;
public class FileInfoDTO {
private String id;
private String fileName;
private String type;
private String projectId;
private long fileLastUpdateTime;
private String storage;

View File

@ -101,6 +101,7 @@ public class GitFileRepository implements FileRepository {
FileInfoDTO repositoryFileDTO = new FileInfoDTO(
fileRequest.getResourceId(),
MetadataUtils.getFileNameByRemotePath(gitFileInfo.getFilePath()),
fileRequest.getType(),
fileRequest.getProjectId(),
fileRequest.getUpdateTime(),
StorageConstants.GIT.name(),

View File

@ -118,7 +118,7 @@ public class LocalFileRepository implements FileRepository {
throw new RuntimeException(e);
}
return new FileInfoDTO(
fileRequest.getResourceId(), fileRequest.getFileName(),
fileRequest.getResourceId(), fileRequest.getFileName(), fileRequest.getType(),
fileRequest.getProjectId(), fileRequest.getUpdateTime(),
fileRequest.getStorage(), fileRequest.getPath(), content);
}).collect(Collectors.toList());

View File

@ -133,7 +133,7 @@ public class MinIOFileRepository implements FileRepository {
List<FileInfoDTO> list = new ArrayList<>();
if (CollectionUtils.isNotEmpty(requestList)) {
for (FileRequest fileRequest : requestList) {
FileInfoDTO fileInfoDTO = new FileInfoDTO(fileRequest.getResourceId(), fileRequest.getFileName(), fileRequest.getProjectId(), fileRequest.getUpdateTime(), fileRequest.getStorage(), fileRequest.getPath(), this.getFile(fileRequest));
FileInfoDTO fileInfoDTO = new FileInfoDTO(fileRequest.getResourceId(), fileRequest.getFileName(), fileRequest.getType(), fileRequest.getProjectId(), fileRequest.getUpdateTime(), fileRequest.getStorage(), fileRequest.getPath(), this.getFile(fileRequest));
list.add(fileInfoDTO);
}
}

View File

@ -564,7 +564,7 @@ public class FileMetadataService {
//检查是否存在已下载的文件
attachmentBodyFileList.forEach(fileMetadata -> {
if (!StringUtils.equals(fileMetadata.getFileStorage(), StorageConstants.LOCAL.name())) {
File file = temporaryFileUtil.getFile(fileMetadata.getProjectId(), fileMetadata.getFileMetadataId(), fileMetadata.getFileUpdateTime(), fileMetadata.getName());
File file = temporaryFileUtil.getFile(fileMetadata.getProjectId(), fileMetadata.getFileMetadataId(), fileMetadata.getFileUpdateTime(), fileMetadata.getName(), fileMetadata.getFileType());
if (file == null) {
downloadFileList.add(fileMetadata);
LoggerUtil.info("文件【" + fileMetadata.getFileUpdateTime() + "_" + fileMetadata.getName() + "】在执行目录【" + fileMetadata.getProjectId() + "】未找到,需要下载");
@ -594,10 +594,10 @@ public class FileMetadataService {
List<FileRequest> downloadFileRequest = new ArrayList<>();
//检查是否存在已下载的文件
fileMetadataWithBLOBList.forEach(fileMetadata -> {
File file = temporaryFileUtil.getFile(fileMetadata.getProjectId(), fileMetadata.getId(), fileMetadata.getUpdateTime(), fileMetadata.getName());
File file = temporaryFileUtil.getFile(fileMetadata.getProjectId(), fileMetadata.getId(), fileMetadata.getUpdateTime(), fileMetadata.getName(), fileMetadata.getType());
if (file != null) {
LoggerUtil.info("文件【" + fileMetadata.getUpdateTime() + "_" + fileMetadata.getName() + "】在执行目录【" + fileMetadata.getProjectId() + "】已找到,无需下载");
FileInfoDTO fileInfoDTO = new FileInfoDTO(fileMetadata.getId(), fileMetadata.getName(), fileMetadata.getProjectId(), fileMetadata.getUpdateTime(), fileMetadata.getStorage(), fileMetadata.getPath(), FileUtils.fileToByte(file));
FileInfoDTO fileInfoDTO = new FileInfoDTO(fileMetadata.getId(), fileMetadata.getName(), fileMetadata.getType(), fileMetadata.getProjectId(), fileMetadata.getUpdateTime(), fileMetadata.getStorage(), fileMetadata.getPath(), FileUtils.fileToByte(file));
fileInfoDTOList.add(fileInfoDTO);
} else {
LoggerUtil.info("文件【" + fileMetadata.getUpdateTime() + "_" + fileMetadata.getName() + "】在执行目录【" + fileMetadata.getProjectId() + "】未找到,需要下载");
@ -607,7 +607,7 @@ public class FileMetadataService {
List<FileInfoDTO> repositoryFileDTOList = fileManagerService.downloadFileBatch(downloadFileRequest);
//将文件存储到执行文件目录中避免多次执行时触发多次下载
if (CollectionUtils.isNotEmpty(repositoryFileDTOList)) {
repositoryFileDTOList.forEach(repositoryFile -> temporaryFileUtil.saveFileByParamCheck(repositoryFile.getProjectId(), repositoryFile.getId(), repositoryFile.getFileLastUpdateTime(), repositoryFile.getFileName(), repositoryFile.getFileByte()));
repositoryFileDTOList.forEach(repositoryFile -> temporaryFileUtil.saveFileByParamCheck(repositoryFile.getProjectId(), repositoryFile.getId(), repositoryFile.getFileLastUpdateTime(), repositoryFile.getFileName(), repositoryFile.getType(), repositoryFile.getFileByte()));
fileInfoDTOList.addAll(repositoryFileDTOList);
}
return fileInfoDTOList;
@ -624,7 +624,7 @@ public class FileMetadataService {
List<FileInfoDTO> repositoryFileDTOList = fileManagerService.downloadFileBatch(downloadFileRequest);
//将文件存储到执行文件目录中避免多次执行时触发多次下载
if (CollectionUtils.isNotEmpty(repositoryFileDTOList)) {
repositoryFileDTOList.forEach(repositoryFile -> temporaryFileUtil.saveFileByParamCheck(repositoryFile.getProjectId(), repositoryFile.getId(), repositoryFile.getFileLastUpdateTime(), repositoryFile.getFileName(), repositoryFile.getFileByte()));
repositoryFileDTOList.forEach(repositoryFile -> temporaryFileUtil.saveFileByParamCheck(repositoryFile.getProjectId(), repositoryFile.getId(), repositoryFile.getFileLastUpdateTime(), repositoryFile.getFileName(), repositoryFile.getType(), repositoryFile.getFileByte()));
}
LogUtil.info(JSON.toJSONString(downloadFileList) + " 获取执行文件结束");
}
@ -654,6 +654,7 @@ public class FileMetadataService {
request.setResourceId(attachmentBodyFile.getFileMetadataId());
request.setPath(attachmentBodyFile.getFilePath());
request.setStorage(attachmentBodyFile.getFileStorage());
request.setType(attachmentBodyFile.getFileType());
request.setUpdateTime(attachmentBodyFile.getFileUpdateTime());
if (StringUtils.equals(attachmentBodyFile.getFileStorage(), StorageConstants.GIT.name())) {
try {