Search in sources :

Example 6 with CloneOp

use of org.locationtech.geogig.api.porcelain.CloneOp in project GeoGig by boundlessgeo.

the class SparseCloneTest method testSparseClone.

@Test
public void testSparseClone() throws Exception {
    Map<String, String> filter = new HashMap<String, String>();
    filter.put("default", "BBOX(pp,30, -125, 40, -110,'EPSG:4326')");
    filter.put("Cities", "BBOX(pp,33, -125, 40, -110,'EPSG:4326')");
    createFilterFile(filter);
    // Commit several features to the remote
    List<Feature> features = Arrays.asList(city1, city2, city3, road1, road2, road3);
    LinkedList<RevCommit> expected = new LinkedList<RevCommit>();
    Map<Feature, ObjectId> oids = new HashMap<Feature, ObjectId>();
    for (Feature f : features) {
        ObjectId oId = insertAndAdd(remoteGeogig.geogig, f);
        oids.put(f, oId);
        final RevCommit commit = remoteGeogig.geogig.command(CommitOp.class).setMessage(f.getIdentifier().toString()).call();
        expected.addFirst(commit);
        Optional<RevObject> childObject = remoteGeogig.geogig.command(RevObjectParse.class).setObjectId(oId).call();
        assertTrue(childObject.isPresent());
    }
    // Make sure the remote has all of the commits
    Iterator<RevCommit> logs = remoteGeogig.geogig.command(LogOp.class).call();
    List<RevCommit> logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expected, logged);
    // Make sure the local repository has no commits prior to clone
    logs = localGeogig.geogig.command(LogOp.class).call();
    assertNotNull(logs);
    assertFalse(logs.hasNext());
    // clone from the remote
    CloneOp clone = clone();
    clone.setDepth(0);
    clone.setRepositoryURL(remoteGeogig.envHome.getCanonicalPath()).setBranch("master").call();
    // The features that match the filter are "Cities.3", "Roads.1", "Roads.2", and "Roads.3",
    // the "Cities.1" commit should be present since it added the "Cities" tree, but "Cities.1"
    // should not be present in the tree.
    // Make sure the local repository got the correct commits
    logs = localGeogig.geogig.command(LogOp.class).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(5, logged.size());
    assertEquals("Roads.3", logged.get(0).getMessage());
    assertFalse(expected.get(0).getId().equals(logged.get(0).getId()));
    assertEquals("Roads.2", logged.get(1).getMessage());
    assertFalse(expected.get(1).getId().equals(logged.get(1).getId()));
    assertEquals("Roads.1", logged.get(2).getMessage());
    assertFalse(expected.get(2).getId().equals(logged.get(2).getId()));
    assertEquals("Cities.3", logged.get(3).getMessage());
    assertFalse(expected.get(3).getId().equals(logged.get(3).getId()));
    assertEquals("Cities.1", logged.get(4).getMessage());
    assertFalse(expected.get(5).getId().equals(logged.get(4).getId()));
    assertExists(localGeogig, oids.get(city3), oids.get(road1), oids.get(road2), oids.get(road3));
    assertNotExists(localGeogig, oids.get(city1), oids.get(city2));
}
Also used : CloneOp(org.locationtech.geogig.api.porcelain.CloneOp) HashMap(java.util.HashMap) ObjectId(org.locationtech.geogig.api.ObjectId) RevObject(org.locationtech.geogig.api.RevObject) LogOp(org.locationtech.geogig.api.porcelain.LogOp) ArrayList(java.util.ArrayList) Feature(org.opengis.feature.Feature) LinkedList(java.util.LinkedList) RevCommit(org.locationtech.geogig.api.RevCommit) Test(org.junit.Test)

Example 7 with CloneOp

use of org.locationtech.geogig.api.porcelain.CloneOp in project GeoGig by boundlessgeo.

the class RemoteRepositoryTestCase method clone.

protected CloneOp clone() {
    CloneOp clone = spy(localGeogig.geogig.command(CloneOp.class));
    FetchOp fetch = fetch();
    // when(clone.command(FetchOp.class)).thenReturn(fetch);
    doReturn(fetch).when(clone).command(eq(FetchOp.class));
    LsRemote lsRemote = lsremote();
    // when(clone.command(LsRemote.class)).thenReturn(lsRemote);
    doReturn(lsRemote).when(clone).command(eq(LsRemote.class));
    return clone;
}
Also used : CloneOp(org.locationtech.geogig.api.porcelain.CloneOp) FetchOp(org.locationtech.geogig.api.porcelain.FetchOp) LsRemote(org.locationtech.geogig.api.plumbing.LsRemote)

Example 8 with CloneOp

use of org.locationtech.geogig.api.porcelain.CloneOp in project GeoGig by boundlessgeo.

the class PushOpTest method setUpInternal.

@Override
protected void setUpInternal() throws Exception {
    // Commit several features to the remote
    expectedMaster = new LinkedList<RevCommit>();
    expectedBranch = new LinkedList<RevCommit>();
    insertAndAdd(remoteGeogig.geogig, points1);
    RevCommit commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedMaster.addFirst(commit);
    expectedBranch.addFirst(commit);
    // Create and checkout branch1
    remoteGeogig.geogig.command(BranchCreateOp.class).setAutoCheckout(true).setName("Branch1").call();
    // Commit some changes to branch1
    insertAndAdd(remoteGeogig.geogig, points2);
    commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedBranch.addFirst(commit);
    insertAndAdd(remoteGeogig.geogig, points3);
    commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedBranch.addFirst(commit);
    // Make sure Branch1 has all of the commits
    Iterator<RevCommit> logs = remoteGeogig.geogig.command(LogOp.class).call();
    List<RevCommit> logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expectedBranch, logged);
    // Checkout master and commit some changes
    remoteGeogig.geogig.command(CheckoutOp.class).setSource("master").call();
    insertAndAdd(remoteGeogig.geogig, lines1);
    commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedMaster.addFirst(commit);
    insertAndAdd(remoteGeogig.geogig, lines2);
    commit = remoteGeogig.geogig.command(CommitOp.class).call();
    expectedMaster.addFirst(commit);
    // Make sure master has all of the commits
    logs = remoteGeogig.geogig.command(LogOp.class).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expectedMaster, logged);
    // Make sure the local repository has no commits prior to clone
    logs = localGeogig.geogig.command(LogOp.class).call();
    assertNotNull(logs);
    assertFalse(logs.hasNext());
    // clone from the remote
    CloneOp clone = clone();
    clone.setRepositoryURL(remoteGeogig.envHome.getCanonicalPath()).setBranch("Branch1").call();
    // Make sure the local repository got all of the commits
    logs = localGeogig.geogig.command(LogOp.class).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expectedBranch, logged);
    // Make sure the local master matches the remote
    localGeogig.geogig.command(CheckoutOp.class).setSource("master").call();
    logs = localGeogig.geogig.command(LogOp.class).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expectedMaster, logged);
}
Also used : CloneOp(org.locationtech.geogig.api.porcelain.CloneOp) BranchCreateOp(org.locationtech.geogig.api.porcelain.BranchCreateOp) LogOp(org.locationtech.geogig.api.porcelain.LogOp) ArrayList(java.util.ArrayList) CommitOp(org.locationtech.geogig.api.porcelain.CommitOp) RevCommit(org.locationtech.geogig.api.RevCommit)

Example 9 with CloneOp

use of org.locationtech.geogig.api.porcelain.CloneOp in project GeoGig by boundlessgeo.

the class CloneOpTest method testClone.

@Test
public void testClone() throws Exception {
    // Commit several features to the remote
    List<Feature> features = Arrays.asList(points1, lines1, points2, lines2, points3, lines3);
    LinkedList<RevCommit> expected = new LinkedList<RevCommit>();
    for (Feature f : features) {
        ObjectId oId = insertAndAdd(remoteGeogig.geogig, f);
        final RevCommit commit = remoteGeogig.geogig.command(CommitOp.class).call();
        expected.addFirst(commit);
        Optional<RevObject> childObject = remoteGeogig.geogig.command(RevObjectParse.class).setObjectId(oId).call();
        assertTrue(childObject.isPresent());
    }
    // Make sure the remote has all of the commits
    Iterator<RevCommit> logs = remoteGeogig.geogig.command(LogOp.class).call();
    List<RevCommit> logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expected, logged);
    // Make sure the local repository has no commits prior to clone
    logs = localGeogig.geogig.command(LogOp.class).call();
    assertNotNull(logs);
    assertFalse(logs.hasNext());
    // clone from the remote
    CloneOp clone = clone();
    clone.setDepth(0);
    clone.setRepositoryURL(remoteGeogig.envHome.getCanonicalPath()).call();
    // Make sure the local repository got all of the commits
    logs = localGeogig.geogig.command(LogOp.class).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expected, logged);
}
Also used : CloneOp(org.locationtech.geogig.api.porcelain.CloneOp) ObjectId(org.locationtech.geogig.api.ObjectId) RevObject(org.locationtech.geogig.api.RevObject) LogOp(org.locationtech.geogig.api.porcelain.LogOp) ArrayList(java.util.ArrayList) CommitOp(org.locationtech.geogig.api.porcelain.CommitOp) Feature(org.opengis.feature.Feature) LinkedList(java.util.LinkedList) RevCommit(org.locationtech.geogig.api.RevCommit) Test(org.junit.Test)

Example 10 with CloneOp

use of org.locationtech.geogig.api.porcelain.CloneOp in project GeoGig by boundlessgeo.

the class CloneOpTest method testShallowClone.

@Test
public void testShallowClone() throws Exception {
    // Commit several features to the remote
    List<Feature> features = Arrays.asList(points1, lines1, points2, lines2, points3, lines3);
    LinkedList<RevCommit> expected = new LinkedList<RevCommit>();
    for (Feature f : features) {
        ObjectId oId = insertAndAdd(remoteGeogig.geogig, f);
        final RevCommit commit = remoteGeogig.geogig.command(CommitOp.class).call();
        expected.addFirst(commit);
        Optional<RevObject> childObject = remoteGeogig.geogig.command(RevObjectParse.class).setObjectId(oId).call();
        assertTrue(childObject.isPresent());
    }
    // Make sure the remote has all of the commits
    Iterator<RevCommit> logs = remoteGeogig.geogig.command(LogOp.class).call();
    List<RevCommit> logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(expected, logged);
    // Make sure the local repository has no commits prior to clone
    logs = localGeogig.geogig.command(LogOp.class).call();
    assertNotNull(logs);
    assertFalse(logs.hasNext());
    // clone from the remote
    CloneOp clone = clone();
    clone.setDepth(2);
    clone.setRepositoryURL(remoteGeogig.envHome.getCanonicalPath()).call();
    // Make sure the local repository got only 2 commits
    logs = localGeogig.geogig.command(LogOp.class).call();
    logged = new ArrayList<RevCommit>();
    for (; logs.hasNext(); ) {
        logged.add(logs.next());
    }
    assertEquals(2, logged.size());
    assertEquals(expected.get(0), logged.get(0));
    assertEquals(expected.get(1), logged.get(1));
}
Also used : CloneOp(org.locationtech.geogig.api.porcelain.CloneOp) ObjectId(org.locationtech.geogig.api.ObjectId) RevObject(org.locationtech.geogig.api.RevObject) LogOp(org.locationtech.geogig.api.porcelain.LogOp) ArrayList(java.util.ArrayList) CommitOp(org.locationtech.geogig.api.porcelain.CommitOp) Feature(org.opengis.feature.Feature) LinkedList(java.util.LinkedList) RevCommit(org.locationtech.geogig.api.RevCommit) Test(org.junit.Test)

Aggregations

CloneOp (org.locationtech.geogig.api.porcelain.CloneOp)27 Test (org.junit.Test)20 RevCommit (org.locationtech.geogig.api.RevCommit)18 LogOp (org.locationtech.geogig.api.porcelain.LogOp)18 ArrayList (java.util.ArrayList)13 CommitOp (org.locationtech.geogig.api.porcelain.CommitOp)12 LinkedList (java.util.LinkedList)11 ObjectId (org.locationtech.geogig.api.ObjectId)9 RevObject (org.locationtech.geogig.api.RevObject)9 Feature (org.opengis.feature.Feature)9 HashMap (java.util.HashMap)8 BranchCreateOp (org.locationtech.geogig.api.porcelain.BranchCreateOp)6 FetchOp (org.locationtech.geogig.api.porcelain.FetchOp)6 File (java.io.File)1 GeoGIG (org.locationtech.geogig.api.GeoGIG)1 RevTag (org.locationtech.geogig.api.RevTag)1 LsRemote (org.locationtech.geogig.api.plumbing.LsRemote)1 InitOp (org.locationtech.geogig.api.porcelain.InitOp)1 MergeReport (org.locationtech.geogig.api.porcelain.MergeOp.MergeReport)1 TagCreateOp (org.locationtech.geogig.api.porcelain.TagCreateOp)1