Exemplo n.º 1
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);
  }