Search in sources :

Example 11 with Config

use of org.syncany.config.Config in project syncany by syncany.

the class TestConfigUtil method createDummyConfig.

public static Config createDummyConfig() throws Exception {
    ConfigTO configTO = new ConfigTO();
    configTO.setMachineName("dummymachine");
    RepoTO repoTO = new RepoTO();
    repoTO.setTransformers(null);
    repoTO.setChunkerTO(createFixedChunkerTO());
    repoTO.setMultiChunker(createZipMultiChunkerTO());
    return new Config(new File("/dummy"), configTO, repoTO);
}
Also used : UserConfig(org.syncany.config.UserConfig) Config(org.syncany.config.Config) ConfigTO(org.syncany.config.to.ConfigTO) RepoTO(org.syncany.config.to.RepoTO) File(java.io.File)

Example 12 with Config

use of org.syncany.config.Config in project syncany by syncany.

the class FileSystemActionReconciliatorTest method testFileSystemActionReconDeleteNonExistingFolder.

@Test
public void testFileSystemActionReconDeleteNonExistingFolder() throws Exception {
    // Setup
    TransferSettings testConnection = TestConfigUtil.createTestLocalConnection();
    TestClient clientA = new TestClient("A", testConnection);
    Config testConfigA = clientA.getConfig();
    // - Create first database version
    clientA.createNewFolder("new folder/some subfolder");
    clientA.upWithForceChecksum();
    // Delete this!
    clientA.deleteFile("new folder/some subfolder");
    // - Create new version (delete folder)
    TestSqlDatabase sqlDatabaseA = new TestSqlDatabase(testConfigA);
    PartialFileHistory folderFileHistoryWithLastVersion = sqlDatabaseA.getFileHistoryWithLastVersion("new folder/some subfolder");
    FileVersion deletedFolderVersion = folderFileHistoryWithLastVersion.getLastVersion().clone();
    deletedFolderVersion.setStatus(FileStatus.DELETED);
    deletedFolderVersion.setVersion(deletedFolderVersion.getVersion() + 1);
    PartialFileHistory deletedFolderVersionHistory = new PartialFileHistory(folderFileHistoryWithLastVersion.getFileHistoryId());
    deletedFolderVersionHistory.addFileVersion(deletedFolderVersion);
    DatabaseVersion winnersDatabaseVersion = TestDatabaseUtil.createDatabaseVersion(sqlDatabaseA.getLastDatabaseVersionHeader());
    winnersDatabaseVersion.addFileHistory(deletedFolderVersionHistory);
    // - Create memory database with this version
    MemoryDatabase winnersDatabase = new MemoryDatabase();
    winnersDatabase.addDatabaseVersion(winnersDatabaseVersion);
    // Run! Finally!
    DownOperationResult outDownOperationResult = new DownOperationResult();
    FileSystemActionReconciliator fileSystemActionReconciliator = new FileSystemActionReconciliator(testConfigA, outDownOperationResult.getChangeSet());
    List<FileSystemAction> fileSystemActions = fileSystemActionReconciliator.determineFileSystemActions(winnersDatabase);
    assertNotNull(fileSystemActions);
    assertEquals(0, fileSystemActions.size());
    // Tear down
    clientA.deleteTestData();
}
Also used : Config(org.syncany.config.Config) DownOperationResult(org.syncany.operations.down.DownOperationResult) FileSystemAction(org.syncany.operations.down.actions.FileSystemAction) TestClient(org.syncany.tests.util.TestClient) FileVersion(org.syncany.database.FileVersion) MemoryDatabase(org.syncany.database.MemoryDatabase) TestSqlDatabase(org.syncany.tests.util.TestSqlDatabase) TransferSettings(org.syncany.plugins.transfer.TransferSettings) PartialFileHistory(org.syncany.database.PartialFileHistory) DatabaseVersion(org.syncany.database.DatabaseVersion) FileSystemActionReconciliator(org.syncany.operations.down.FileSystemActionReconciliator) Test(org.junit.Test)

Example 13 with Config

use of org.syncany.config.Config in project syncany by syncany.

the class FileVersionComparatorTest method testCaptureFilePropertiesFromFileVersion.

@Test
public void testCaptureFilePropertiesFromFileVersion() throws Exception {
    // Setup
    Config config = TestConfigUtil.createTestLocalConfig();
    FileVersionComparator versionComparator = new FileVersionComparator(config.getLocalDir(), config.getChunker().getChecksumAlgorithm());
    FileVersion fileVersion = new FileVersion();
    fileVersion.setVersion(3L);
    fileVersion.setChecksum(new FileChecksum(new byte[] { 0x11, 0x22, 0x33 }));
    fileVersion.setLastModified(new Date(123456789));
    fileVersion.setPath("folder/file");
    fileVersion.setSize(999 * 1024L);
    fileVersion.setLinkTarget(null);
    fileVersion.setStatus(FileStatus.CHANGED);
    fileVersion.setType(FileType.FILE);
    if (EnvironmentUtil.isWindows()) {
        fileVersion.setDosAttributes("rha-");
    } else if (EnvironmentUtil.isUnixLikeOperatingSystem()) {
        fileVersion.setPosixPermissions("rw-rw-r-x");
    }
    // Run
    FileProperties fileProperties = versionComparator.captureFileProperties(fileVersion);
    // Test
    assertEquals(new FileChecksum(new byte[] { 0x11, 0x22, 0x33 }), fileProperties.getChecksum());
    assertEquals(123456789, fileProperties.getLastModified());
    assertEquals("folder/file", fileProperties.getRelativePath());
    assertEquals(999 * 1024, fileProperties.getSize());
    assertNull(fileProperties.getLinkTarget());
    assertTrue(fileProperties.exists());
    assertEquals(FileType.FILE, fileProperties.getType());
    if (EnvironmentUtil.isWindows()) {
        DosFileAttributes dosFileAttributes = FileUtil.dosAttrsFromString(fileProperties.getDosAttributes());
        assertTrue(dosFileAttributes.isArchive());
        assertTrue(dosFileAttributes.isHidden());
        assertTrue(dosFileAttributes.isReadOnly());
        assertFalse(dosFileAttributes.isSystem());
        assertNull(fileProperties.getPosixPermissions());
    } else if (EnvironmentUtil.isUnixLikeOperatingSystem()) {
        assertEquals("rw-rw-r-x", fileProperties.getPosixPermissions());
        assertNull(fileProperties.getDosAttributes());
    }
    // Tear down
    TestConfigUtil.deleteTestLocalConfigAndData(config);
}
Also used : FileProperties(org.syncany.database.FileVersionComparator.FileProperties) Config(org.syncany.config.Config) DosFileAttributes(java.nio.file.attribute.DosFileAttributes) FileVersion(org.syncany.database.FileVersion) FileVersionComparator(org.syncany.database.FileVersionComparator) FileChecksum(org.syncany.database.FileContent.FileChecksum) Date(java.util.Date) Test(org.junit.Test)

Example 14 with Config

use of org.syncany.config.Config in project syncany by syncany.

the class FileVersionComparatorTest method testCaptureFilePropertiesFromFile.

@Test
public void testCaptureFilePropertiesFromFile() throws Exception {
    // Setup
    Config config = TestConfigUtil.createTestLocalConfig();
    FileVersionComparator versionComparator = new FileVersionComparator(config.getLocalDir(), config.getChunker().getChecksumAlgorithm());
    // Create file
    File somefile = new File(config.getLocalDir() + "/somefile");
    Path somefilePath = Paths.get(somefile.getAbsolutePath());
    TestFileUtil.createRandomFile(somefile, 100 * 1024);
    somefile.setLastModified(1382196000);
    if (EnvironmentUtil.isWindows()) {
        Files.setAttribute(somefilePath, "dos:archive", false);
        Files.setAttribute(somefilePath, "dos:hidden", false);
        Files.setAttribute(somefilePath, "dos:readonly", false);
        Files.setAttribute(somefilePath, "dos:system", false);
    } else if (EnvironmentUtil.isUnixLikeOperatingSystem()) {
        Files.setPosixFilePermissions(somefilePath, PosixFilePermissions.fromString("rw-rw-r-x"));
    }
    // Run
    FileProperties fileProperties = versionComparator.captureFileProperties(somefile, null, true);
    // Test
    assertNotNull(fileProperties.getChecksum());
    assertEquals(1382196000, fileProperties.getLastModified());
    assertEquals("somefile", fileProperties.getRelativePath());
    assertEquals(100 * 1024, fileProperties.getSize());
    assertNull(fileProperties.getLinkTarget());
    assertTrue(fileProperties.exists());
    assertEquals(FileType.FILE, fileProperties.getType());
    if (EnvironmentUtil.isWindows()) {
        DosFileAttributes dosFileAttributes = FileUtil.dosAttrsFromString(fileProperties.getDosAttributes());
        assertFalse(dosFileAttributes.isArchive());
        assertFalse(dosFileAttributes.isHidden());
        assertFalse(dosFileAttributes.isReadOnly());
        assertFalse(dosFileAttributes.isSystem());
        assertNull(fileProperties.getPosixPermissions());
    } else if (EnvironmentUtil.isUnixLikeOperatingSystem()) {
        assertEquals("rw-rw-r-x", fileProperties.getPosixPermissions());
        assertNull(fileProperties.getDosAttributes());
    }
    // Tear down
    TestConfigUtil.deleteTestLocalConfigAndData(config);
}
Also used : Path(java.nio.file.Path) FileProperties(org.syncany.database.FileVersionComparator.FileProperties) Config(org.syncany.config.Config) DosFileAttributes(java.nio.file.attribute.DosFileAttributes) FileVersionComparator(org.syncany.database.FileVersionComparator) File(java.io.File) Test(org.junit.Test)

Example 15 with Config

use of org.syncany.config.Config in project syncany by syncany.

the class FileVersionComparatorTest method testCompareFileVersionToFile.

@Test
public void testCompareFileVersionToFile() throws Exception {
    // Setup
    Config config = TestConfigUtil.createTestLocalConfig();
    FileVersionComparator versionComparator = new FileVersionComparator(config.getLocalDir(), config.getChunker().getChecksumAlgorithm());
    // Create File
    File somefile = new File(config.getLocalDir() + "/file1");
    Path somefilePath = Paths.get(somefile.getAbsolutePath());
    TestFileUtil.createRandomFile(somefile, 130 * 1024);
    somefile.setLastModified(1182196000);
    if (EnvironmentUtil.isWindows()) {
        Files.setAttribute(somefilePath, "dos:readonly", true);
        Files.setAttribute(somefilePath, "dos:hidden", false);
        Files.setAttribute(somefilePath, "dos:archive", true);
        Files.setAttribute(somefilePath, "dos:system", false);
    } else if (EnvironmentUtil.isUnixLikeOperatingSystem()) {
        Files.setPosixFilePermissions(somefilePath, PosixFilePermissions.fromString("r--rwxrw-"));
    }
    // Create FileVersion
    FileVersion fileVersion = new FileVersion();
    fileVersion.setVersion(100L);
    // << definitely differs
    fileVersion.setChecksum(new FileChecksum(new byte[] { 0x11, 0x22, 0x33 }));
    fileVersion.setLastModified(new Date(1182196000));
    fileVersion.setPath("file1");
    fileVersion.setSize(130 * 1024L);
    fileVersion.setLinkTarget(null);
    fileVersion.setStatus(FileStatus.NEW);
    fileVersion.setType(FileType.FILE);
    if (EnvironmentUtil.isWindows()) {
        fileVersion.setDosAttributes("r-a-");
    } else if (EnvironmentUtil.isUnixLikeOperatingSystem()) {
        fileVersion.setPosixPermissions("r--rwxrw-");
    }
    // Run
    FileVersionComparison fileComparison = versionComparator.compare(fileVersion, somefile, null, true);
    // Test
    assertFalse(fileComparison.areEqual());
    assertTrue(CollectionUtil.containsExactly(fileComparison.getFileChanges(), FileChange.CHANGED_CHECKSUM));
    // Tear down
    TestConfigUtil.deleteTestLocalConfigAndData(config);
}
Also used : Path(java.nio.file.Path) Config(org.syncany.config.Config) FileVersion(org.syncany.database.FileVersion) FileVersionComparison(org.syncany.database.FileVersionComparator.FileVersionComparison) FileVersionComparator(org.syncany.database.FileVersionComparator) File(java.io.File) FileChecksum(org.syncany.database.FileContent.FileChecksum) Date(java.util.Date) Test(org.junit.Test)

Aggregations

Config (org.syncany.config.Config)55 Test (org.junit.Test)52 Connection (java.sql.Connection)25 File (java.io.File)24 MultiChunkSqlDao (org.syncany.database.dao.MultiChunkSqlDao)18 ConfigTO (org.syncany.config.to.ConfigTO)15 RepoTO (org.syncany.config.to.RepoTO)14 ChunkSqlDao (org.syncany.database.dao.ChunkSqlDao)14 FileContentSqlDao (org.syncany.database.dao.FileContentSqlDao)14 FileVersionSqlDao (org.syncany.database.dao.FileVersionSqlDao)13 DatabaseVersionSqlDao (org.syncany.database.dao.DatabaseVersionSqlDao)12 FileHistorySqlDao (org.syncany.database.dao.FileHistorySqlDao)12 MultiChunkId (org.syncany.database.MultiChunkEntry.MultiChunkId)10 DatabaseVersion (org.syncany.database.DatabaseVersion)9 ConfigException (org.syncany.config.ConfigException)7 FileVersion (org.syncany.database.FileVersion)7 ArrayList (java.util.ArrayList)6 MultiChunkEntry (org.syncany.database.MultiChunkEntry)6 UpOperation (org.syncany.operations.up.UpOperation)6 Date (java.util.Date)5