use of org.syncany.operations.up.UpOperation in project syncany by syncany.
the class StatusOperationTest method testNotSoRecentFileModificationWithoutSizeOrModifiedDateChange.
@Test
public void testNotSoRecentFileModificationWithoutSizeOrModifiedDateChange() throws Exception {
// Setup
Config config = TestConfigUtil.createTestLocalConfig();
File testFile = TestFileUtil.createRandomFileInDirectory(config.getLocalDir(), 40);
// Perform 'up', wait a second and then change test file
// IMPORTANT: Sleep to prevent detailed checksum-based update check in 'status' operation
new UpOperation(config).execute();
Thread.sleep(2000);
TestFileUtil.changeRandomPartOfBinaryFile(testFile);
// Run 'status', this should NOT run a checksum-based file comparison
ChangeSet changeSet = (new StatusOperation(config).execute()).getChangeSet();
assertEquals(changeSet.getChangedFiles().size(), 1);
// Cleanup
TestConfigUtil.deleteTestLocalConfigAndData(config);
}
use of org.syncany.operations.up.UpOperation in project syncany by syncany.
the class StatusOperationTest method testCreateFolderAndRunStatus.
@Test
public void testCreateFolderAndRunStatus() throws Exception {
// Setup
Config config = TestConfigUtil.createTestLocalConfig();
new File(config.getLocalDir() + "/somefolder").mkdir();
// Run 'status', this SHOULD list the folder
ChangeSet changeSet = (new StatusOperation(config).execute()).getChangeSet();
assertEquals(changeSet.getNewFiles().size(), 1);
assertEquals(changeSet.getChangedFiles().size(), 0);
assertEquals(changeSet.getDeletedFiles().size(), 0);
assertEquals(changeSet.getUnchangedFiles().size(), 0);
// Run 'up' to check in the folder
new UpOperation(config).execute();
// Run 'status', this SHOULD NOT list the folder in the changed/new files
changeSet = (new StatusOperation(config).execute()).getChangeSet();
assertEquals(changeSet.getNewFiles().size(), 0);
assertEquals(changeSet.getChangedFiles().size(), 0);
assertEquals(changeSet.getDeletedFiles().size(), 0);
assertEquals(changeSet.getUnchangedFiles().size(), 1);
// Cleanup
TestConfigUtil.deleteTestLocalConfigAndData(config);
}
use of org.syncany.operations.up.UpOperation in project syncany by syncany.
the class OperationPerformanceTest method testOperationPerformance.
@Test
public void testOperationPerformance() throws Exception {
// Setup
TransferSettings testConnection = TestConfigUtil.createTestLocalConnection();
Config configA = TestConfigUtil.createTestLocalConfig("A", testConnection);
Config configB = TestConfigUtil.createTestLocalConfig("B", testConnection);
// Add new files on A and upload it
TestFileUtil.createRandomFilesInDirectory(configA.getLocalDir(), 5000 * 1024, 3);
long timeSyncUpStart = System.currentTimeMillis();
new UpOperation(configA).execute();
long timeSyncUpEnd = System.currentTimeMillis();
long timeSyncUpTotal = timeSyncUpEnd - timeSyncUpStart;
if (timeSyncUpTotal > 3000) {
fail("Sync up took: " + timeSyncUpTotal + " ms");
}
logger.log(Level.INFO, "Sync up performance: " + timeSyncUpTotal + " ms");
// Sync down B
long timeSyncDownStart = System.currentTimeMillis();
new DownOperation(configB).execute();
long timeSyncDownEnd = System.currentTimeMillis();
long timeSyncDownTotal = timeSyncDownEnd - timeSyncDownStart;
if (timeSyncDownTotal > 3000) {
fail("Sync down took: " + timeSyncDownTotal + " ms");
}
logger.log(Level.INFO, "Sync down performance: " + timeSyncDownTotal + " ms");
// Cleanup
TestConfigUtil.deleteTestLocalConfigAndData(configA);
TestConfigUtil.deleteTestLocalConfigAndData(configB);
}
use of org.syncany.operations.up.UpOperation in project syncany by syncany.
the class UpCommand method execute.
@Override
public int execute(String[] operationArgs) throws Exception {
UpOperationOptions operationOptions = parseOptions(operationArgs);
UpOperationResult operationResult = new UpOperation(config, operationOptions).execute();
printResults(operationResult);
return 0;
}
use of org.syncany.operations.up.UpOperation in project syncany by syncany.
the class WatchOperation method runSync.
/**
* Runs one iteration of the main synchronization loop, containing a {@link DownOperation},
* an {@link UpOperation} and (if required), a {@link CleanupOperation}.
*/
private void runSync() throws Exception {
if (!syncRunning.get()) {
syncRunning.set(true);
syncRequested.set(false);
logger.log(Level.INFO, "RUNNING SYNC ...");
fireStartEvent();
try {
boolean notifyChanges = false;
// Run down
DownOperationResult downResult = new DownOperation(config, options.getDownOptions()).execute();
if (downResult.getResultCode() == DownResultCode.OK_WITH_REMOTE_CHANGES) {
// TODO [low] Do something?
}
// Run up
UpOperationResult upOperationResult = new UpOperation(config, options.getUpOptions()).execute();
if (upOperationResult.getResultCode() == UpResultCode.OK_CHANGES_UPLOADED && upOperationResult.getChangeSet().hasChanges()) {
upCount.incrementAndGet();
notifyChanges = true;
}
CleanupOperationResult cleanupOperationResult = new CleanupOperation(config, options.getCleanupOptions()).execute();
if (cleanupOperationResult.getResultCode() == CleanupResultCode.OK) {
notifyChanges = true;
}
// Fire change event if up and/or cleanup
if (notifyChanges) {
notifyChanges();
}
} finally {
logger.log(Level.INFO, "SYNC DONE.");
syncRunning.set(false);
fireEndEvent();
}
} else {
// Can't do a log message here, because this bit is called thousand
// of times when file system events occur.
syncRequested.set(true);
}
}
Aggregations