Пример #1
0
  public void testGetStoreEntry() throws Exception {
    cleanUpDataFolder();
    LocalHistoryTestStore store = createStore();
    LogHandler lh = new LogHandler("copied file", LogHandler.Compare.STARTS_WITH);

    File folder = dataDir;
    folder.mkdirs();
    File file1 = new File(folder, "file1");
    File file2 = new File(folder, "file2");

    createFile(store, file1, System.currentTimeMillis(), "data1");
    createFile(store, file2, System.currentTimeMillis(), "data2");

    // change the file
    lh.reset();
    changeFile(store, file1, System.currentTimeMillis(), "data1.1");
    lh.waitUntilDone();

    // rewrite the file
    write(file1, "data1.2".getBytes());
    assertDataInFile(file1, "data1.2".getBytes());

    // get the files last state
    StoreEntry entry = store.getStoreEntry(file1, System.currentTimeMillis());
    assertNotNull(entry);
    assertDataInStream(entry.getStoreFileInputStream(), "data1.1".getBytes());
  }
Пример #2
0
  public void testWrite2StoreVsCleanUp() throws Exception {
    LocalHistoryTestStore store = createStore();
    long ts = System.currentTimeMillis();

    File file = new File(dataDir, "crapfile");

    File storefile = store.getStoreFile(file, ts, true);
    assertTrue(storefile.getParentFile().exists());
    assertFalse(storefile.exists());

    store.cleanUp(ts); // shouldn't remove the storefiles parent even if it's still empty
    assertTrue(storefile.getParentFile().exists());

    OutputStream os1 = StoreEntry.createStoreFileOutputStream(storefile);
  }
Пример #3
0
  public void testGetFolderState() throws Exception {
    LocalHistoryTestStore store = createStore();

    // check for deleted root folder
    File folder = new File(dataDir, "datafolder");
    setupFirstFolderToRevert(store, folder);

    File[] files = folder.listFiles();

    assertEquals(files.length, 7); //   fileNotInStorage
    //   fileUnchanged
    //   fileChangedAfterRevert
    // X fileDeletedAfterRevert
    //   fileDeletedBeforeRevert
    //   fileUndeletedBeforeRevert
    //   fileCreatedToLate
    //   folderCreatedAfterRevert

    store.fileDelete(folder, System.currentTimeMillis());
    Thread.sleep(1000); // give me some time
    long revertToTS = System.currentTimeMillis();

    StoreEntry[] entries = store.getFolderState(folder, files, revertToTS);
    assertEquals(entries.length, 0); // all are deleted

    store.cleanUp(1);
    cleanUpDataFolder();

    folder = new File(dataDir, "datafolder");
    revertToTS = setupFirstFolderToRevert(store, folder);
    files = folder.listFiles();
    assertEquals(files.length, 7); //   fileNotInStorage
    //   fileUnchanged
    //   fileChangedAfterRevert
    // X fileDeletedAfterRevert
    //   fileDeletedBeforeRevert
    //   fileUndeletedBeforeRevert
    //   fileCreatedToLate

    // X  folderDeletedAfterRevert
    //    folderCreatedAfterRevert

    entries = store.getFolderState(folder, files, revertToTS);

    assertEquals(entries.length, 8);
    //   * returned, X as to be deleted
    //   fileNotInStorage             -
    // *   fileUnchanged                - *
    // *   fileChangedAfterRevert       - * previous revision
    // *   fileDeletedAfterRevert       - *
    // *   fileUndeletedBeforeRevert    - *
    // X fileCreatedAfterRevert       - * X
    // * X fileDeletedBeforeRevert      - * X

    // *   folderDeletedAfterRevert     - *
    //   folderCreatedAfterRevert     - * X

    Map<String, StoreEntry> entriesMap = new HashMap<String, StoreEntry>();
    for (StoreEntry se : entries) {
      entriesMap.put(se.getFile().getName(), se);
    }
    assertNull(entriesMap.get("fileNotInStorage"));

    assertNotNull(entriesMap.get("fileUnchanged"));
    assertNotNull(entriesMap.get("fileChangedAfterRevert"));
    assertNotNull(entriesMap.get("fileDeletedAfterRevert"));
    assertNotNull(entriesMap.get("fileUndeletedBeforeRevert"));
    assertNotNull(entriesMap.get("fileCreatedAfterRevert"));
    assertNotNull(entriesMap.get("fileDeletedBeforeRevert"));
    assertNotNull(entriesMap.get("folderDeletedAfterRevert"));
    assertNotNull(entriesMap.get("folderCreatedAfterRevert"));

    assertNotNull(entriesMap.get("fileUnchanged").getStoreFile());
    assertNotNull(entriesMap.get("fileChangedAfterRevert").getStoreFile());
    assertNotNull(entriesMap.get("fileDeletedAfterRevert").getStoreFile());
    assertNotNull(entriesMap.get("fileUndeletedBeforeRevert").getStoreFile());
    assertNotNull(entriesMap.get("folderDeletedAfterRevert").getStoreFile());
    assertNull(entriesMap.get("fileCreatedAfterRevert").getStoreFile());
    assertNull(entriesMap.get("fileDeletedBeforeRevert").getStoreFile());
    assertNull(entriesMap.get("folderCreatedAfterRevert").getStoreFile());

    String strStore =
        read(entriesMap.get("fileChangedAfterRevert").getStoreFileInputStream(), 1024);
    //        String strFile = read(new
    // FileInputStream(entriesMap.get("fileChangedAfterRevert").getFile()), 1024);
    assertNotSame("BEFORE change", strStore);
  }