@ -518,15 +518,18 @@ public class UploadPackTest {
* Parse multiplexed packfile output from upload - pack using protocol V2
* into the client repository .
* /
private void parsePack ( ByteArrayInputStream recvStream ) throws Exception {
parsePack ( recvStream , NullProgressMonitor . INSTANCE ) ;
private ReceivedPackStatistics parsePack ( ByteArrayInputStream recvStream ) throws Exception {
return parsePack ( recvStream , NullProgressMonitor . INSTANCE ) ;
}
private void parsePack ( ByteArrayInputStream recvStream , ProgressMonitor pm )
private ReceivedPackStatistics parsePack ( ByteArrayInputStream recvStream , ProgressMonitor pm )
throws Exception {
SideBandInputStream sb = new SideBandInputStream (
recvStream , pm , new StringWriter ( ) , NullOutputStream . INSTANCE ) ;
client . newObjectInserter ( ) . newPackParser ( sb ) . parse ( NullProgressMonitor . INSTANCE ) ;
recvStream , pm ,
new StringWriter ( ) , NullOutputStream . INSTANCE ) ;
PackParser pp = client . newObjectInserter ( ) . newPackParser ( sb ) ;
pp . parse ( NullProgressMonitor . INSTANCE ) ;
return pp . getReceivedPackStatistics ( ) ;
}
@Test
@ -838,6 +841,42 @@ public class UploadPackTest {
assertTrue ( client . hasObject ( tag . toObjectId ( ) ) ) ;
}
@Test
public void testV2FetchOfsDelta ( ) throws Exception {
String commonInBlob = "abcdefghijklmnopqrstuvwxyz" ;
RevBlob parentBlob = remote . blob ( commonInBlob + "a" ) ;
RevCommit parent = remote . commit ( remote . tree ( remote . file ( "foo" , parentBlob ) ) ) ;
RevBlob childBlob = remote . blob ( commonInBlob + "b" ) ;
RevCommit child = remote . commit ( remote . tree ( remote . file ( "foo" , childBlob ) ) , parent ) ;
remote . update ( "branch1" , child ) ;
// Without ofs-delta.
ByteArrayInputStream recvStream = uploadPackV2 (
"command=fetch\n" ,
PacketLineIn . DELIM ,
"want " + child . toObjectId ( ) . getName ( ) + "\n" ,
"done\n" ,
PacketLineIn . END ) ;
PacketLineIn pckIn = new PacketLineIn ( recvStream ) ;
assertThat ( pckIn . readString ( ) , is ( "packfile" ) ) ;
ReceivedPackStatistics stats = parsePack ( recvStream ) ;
assertTrue ( stats . getNumOfsDelta ( ) = = 0 ) ;
// With ofs-delta.
recvStream = uploadPackV2 (
"command=fetch\n" ,
PacketLineIn . DELIM ,
"want " + child . toObjectId ( ) . getName ( ) + "\n" ,
"ofs-delta\n" ,
"done\n" ,
PacketLineIn . END ) ;
pckIn = new PacketLineIn ( recvStream ) ;
assertThat ( pckIn . readString ( ) , is ( "packfile" ) ) ;
stats = parsePack ( recvStream ) ;
assertTrue ( stats . getNumOfsDelta ( ) ! = 0 ) ;
}
private static class RejectAllRefFilter implements RefFilter {
@Override
public Map < String , Ref > filter ( Map < String , Ref > refs ) {