|
|
|
@ -200,8 +200,8 @@ public class UploadPackTest {
|
|
|
|
|
@Test |
|
|
|
|
public void testFetchWithBlobNoneFilter() throws Exception { |
|
|
|
|
InMemoryRepository server2 = newRepo("server2"); |
|
|
|
|
TestRepository<InMemoryRepository> remote2 = |
|
|
|
|
new TestRepository<>(server2); |
|
|
|
|
try (TestRepository<InMemoryRepository> remote2 = new TestRepository<>( |
|
|
|
|
server2)) { |
|
|
|
|
RevBlob blob1 = remote2.blob("foobar"); |
|
|
|
|
RevBlob blob2 = remote2.blob("fooba"); |
|
|
|
|
RevTree tree = remote2.tree(remote2.file("1", blob1), |
|
|
|
@ -209,10 +209,10 @@ public class UploadPackTest {
|
|
|
|
|
RevCommit commit = remote2.commit(tree); |
|
|
|
|
remote2.update("master", commit); |
|
|
|
|
|
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", true); |
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", |
|
|
|
|
true); |
|
|
|
|
|
|
|
|
|
testProtocol = new TestProtocol<>( |
|
|
|
|
new UploadPackFactory<Object>() { |
|
|
|
|
testProtocol = new TestProtocol<>(new UploadPackFactory<Object>() { |
|
|
|
|
@Override |
|
|
|
|
public UploadPack create(Object req, Repository db) |
|
|
|
|
throws ServiceNotEnabledException, |
|
|
|
@ -232,12 +232,13 @@ public class UploadPackTest {
|
|
|
|
|
assertFalse(client.getObjectDatabase().has(blob2.toObjectId())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testFetchExplicitBlobWithFilter() throws Exception { |
|
|
|
|
InMemoryRepository server2 = newRepo("server2"); |
|
|
|
|
TestRepository<InMemoryRepository> remote2 = |
|
|
|
|
new TestRepository<>(server2); |
|
|
|
|
try (TestRepository<InMemoryRepository> remote2 = new TestRepository<>( |
|
|
|
|
server2)) { |
|
|
|
|
RevBlob blob1 = remote2.blob("foobar"); |
|
|
|
|
RevBlob blob2 = remote2.blob("fooba"); |
|
|
|
|
RevTree tree = remote2.tree(remote2.file("1", blob1), |
|
|
|
@ -246,10 +247,10 @@ public class UploadPackTest {
|
|
|
|
|
remote2.update("master", commit); |
|
|
|
|
remote2.update("a_blob", blob1); |
|
|
|
|
|
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", true); |
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", |
|
|
|
|
true); |
|
|
|
|
|
|
|
|
|
testProtocol = new TestProtocol<>( |
|
|
|
|
new UploadPackFactory<Object>() { |
|
|
|
|
testProtocol = new TestProtocol<>(new UploadPackFactory<Object>() { |
|
|
|
|
@Override |
|
|
|
|
public UploadPack create(Object req, Repository db) |
|
|
|
|
throws ServiceNotEnabledException, |
|
|
|
@ -263,19 +264,19 @@ public class UploadPackTest {
|
|
|
|
|
try (Transport tn = testProtocol.open(uri, client, "server2")) { |
|
|
|
|
tn.setFilterBlobLimit(0); |
|
|
|
|
tn.fetch(NullProgressMonitor.INSTANCE, Arrays.asList( |
|
|
|
|
new RefSpec(commit.name()), |
|
|
|
|
new RefSpec(blob1.name()))); |
|
|
|
|
new RefSpec(commit.name()), new RefSpec(blob1.name()))); |
|
|
|
|
assertTrue(client.getObjectDatabase().has(tree.toObjectId())); |
|
|
|
|
assertTrue(client.getObjectDatabase().has(blob1.toObjectId())); |
|
|
|
|
assertFalse(client.getObjectDatabase().has(blob2.toObjectId())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testFetchWithBlobLimitFilter() throws Exception { |
|
|
|
|
InMemoryRepository server2 = newRepo("server2"); |
|
|
|
|
TestRepository<InMemoryRepository> remote2 = |
|
|
|
|
new TestRepository<>(server2); |
|
|
|
|
try (TestRepository<InMemoryRepository> remote2 = new TestRepository<>( |
|
|
|
|
server2)) { |
|
|
|
|
RevBlob longBlob = remote2.blob("foobar"); |
|
|
|
|
RevBlob shortBlob = remote2.blob("fooba"); |
|
|
|
|
RevTree tree = remote2.tree(remote2.file("1", longBlob), |
|
|
|
@ -283,10 +284,10 @@ public class UploadPackTest {
|
|
|
|
|
RevCommit commit = remote2.commit(tree); |
|
|
|
|
remote2.update("master", commit); |
|
|
|
|
|
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", true); |
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", |
|
|
|
|
true); |
|
|
|
|
|
|
|
|
|
testProtocol = new TestProtocol<>( |
|
|
|
|
new UploadPackFactory<Object>() { |
|
|
|
|
testProtocol = new TestProtocol<>(new UploadPackFactory<Object>() { |
|
|
|
|
@Override |
|
|
|
|
public UploadPack create(Object req, Repository db) |
|
|
|
|
throws ServiceNotEnabledException, |
|
|
|
@ -301,16 +302,19 @@ public class UploadPackTest {
|
|
|
|
|
tn.setFilterBlobLimit(5); |
|
|
|
|
tn.fetch(NullProgressMonitor.INSTANCE, |
|
|
|
|
Collections.singletonList(new RefSpec(commit.name()))); |
|
|
|
|
assertFalse(client.getObjectDatabase().has(longBlob.toObjectId())); |
|
|
|
|
assertTrue(client.getObjectDatabase().has(shortBlob.toObjectId())); |
|
|
|
|
assertFalse( |
|
|
|
|
client.getObjectDatabase().has(longBlob.toObjectId())); |
|
|
|
|
assertTrue( |
|
|
|
|
client.getObjectDatabase().has(shortBlob.toObjectId())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testFetchExplicitBlobWithFilterAndBitmaps() throws Exception { |
|
|
|
|
InMemoryRepository server2 = newRepo("server2"); |
|
|
|
|
TestRepository<InMemoryRepository> remote2 = |
|
|
|
|
new TestRepository<>(server2); |
|
|
|
|
try (TestRepository<InMemoryRepository> remote2 = new TestRepository<>( |
|
|
|
|
server2)) { |
|
|
|
|
RevBlob blob1 = remote2.blob("foobar"); |
|
|
|
|
RevBlob blob2 = remote2.blob("fooba"); |
|
|
|
|
RevTree tree = remote2.tree(remote2.file("1", blob1), |
|
|
|
@ -319,14 +323,14 @@ public class UploadPackTest {
|
|
|
|
|
remote2.update("master", commit); |
|
|
|
|
remote2.update("a_blob", blob1); |
|
|
|
|
|
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", true); |
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", |
|
|
|
|
true); |
|
|
|
|
|
|
|
|
|
// generate bitmaps
|
|
|
|
|
new DfsGarbageCollector(server2).pack(null); |
|
|
|
|
server2.scanForRepoChanges(); |
|
|
|
|
|
|
|
|
|
testProtocol = new TestProtocol<>( |
|
|
|
|
new UploadPackFactory<Object>() { |
|
|
|
|
testProtocol = new TestProtocol<>(new UploadPackFactory<Object>() { |
|
|
|
|
@Override |
|
|
|
|
public UploadPack create(Object req, Repository db) |
|
|
|
|
throws ServiceNotEnabledException, |
|
|
|
@ -340,18 +344,18 @@ public class UploadPackTest {
|
|
|
|
|
try (Transport tn = testProtocol.open(uri, client, "server2")) { |
|
|
|
|
tn.setFilterBlobLimit(0); |
|
|
|
|
tn.fetch(NullProgressMonitor.INSTANCE, Arrays.asList( |
|
|
|
|
new RefSpec(commit.name()), |
|
|
|
|
new RefSpec(blob1.name()))); |
|
|
|
|
new RefSpec(commit.name()), new RefSpec(blob1.name()))); |
|
|
|
|
assertTrue(client.getObjectDatabase().has(blob1.toObjectId())); |
|
|
|
|
assertFalse(client.getObjectDatabase().has(blob2.toObjectId())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testFetchWithBlobLimitFilterAndBitmaps() throws Exception { |
|
|
|
|
InMemoryRepository server2 = newRepo("server2"); |
|
|
|
|
TestRepository<InMemoryRepository> remote2 = |
|
|
|
|
new TestRepository<>(server2); |
|
|
|
|
try (TestRepository<InMemoryRepository> remote2 = new TestRepository<>( |
|
|
|
|
server2)) { |
|
|
|
|
RevBlob longBlob = remote2.blob("foobar"); |
|
|
|
|
RevBlob shortBlob = remote2.blob("fooba"); |
|
|
|
|
RevTree tree = remote2.tree(remote2.file("1", longBlob), |
|
|
|
@ -359,14 +363,14 @@ public class UploadPackTest {
|
|
|
|
|
RevCommit commit = remote2.commit(tree); |
|
|
|
|
remote2.update("master", commit); |
|
|
|
|
|
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", true); |
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", |
|
|
|
|
true); |
|
|
|
|
|
|
|
|
|
// generate bitmaps
|
|
|
|
|
new DfsGarbageCollector(server2).pack(null); |
|
|
|
|
server2.scanForRepoChanges(); |
|
|
|
|
|
|
|
|
|
testProtocol = new TestProtocol<>( |
|
|
|
|
new UploadPackFactory<Object>() { |
|
|
|
|
testProtocol = new TestProtocol<>(new UploadPackFactory<Object>() { |
|
|
|
|
@Override |
|
|
|
|
public UploadPack create(Object req, Repository db) |
|
|
|
|
throws ServiceNotEnabledException, |
|
|
|
@ -381,25 +385,28 @@ public class UploadPackTest {
|
|
|
|
|
tn.setFilterBlobLimit(5); |
|
|
|
|
tn.fetch(NullProgressMonitor.INSTANCE, |
|
|
|
|
Collections.singletonList(new RefSpec(commit.name()))); |
|
|
|
|
assertFalse(client.getObjectDatabase().has(longBlob.toObjectId())); |
|
|
|
|
assertTrue(client.getObjectDatabase().has(shortBlob.toObjectId())); |
|
|
|
|
assertFalse( |
|
|
|
|
client.getObjectDatabase().has(longBlob.toObjectId())); |
|
|
|
|
assertTrue( |
|
|
|
|
client.getObjectDatabase().has(shortBlob.toObjectId())); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
public void testFetchWithNonSupportingServer() throws Exception { |
|
|
|
|
InMemoryRepository server2 = newRepo("server2"); |
|
|
|
|
TestRepository<InMemoryRepository> remote2 = |
|
|
|
|
new TestRepository<>(server2); |
|
|
|
|
try (TestRepository<InMemoryRepository> remote2 = new TestRepository<>( |
|
|
|
|
server2)) { |
|
|
|
|
RevBlob blob = remote2.blob("foo"); |
|
|
|
|
RevTree tree = remote2.tree(remote2.file("1", blob)); |
|
|
|
|
RevCommit commit = remote2.commit(tree); |
|
|
|
|
remote2.update("master", commit); |
|
|
|
|
|
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", false); |
|
|
|
|
server2.getConfig().setBoolean("uploadpack", null, "allowfilter", |
|
|
|
|
false); |
|
|
|
|
|
|
|
|
|
testProtocol = new TestProtocol<>( |
|
|
|
|
new UploadPackFactory<Object>() { |
|
|
|
|
testProtocol = new TestProtocol<>(new UploadPackFactory<Object>() { |
|
|
|
|
@Override |
|
|
|
|
public UploadPack create(Object req, Repository db) |
|
|
|
|
throws ServiceNotEnabledException, |
|
|
|
@ -414,12 +421,14 @@ public class UploadPackTest {
|
|
|
|
|
tn.setFilterBlobLimit(0); |
|
|
|
|
|
|
|
|
|
thrown.expect(TransportException.class); |
|
|
|
|
thrown.expectMessage("filter requires server to advertise that capability"); |
|
|
|
|
thrown.expectMessage( |
|
|
|
|
"filter requires server to advertise that capability"); |
|
|
|
|
|
|
|
|
|
tn.fetch(NullProgressMonitor.INSTANCE, |
|
|
|
|
Collections.singletonList(new RefSpec(commit.name()))); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
* Invokes UploadPack with protocol v2 and sends it the given lines, |
|
|
|
|