Ejemplo n.º 1
0
  /** https://github.com/couchbase/couchbase-lite-java-core/issues/106 */
  public void testResolveConflict() throws Exception {

    Map<String, Object> result;

    // Create a conflict on purpose
    Document doc = database.createDocument();
    SavedRevision rev1 = doc.createRevision().save();
    SavedRevision rev2a = createRevisionWithRandomProps(rev1, false);
    SavedRevision rev2b = createRevisionWithRandomProps(rev1, true);

    SavedRevision winningRev = null;
    SavedRevision losingRev = null;
    if (doc.getCurrentRevisionId().equals(rev2a.getId())) {
      winningRev = rev2a;
      losingRev = rev2b;
    } else {
      winningRev = rev2b;
      losingRev = rev2a;
    }

    assertEquals(2, doc.getConflictingRevisions().size());
    assertEquals(2, doc.getLeafRevisions().size());

    result =
        (Map<String, Object>)
            send(
                "GET",
                String.format("/%s/%s?conflicts=true", DEFAULT_TEST_DB, doc.getId()),
                Status.OK,
                null);
    List<String> conflicts = (List) result.get("_conflicts");
    assertEquals(1, conflicts.size());
    String conflictingRevId = conflicts.get(0);
    assertEquals(losingRev.getId(), conflictingRevId);

    long docNumericID = database.getDocNumericID(doc.getId());
    assertTrue(docNumericID != 0);
    assertNotNull(database.getDocument(doc.getId()));

    Log.d(TAG, "docNumericID for " + doc.getId() + " is: " + docNumericID);

    result =
        (Map<String, Object>)
            send(
                "DELETE",
                String.format("/%s/%s?rev=%s", DEFAULT_TEST_DB, doc.getId(), conflictingRevId),
                Status.OK,
                null);

    result =
        (Map<String, Object>)
            send(
                "GET",
                String.format("/%s/%s?conflicts=true", DEFAULT_TEST_DB, doc.getId()),
                Status.OK,
                null);

    conflicts = (List) result.get("_conflicts");
    assertEquals(0, conflicts.size());
  }
Ejemplo n.º 2
0
  public void testPruneRevsToMaxDepth() throws Exception {

    Map<String, Object> properties = new HashMap<String, Object>();
    properties.put("testName", "testDatabaseCompaction");
    properties.put("tag", 1337);

    Document doc = createDocumentWithProperties(database, properties);
    SavedRevision rev = doc.getCurrentRevision();

    database.setMaxRevTreeDepth(1);
    for (int i = 0; i < 10; i++) {
      Map<String, Object> properties2 = new HashMap<String, Object>(properties);
      properties2.put("tag", i);
      rev = rev.createRevision(properties2);
    }

    int numPruned = database.pruneRevsToMaxDepth(1);
    assertEquals(9, numPruned);

    Document fetchedDoc = database.getDocument(doc.getId());
    List<SavedRevision> revisions = fetchedDoc.getRevisionHistory();
    assertEquals(1, revisions.size());

    numPruned = database.pruneRevsToMaxDepth(1);
    assertEquals(0, numPruned);
  }