Implement multipart tests (#4)
Test Workflow / Lint and test library (push) Successful in 1m59s Details

Currently, tests do not test multipart uploads (since they use very small files). Implement some large (randomly generated) files as well.

Reviewed-on: #4
This commit is contained in:
Gleb Koval 2023-12-31 09:02:36 +00:00
parent ddcbe28eca
commit ba050cbc79
1 changed files with 22 additions and 1 deletions

View File

@ -6,6 +6,7 @@ import org.junit.jupiter.api.*
import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Assertions.*
import java.io.File import java.io.File
import kotlin.io.path.* import kotlin.io.path.*
import kotlin.random.Random
val bucketName = System.getenv("BACKUP_BUCKET") ?: "teamcity-executors-test-task" val bucketName = System.getenv("BACKUP_BUCKET") ?: "teamcity-executors-test-task"
@ -17,7 +18,7 @@ class BackupClientTest {
fun `before each`() = fun `before each`() =
runBlocking { runBlocking {
s3 = S3Client.fromEnvironment {} s3 = S3Client.fromEnvironment {}
backupClient = BackupClient(s3, bucketName) backupClient = BackupClient(s3, bucketName, 1024 * 1024 * 10)
} }
@AfterEach @AfterEach
@ -49,6 +50,26 @@ class BackupClientTest {
Path("_test/README.md").apply { writeText("# This is a test directory structure.") }, 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) -> ).map { (name, pathsGen) ->
DynamicTest.dynamicTest(name) { DynamicTest.dynamicTest(name) {
val paths = pathsGen() val paths = pathsGen()