summaryrefslogtreecommitdiff
path: root/src/test/java/com/keuin
diff options
context:
space:
mode:
authorKeuin <[email protected]>2021-01-14 13:00:52 +0800
committerkeuin <[email protected]>2021-01-14 13:00:52 +0800
commit6baece29cccc906651331cbf8a90a06f8cee045b (patch)
tree37a33912b7b057376a4c2845738f076ac7da3467 /src/test/java/com/keuin
parent5410762b8272feca0680f7a48f895714b91e3df7 (diff)
Fix a minor naming bug.
Code refactor. Improve test.
Diffstat (limited to 'src/test/java/com/keuin')
-rw-r--r--src/test/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredIncrementalBackupMethodTest.java34
-rw-r--r--src/test/java/com/keuin/kbackupfabric/util/backup/incremental/ObjectCollectionFactoryTest.java14
-rw-r--r--src/test/java/com/keuin/kbackupfabric/util/backup/incremental/identifier/Sha256IdentifierTest.java2
-rw-r--r--src/test/java/com/keuin/kbackupfabric/util/backup/name/IncrementalBackupFileNameEncoderTest.java38
-rw-r--r--src/test/java/com/keuin/kbackupfabric/util/backup/name/PrimitiveBackupFileNameEncoderTest.java33
5 files changed, 104 insertions, 17 deletions
diff --git a/src/test/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredIncrementalBackupMethodTest.java b/src/test/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredIncrementalBackupMethodTest.java
index 7e4f267..58e1711 100644
--- a/src/test/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredIncrementalBackupMethodTest.java
+++ b/src/test/java/com/keuin/kbackupfabric/operation/backup/method/ConfiguredIncrementalBackupMethodTest.java
@@ -4,6 +4,7 @@ import org.apache.commons.codec.digest.DigestUtils;
import org.junit.Test;
import java.io.*;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
@@ -19,14 +20,14 @@ public class ConfiguredIncrementalBackupMethodTest {
private final String destDirectoryName = "destination";
private final String indexFileName = "index";
- private final double directoryFactor = 0.4;
- private final double fileFactor = 0.1;
- private final int maxRandomFileSizeBytes = 1024 * 1024;
+ private final double directoryFactor = 0.03;
+ private final double fileFactor = 0.05;
+ private final int maxRandomFileSizeBytes = 1024 * 1024 * 16;
private final Function<Integer, Integer> scaleDecayFunc = (x) -> x - 1;
@Test
public void iterationTest() throws IOException {
- int a = 100;
+ int a = 12;
for (int i = 0; i < a; ++i) {
performTest(Math.min(i + 1, 10));
System.out.println("Round " + i + " passed.");
@@ -75,9 +76,28 @@ public class ConfiguredIncrementalBackupMethodTest {
if (!method.restore())
fail();
+ boolean fake = scale % 2 != 0;
+
+ int[] success = new int[1];
+ if (fake) {
+ Files.walk(sourcePath).filter(path -> path.toFile().isFile()).limit(3).forEach(path -> {
+ if (!path.toFile().delete())
+ fail();
+ success[0]++;
+ });
+ if (success[0] == 0)
+ fake = false;
+ }
+
+ if (fake)
+ System.out.println("Fake: deleted " + success[0] + " file(s).");
+
String hash2 = calcMD5HashForDir(sourcePath.toFile(), true);
- assertEquals(hash1, hash2);
+ if (!fake)
+ assertEquals(hash1, hash2);
+ else
+ assertNotEquals(hash1, hash2);
}
private void createRandomDirectoryTree(String path, int scale) throws IOException {
@@ -94,7 +114,7 @@ public class ConfiguredIncrementalBackupMethodTest {
for (int i = 0; i < subFileCount; i++) {
String subFile = null;
while (subFile == null || new File(path, subFile).exists())
- subFile = getRandomString((int) (Math.random() * 16 + 1));
+ subFile = getRandomString((int) (Math.random() * 16 + 5));
createRandomFile(new File(path, subFile), maxRandomFileSizeBytes);
}
@@ -103,7 +123,7 @@ public class ConfiguredIncrementalBackupMethodTest {
for (int i = 0; i < subDirCount; i++) {
String subDir = null;
while (subDir == null || new File(path, subDir).exists())
- subDir = getRandomString((int) (Math.random() * 16 + 1));
+ subDir = getRandomString((int) (Math.random() * 16 + 5));
createRandomDirectoryTree(new File(path, subDir).getAbsolutePath(), scaleDecayFunc.apply(scale));
}
}
diff --git a/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/ObjectCollectionFactoryTest.java b/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/ObjectCollectionFactoryTest.java
index b7e0aad..3f722a4 100644
--- a/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/ObjectCollectionFactoryTest.java
+++ b/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/ObjectCollectionFactoryTest.java
@@ -20,7 +20,7 @@ public class ObjectCollectionFactoryTest {
}
for (Map.Entry<String, ObjectElement> entry : collection.getElementMap().entrySet()) {
// assertTrue(subElements.contains(e.getIdentification()));
- assertEquals(subElements.get(entry.getKey()), entry.getValue().getIdentifier().getIdentification());
+ assertEquals(subElements.get(entry.getKey()).toUpperCase(), entry.getValue().getIdentifier().getIdentification().toUpperCase());
}
}
@@ -39,14 +39,14 @@ public class ObjectCollectionFactoryTest {
final Map<String, String> elements = new HashMap<>();
// check root dir
- elements.put("a", "261CA0D59FEE8FD169802BB8030A07CF23E5C1593FA81A16C6D0A8CF27DAA2ED");
- elements.put("b", "B3FED75012C4969DC63A50EBC4E745FF77E4A06E0B04720EF71EF033032EBAF7");
+ elements.put("a", "S2-261CA0D59FEE8FD169802BB8030A07CF23E5C1593FA81A16C6D0A8CF27DAA2ED");
+ elements.put("b", "S2-B3FED75012C4969DC63A50EBC4E745FF77E4A06E0B04720EF71EF033032EBAF7");
validate(collection, Arrays.asList("1", "2", "3"), elements);
elements.clear();
// check `1`
- elements.put("a", "E8620F35A5DB33B1257CC51245DDACDA8AF3E0D431A8A38473575E468BCBD0BD");
- elements.put("b", "19EE41585A674274891DE5A4B365DBAB9C49C576AB6F86CD515B683724D2DBBD");
+ elements.put("a", "S2-E8620F35A5DB33B1257CC51245DDACDA8AF3E0D431A8A38473575E468BCBD0BD");
+ elements.put("b", "S2-19EE41585A674274891DE5A4B365DBAB9C49C576AB6F86CD515B683724D2DBBD");
validate(collection.getSubCollectionMap().get("1"), Arrays.asList("11", "12"), elements);
elements.clear();
@@ -60,8 +60,8 @@ public class ObjectCollectionFactoryTest {
validate(collection.getSubCollectionMap().get("1").getSubCollectionMap().get("11"), Collections.singletonList("111"), Collections.emptyMap());
// check `111`
- elements.put("a", "1EDBE882A757E1FAFCA77A9D3BE3FF5D2BB3E2037B238C865F1F957C431F43B4");
- elements.put("b", "30BA7CD8B4AD93A8B3826CD8D1518790924EEBB930EC04DF7DFB03A50B17D7BC");
+ elements.put("a", "S2-1EDBE882A757E1FAFCA77A9D3BE3FF5D2BB3E2037B238C865F1F957C431F43B4");
+ elements.put("b", "S2-30BA7CD8B4AD93A8B3826CD8D1518790924EEBB930EC04DF7DFB03A50B17D7BC");
validate(
collection.getSubCollectionMap().get("1").getSubCollectionMap().get("11").getSubCollectionMap().get("111"),
Collections.emptyList(),
diff --git a/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/identifier/Sha256IdentifierTest.java b/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/identifier/Sha256IdentifierTest.java
index 53e92e2..f799a95 100644
--- a/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/identifier/Sha256IdentifierTest.java
+++ b/src/test/java/com/keuin/kbackupfabric/util/backup/incremental/identifier/Sha256IdentifierTest.java
@@ -15,7 +15,7 @@ public class Sha256IdentifierTest {
try {
Sha256Identifier sha256 = Sha256Identifier.fromFile(new File("./testfile/Sha256IdentifierTest"));
String str = sha256.getIdentification().toUpperCase();
- assertEquals("315F5BDB76D078C43B8AC0064E4A0164612B1FCE77C869345BFC94C75894EDD3", str);
+ assertEquals("S2-315F5BDB76D078C43B8AC0064E4A0164612B1FCE77C869345BFC94C75894EDD3", str);
} catch (IOException e) {
e.printStackTrace();
fail();
diff --git a/src/test/java/com/keuin/kbackupfabric/util/backup/name/IncrementalBackupFileNameEncoderTest.java b/src/test/java/com/keuin/kbackupfabric/util/backup/name/IncrementalBackupFileNameEncoderTest.java
new file mode 100644
index 0000000..e5fedd7
--- /dev/null
+++ b/src/test/java/com/keuin/kbackupfabric/util/backup/name/IncrementalBackupFileNameEncoderTest.java
@@ -0,0 +1,38 @@
+package com.keuin.kbackupfabric.util.backup.name;
+
+import org.junit.Test;
+
+import java.time.LocalDateTime;
+
+import static org.junit.Assert.*;
+
+public class IncrementalBackupFileNameEncoderTest {
+ @Test
+ public void testEncode() {
+ LocalDateTime time = LocalDateTime.of(1, 1, 1, 1, 1, 1);
+ String customName = "name";
+ IncrementalBackupFileNameEncoder encoder = new IncrementalBackupFileNameEncoder();
+ assertEquals("incremental-0001-01-01_01-01-01_name.kbi", encoder.encode(customName, time));
+ }
+
+ @Test
+ public void testDecode() {
+ LocalDateTime time = LocalDateTime.of(1, 1, 1, 1, 1, 1);
+ String customName = "name";
+ IncrementalBackupFileNameEncoder encoder = new IncrementalBackupFileNameEncoder();
+ BackupFileNameEncoder.BackupBasicInformation information = encoder.decode("incremental-0001-01-01_01-01-01_name.kbi");
+ assertEquals(time, information.time);
+ assertEquals(customName, information.customName);
+ }
+
+ @Test
+ public void isValid() {
+ IncrementalBackupFileNameEncoder encoder = new IncrementalBackupFileNameEncoder();
+ assertTrue(encoder.isValidFileName("incremental-0001-01-01_01-01-01_name.kbi"));
+ assertTrue(encoder.isValidFileName("incremental-0001-01-01_01-01-01_0001-01-01_01-01-01_name.kbi"));
+ assertFalse(encoder.isValidFileName("incremental-0001-01-01_01-01-01incremental-0001-01-01_01-01-01_name.kbi"));
+ assertFalse(encoder.isValidFileName("incremental-0001-01-01_01-01-01_name"));
+ assertFalse(encoder.isValidFileName("incremental-0001-01-01_01-01-01_name.zip"));
+ assertFalse(encoder.isValidFileName("somefile"));
+ }
+} \ No newline at end of file
diff --git a/src/test/java/com/keuin/kbackupfabric/util/backup/name/PrimitiveBackupFileNameEncoderTest.java b/src/test/java/com/keuin/kbackupfabric/util/backup/name/PrimitiveBackupFileNameEncoderTest.java
index 4823575..abc19d5 100644
--- a/src/test/java/com/keuin/kbackupfabric/util/backup/name/PrimitiveBackupFileNameEncoderTest.java
+++ b/src/test/java/com/keuin/kbackupfabric/util/backup/name/PrimitiveBackupFileNameEncoderTest.java
@@ -5,17 +5,46 @@ import org.junit.Test;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
-import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.*;
public class PrimitiveBackupFileNameEncoderTest {
@Test
public void testConsistency() {
- LocalDateTime time = LocalDateTime.ofEpochSecond(System.currentTimeMillis()/1000, 0, ZoneOffset.UTC);
+ LocalDateTime time = LocalDateTime.ofEpochSecond(System.currentTimeMillis() / 1000, 0, ZoneOffset.UTC);
String name = "Test Na_me";
PrimitiveBackupFileNameEncoder encoder = new PrimitiveBackupFileNameEncoder();
BackupFileNameEncoder.BackupBasicInformation information = encoder.decode(encoder.encode(name, time));
assertEquals(time, information.time);
assertEquals(name, information.customName);
}
+
+ @Test
+ public void testEncode() {
+ LocalDateTime time = LocalDateTime.of(1, 1, 1, 1, 1, 1);
+ String customName = "name";
+ PrimitiveBackupFileNameEncoder encoder = new PrimitiveBackupFileNameEncoder();
+ assertEquals("kbackup-0001-01-01_01-01-01_name.zip", encoder.encode(customName, time));
+ }
+
+ @Test
+ public void testDecode() {
+ LocalDateTime time = LocalDateTime.of(1, 1, 1, 1, 1, 1);
+ String customName = "name";
+ PrimitiveBackupFileNameEncoder encoder = new PrimitiveBackupFileNameEncoder();
+ BackupFileNameEncoder.BackupBasicInformation information = encoder.decode("kbackup-0001-01-01_01-01-01_name.zip");
+ assertEquals(time, information.time);
+ assertEquals(customName, information.customName);
+ }
+
+ @Test
+ public void isValid() {
+ PrimitiveBackupFileNameEncoder encoder = new PrimitiveBackupFileNameEncoder();
+ assertTrue(encoder.isValidFileName("kbackup-0001-01-01_01-01-01_name.zip"));
+ assertTrue(encoder.isValidFileName("kbackup-0001-01-01_01-01-01_0001-01-01_01-01-01_name.zip"));
+ assertFalse(encoder.isValidFileName("kbackup-0001-01-01_01-01-01kbackup-0001-01-01_01-01-01_name.zip"));
+ assertFalse(encoder.isValidFileName("kbackup-0001-01-01_01-01-01_name"));
+ assertFalse(encoder.isValidFileName("kbackup-0001-01-01_01-01-01_name.kbi"));
+ assertFalse(encoder.isValidFileName("somefile"));
+ }
} \ No newline at end of file