package tech.powerjob.server.persistence.storage.impl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.junit.jupiter.api.Test; import tech.powerjob.common.serialize.JsonUtils; import tech.powerjob.server.common.utils.OmsFileUtils; import tech.powerjob.server.extension.dfs.*; import java.io.File; import java.nio.charset.StandardCharsets; import java.util.Optional; import java.util.concurrent.ThreadLocalRandom; /** * AbstractDfsServiceTest * * @author tjq * @since 2023/7/30 */ @Slf4j public abstract class AbstractDfsServiceTest { private static final String BUCKET = "pj_test"; abstract protected Optional fetchService(); @Test void testBaseFileOperation() throws Exception { Optional aliOssServiceOpt = fetchService(); if (!aliOssServiceOpt.isPresent()) { return; } DFsService aliOssService = aliOssServiceOpt.get(); String content = "wlcgyqsl".concat(String.valueOf(ThreadLocalRandom.current().nextLong())); String temporarySourcePath = OmsFileUtils.genTemporaryWorkPath() + "source.txt"; String temporaryDownloadPath = OmsFileUtils.genTemporaryWorkPath() + "download.txt"; log.info("[testBaseFileOperation] temporarySourcePath: {}", temporarySourcePath); File sourceFile = new File(temporarySourcePath); FileUtils.forceMkdirParent(sourceFile); OmsFileUtils.string2File(content, sourceFile); FileLocation fileLocation = new FileLocation().setBucket(BUCKET).setName(String.format("test_%d.txt", ThreadLocalRandom.current().nextLong())); StoreRequest storeRequest = new StoreRequest() .setFileLocation(fileLocation) .setLocalFile(sourceFile); // 存储 aliOssService.store(storeRequest); // 读取 meta Optional metaOpt = aliOssService.fetchFileMeta(fileLocation); assert metaOpt.isPresent(); log.info("[testBaseFileOperation] file meta: {}", JsonUtils.toJSONString(metaOpt.get())); // 下载 log.info("[testBaseFileOperation] temporaryDownloadPath: {}", temporaryDownloadPath); File downloadFile = new File(temporaryDownloadPath); DownloadRequest downloadRequest = new DownloadRequest() .setFileLocation(fileLocation) .setTarget(downloadFile); aliOssService.download(downloadRequest); String downloadFileContent = FileUtils.readFileToString(downloadFile, StandardCharsets.UTF_8); log.info("[testBaseFileOperation] download content: {}", downloadFileContent); assert downloadFileContent.equals(content); // 定时清理,只是执行,不校验 aliOssService.cleanExpiredFiles(BUCKET, 3); } @Test void testFileNotExist() throws Exception { Optional aliOssServiceOpt = fetchService(); if (!aliOssServiceOpt.isPresent()) { return; } Optional metaOpt = aliOssServiceOpt.get().fetchFileMeta(new FileLocation().setBucket("tjq").setName("yhz")); assert !metaOpt.isPresent(); } }