From 1c6428dd3b24e5c95969d2a56b9c8dc3e219991f Mon Sep 17 00:00:00 2001 From: CalDescent Date: Wed, 23 Jun 2021 08:07:35 +0100 Subject: [PATCH] Added equivalent split and join test but this time using a 5.5MiB source file. --- src/test/java/org/qortal/test/DataTests.java | 32 ++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/test/java/org/qortal/test/DataTests.java b/src/test/java/org/qortal/test/DataTests.java index 2d68d41b..a628443f 100644 --- a/src/test/java/org/qortal/test/DataTests.java +++ b/src/test/java/org/qortal/test/DataTests.java @@ -6,6 +6,8 @@ import org.qortal.repository.DataException; import org.qortal.storage.DataFile; import org.qortal.test.common.Common; +import java.util.Random; + import static org.junit.Assert.*; public class DataTests extends Common { @@ -42,4 +44,34 @@ public class DataTests extends Common { assertEquals("3eyjYjturyVe61grRX42bprGr3Cvw6ehTy4iknVnosDj", dataFile.base58Digest()); } + @Test + public void testSplitAndJoinWithLargeFiles() { + int fileSize = (int) (5.5f * 1024 * 1024); // 5.5MiB + byte[] randomData = new byte[fileSize]; + new Random().nextBytes(randomData); // No need for SecureRandom here + + DataFile dataFile = new DataFile(randomData); + assertTrue(dataFile.exists()); + assertEquals(fileSize, dataFile.size()); + String originalFileDigest = dataFile.base58Digest(); + + // Split into chunks using 1MiB chunk size + dataFile.split(1 * 1024 * 1024); + assertEquals(6, dataFile.chunkCount()); + + // Delete the original file + dataFile.delete(); + assertFalse(dataFile.exists()); + assertEquals(0, dataFile.size()); + + // Now rebuild the original file from the chunks + assertEquals(6, dataFile.chunkCount()); + dataFile.join(); + + // Validate that the original file is intact + assertTrue(dataFile.exists()); + assertEquals(fileSize, dataFile.size()); + assertEquals(originalFileDigest, dataFile.base58Digest()); + } + }