From ba050cbc79af4e6ccbbc76528d663d5c160f3845 Mon Sep 17 00:00:00 2001 From: Gleb Koval Date: Sun, 31 Dec 2023 09:02:36 +0000 Subject: [PATCH] Implement multipart tests (#4) Currently, tests do not test multipart uploads (since they use very small files). Implement some large (randomly generated) files as well. Reviewed-on: https://git.koval.net/cyclane/teamcity-executors-test-task/pulls/4 --- src/test/kotlin/backup/BackupClientTest.kt | 23 +++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/test/kotlin/backup/BackupClientTest.kt b/src/test/kotlin/backup/BackupClientTest.kt index 74be479..ae825df 100644 --- a/src/test/kotlin/backup/BackupClientTest.kt +++ b/src/test/kotlin/backup/BackupClientTest.kt @@ -6,6 +6,7 @@ import org.junit.jupiter.api.* import org.junit.jupiter.api.Assertions.* import java.io.File import kotlin.io.path.* +import kotlin.random.Random val bucketName = System.getenv("BACKUP_BUCKET") ?: "teamcity-executors-test-task" @@ -17,7 +18,7 @@ class BackupClientTest { fun `before each`() = runBlocking { s3 = S3Client.fromEnvironment {} - backupClient = BackupClient(s3, bucketName) + backupClient = BackupClient(s3, bucketName, 1024 * 1024 * 10) } @AfterEach @@ -49,6 +50,26 @@ class BackupClientTest { Path("_test/README.md").apply { writeText("# This is a test directory structure.") }, ) }, + "single large file" to { + val bytes = ByteArray(1024 * 1024 * 32) + Random.nextBytes(bytes) + listOf( + Path("_test.txt").apply { writeBytes(bytes) }, + ) + }, + "large directory structure" to { + val bytes1 = ByteArray(1024 * 1024 * 32) + val bytes2 = ByteArray(1024 * 1024 * 48) + listOf( + Path("_test").createDirectory(), + Path("_test/a.txt").apply { writeBytes(bytes1) }, + Path("_test/folder").createDirectory(), + Path("_test/another-folder").createDirectory(), + Path("_test/another-folder/b").apply { writeText("This is file B\n") }, + Path("_test/another-folder/c.txt").createFile(), + Path("_test/README.md").apply { writeBytes(bytes2) }, + ) + }, ).map { (name, pathsGen) -> DynamicTest.dynamicTest(name) { val paths = pathsGen()