Search in sources :

Example 26 with CommandLineClient

use of org.syncany.cli.CommandLineClient in project syncany by syncany.

the class WatchCommandTest method testWatchCommand.

@Test
public void testWatchCommand() throws Exception {
    final Map<String, String> connectionSettings = TestConfigUtil.createTestLocalConnectionSettings();
    final Map<String, String> clientA = TestCliUtil.createLocalTestEnvAndInit("A", connectionSettings);
    final Map<String, String> clientB = TestCliUtil.createLocalTestEnvAndConnect("B", connectionSettings);
    Thread clientThreadA = new Thread(new Runnable() {

        @Override
        public void run() {
            try {
                new CommandLineClient(new String[] { "--localdir", clientA.get("localdir"), "watch", "--interval", "1" }).start();
            } catch (Exception e) {
                System.out.println("Interrupted.");
            }
        }
    });
    // Client A: Start 'watch'
    clientThreadA.start();
    // Client A: Wait for client A to sync .syignore
    for (int i = 0; i < 50; i++) {
        if ((new File(clientB.get("localdir") + "/.syignore")).exists()) {
            break;
        }
        Thread.sleep(100);
    }
    // Sync down .syignore
    TestCliUtil.runAndCaptureOutput(new CommandLineClient(new String[] { "--localdir", clientB.get("localdir"), "down" }));
    assertFileEquals(new File(clientB.get("localdir") + "/.syignore"), new File(clientA.get("localdir") + "/.syignore"));
    // Client B: New file and up
    TestFileUtil.createRandomFile(new File(clientB.get("localdir") + "/file1"), 20 * 1024);
    new CommandLineClient(new String[] { "--localdir", clientB.get("localdir"), "up" }).start();
    // Client A: Wait for client A to sync it
    for (int i = 0; i < 50; i++) {
        if ((new File(clientA.get("localdir"), "file1")).exists()) {
            break;
        }
        Thread.sleep(500);
    }
    assertFileEquals(new File(clientB.get("localdir") + "/file1"), new File(clientA.get("localdir") + "/file1"));
    assertFileListEqualsExcludeLockedAndNoRead(new File(clientB.get("localdir")), new File(clientA.get("localdir")));
    // Client A: New file, wait for it to sync it
    TestFileUtil.createRandomFile(new File(clientA.get("localdir") + "/file2"), 20 * 1024);
    for (int i = 0; i < 30; i++) {
        if ((new File(clientB.get("repopath"), "databases/database-A-0000000002")).exists()) {
            break;
        }
        Thread.sleep(100);
    }
    assertTrue(new File(clientB.get("repopath") + "/databases/database-A-0000000002").exists());
    clientThreadA.interrupt();
    TestCliUtil.deleteTestLocalConfigAndData(clientA);
    TestCliUtil.deleteTestLocalConfigAndData(clientB);
}
Also used : CommandLineClient(org.syncany.cli.CommandLineClient) File(java.io.File) Test(org.junit.Test)

Aggregations

CommandLineClient (org.syncany.cli.CommandLineClient)26 Test (org.junit.Test)23 File (java.io.File)20 DatabaseRemoteFile (org.syncany.plugins.transfer.files.DatabaseRemoteFile)3 Properties (java.util.Properties)2 SimpleDateFormat (java.text.SimpleDateFormat)1 Date (java.util.Date)1 Matcher (java.util.regex.Matcher)1 Pattern (java.util.regex.Pattern)1