Как получить содержимое объекта aws s3? - PullRequest
1 голос
/ 03 февраля 2020

Я написал код java для чтения содержимого файла AWS S3, если это текстовый файл и модульный тест для тестирования. Здесь в модуле мой тест я создаю временный файл во временной папке, записываю содержимое в файл и загружаю его в файл s3 (@BeforeAll). Следующий служебный класс предназначен для чтения этого загруженного файла.

Я надеюсь, что метод, который я написал, выполняет свою работу. Но написанное мной модульное тестирование не проходит из-за ошибки подтверждения.

Ниже приведены мой служебный класс и модульный тест. Может кто-нибудь указать, где я ошибся?

Класс утилит

public static S3Response read(S3Request s3Request) {
        S3Validation.source(s3Request);
        S3Object s3object = AWSClient.getAwsS3Client().getObject(S3RequestBuilder.read(s3Request));
        BufferedReader reader = new BufferedReader(new InputStreamReader(s3object.getObjectContent()));
        String line;
        try {
            line = reader.readLine();

            StringBuilder stringBuilder = new StringBuilder();
            while (line != null) {
                stringBuilder.append(line).append("\n");
                line = reader.readLine();
            }
            String fileAsString = stringBuilder.toString();
            response.setResponse(fileAsString);
        } catch (IOException ex) {
            LOGGER.error(ex.getMessage());
        }
        return response;
    }

JUnit test

 @Test
    public void test_readFile() throws IOException {
        s3Request = new S3Request();

        s3Request.setSourceURI(CommonParameters.S3_PREFIX + SSMUtil.getBucketName(SSMParameters.SSM_BUCKETNAME)
                + "/ReadFile/read.txt");
        S3Utils.read(s3Request);
        System.out.println(S3Utils.read(s3Request).getResponse());
        assertEquals(content, S3Utils.read(s3Request).getResponse().toString());
    }

И я использовал следующий метод для написания контента в файл.

 Files.createDirectories(Paths.get(uploadReadSource));
        File read = File.createTempFile("read", ".txt", new File(uploadReadSource));
        s3Request.setLocalPath(read.getAbsolutePath());
        s3Request.setDestURI(CommonParameters.S3_PREFIX + SSMUtil.getBucketName(SSMParameters.SSM_BUCKETNAME)
                + "/ReadFile/read.txt");
        BufferedWriter bufferWriter = new BufferedWriter(new FileWriter(read));

        bufferWriter.write(content);
        bufferWriter.close();
        S3Utils.uploadFile(s3Request);

S3Response Class

public class S3Response {
    private boolean isSuccess;
    private String response;

    public S3Response() {
    }

    public S3Response(boolean isSuccess, String response) {
        this.setSuccess(isSuccess);
        this.setResponse(response);
    }

    public boolean isSuccess() {
        return isSuccess;
    }

    public void setSuccess(boolean isSuccess) {
        this.isSuccess = isSuccess;
    }

    public String getResponse() {
        return response;
    }

    public void setResponse(String response) {
        this.response = response;
    }

 }

Получаемая ошибка подтверждения:

org.opentest4j.AssertionFailedError: expected: <This is the temporary data written to temp file> but was: <This is the temporary data written to temp file
>
...