package co.codewizards.cloudstore.client; import static co.codewizards.cloudstore.core.oio.OioFileFactory.*; import static org.assertj.core.api.Assertions.*; import java.io.IOException; import java.math.BigInteger; import java.util.Arrays; import java.util.Random; import co.codewizards.cloudstore.core.DevMode; import co.codewizards.cloudstore.core.config.ConfigDir; import co.codewizards.cloudstore.core.oio.File; import co.codewizards.cloudstore.core.repo.local.LocalRepoManager; import co.codewizards.cloudstore.core.util.IOUtil; import co.codewizards.cloudstore.local.FilenameFilterSkipMetaDir; public abstract class AbstractTest { static { DevMode.enableDevMode(); System.setProperty(ConfigDir.SYSTEM_PROPERTY_CONFIG_DIR, "target/.cloudstore"); System.setProperty(LocalRepoManager.SYSTEM_PROPERTY_KEY_SIZE, "1024"); } protected static final Random random = new Random(); // protected static LocalRepoManagerFactory localRepoManagerFactory = LocalRepoManagerFactory.getInstance(); protected File newTestRepositoryLocalRoot(final String suffix) throws IOException { assertThat(suffix).isNotNull(); final long timestamp = System.currentTimeMillis(); final int randomNumber = random.nextInt(BigInteger.valueOf(36).pow(5).intValue()); final String repoName = Long.toString(timestamp, 36) + '-' + Integer.toString(randomNumber, 36) + (suffix.isEmpty() ? "" : "-") + suffix; final File localRoot = createFile(getTestRepositoryBaseDir(), repoName); return localRoot; } protected File getTestRepositoryBaseDir() { final File dir = createFile(createFile("target"), "repo"); dir.mkdirs(); return dir; } protected void assertDirectoriesAreEqualRecursively(final File dir1, final File dir2) throws IOException { assertThat(dir1.isDirectory()).isTrue(); assertThat(dir2.isDirectory()).isTrue(); final String[] children1 = dir1.list(new FilenameFilterSkipMetaDir()); assertThat(children1).isNotNull(); final String[] children2 = dir2.list(new FilenameFilterSkipMetaDir()); assertThat(children2).isNotNull(); Arrays.sort(children1); Arrays.sort(children2); assertThat(children1).containsOnly(children2); for (final String childName : children1) { final File child1 = createFile(dir1, childName); final File child2 = createFile(dir2, childName); if (child1.isFile()) { assertThat(child2.isFile()); assertThat(IOUtil.compareFiles(child1, child2)).isTrue(); } if (child1.isDirectory()) assertDirectoriesAreEqualRecursively(child1, child2); } } }