sapling/eden/scm/tests/test-fb-hgext-remotefilelog-ruststores-lfs.t
Durham Goode 713fbeec24 datastore: support indexedlog as the hgcache write store
Summary:
Adds a remotefilelog.write-hgcache-to-indexedlog config which directs
all hgcache writes to the indexedlog.

This change also removes remotefilelog.indexedlogdatastore as it's on by default
now.

Reviewed By: xavierd

Differential Revision: D21772132

fbshipit-source-id: a71e188df2958fb4f8c4776da23ba87deccb3b79
2020-06-01 11:18:44 -07:00

134 lines
5.9 KiB
Raku

#chg-compatible
$ . "$TESTDIR/library.sh"
$ newserver master
$ setconfig extensions.lfs= lfs.url=file:$TESTTMP/lfs-server
$ cd $TESTTMP
$ clone master shallow --noupdate
$ cd shallow
$ setconfig remotefilelog.useruststore=True worker.rustworkers=True remotefilelog.localdatarepack=True lfs.moveafterupload=True
# First, let's generate some LFS blobs on the server
$ setconfig extensions.lfs= lfs.threshold=10B lfs.url=file:$TESTTMP/lfs-server/
$ echo "THIS IS AN LFS BLOB" > x
$ hg commit -qAm x
# Make sure that when remotefilelog.lfs is enabled, we can still read the blob properly
$ setconfig remotefilelog.lfs=True
$ hg up null
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg up -r tip
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat x
THIS IS AN LFS BLOB
$ echo "THIS IS ANOTHER LFS BLOB" > y
$ hg commit -qAm y
# Only the first LFS blobs is created via the LFS extension, ie: one datapack.
$ findfilessorted .hg/store/packs
.hg/store/packs/2fcfe5e792f7f55c4f39486d348654be30a5934a.histidx
.hg/store/packs/2fcfe5e792f7f55c4f39486d348654be30a5934a.histpack
.hg/store/packs/537800aabca8d55a85249dc165e50c4fd2a447a7.dataidx
.hg/store/packs/537800aabca8d55a85249dc165e50c4fd2a447a7.datapack
.hg/store/packs/dcb97073fda83c4a025153d7b929406f4d86e188.histidx
.hg/store/packs/dcb97073fda83c4a025153d7b929406f4d86e188.histpack
.hg/store/packs/manifests/1ad2258b3968784028da4c7af67e58472ed95148.dataidx
.hg/store/packs/manifests/1ad2258b3968784028da4c7af67e58472ed95148.datapack
.hg/store/packs/manifests/9bb7cc2e0e433f3564cbef21705ff896d9be2473.histidx
.hg/store/packs/manifests/9bb7cc2e0e433f3564cbef21705ff896d9be2473.histpack
.hg/store/packs/manifests/b00bb3b75ccfe82ff2ac879b3b323c8005835d1a.dataidx
.hg/store/packs/manifests/b00bb3b75ccfe82ff2ac879b3b323c8005835d1a.datapack
.hg/store/packs/manifests/da1b23b92928a4cf48dc85136fde02a3b90cc657.histidx
.hg/store/packs/manifests/da1b23b92928a4cf48dc85136fde02a3b90cc657.histpack
$ findfilessorted .hg/store/lfs/objects
.hg/store/lfs/objects/e4/1d3fc42af9a3407f07926c75946c0aa433ccbd99c175b98474fa19b2ee5963
.hg/store/lfs/objects/f3/8ef89300956a8cf001746d6e4b015708c3d0d883d1a69bf00f4958090cbe21
$ hg push -q --to master --create
$ findfilessorted $TESTTMP/lfs-server
$TESTTMP/lfs-server/e4/1d3fc42af9a3407f07926c75946c0aa433ccbd99c175b98474fa19b2ee5963
$TESTTMP/lfs-server/f3/8ef89300956a8cf001746d6e4b015708c3d0d883d1a69bf00f4958090cbe21
# Of the 2 blob, one is uploaded via the legacy LFS extension, and thus not
# moved, while the other is properly moved to the shared store.
$ findfilessorted .hg/store/lfs/objects
.hg/store/lfs/objects/e4/1d3fc42af9a3407f07926c75946c0aa433ccbd99c175b98474fa19b2ee5963
# Now let's repack to move the LFS pointer to the remotefilelog LFS pointer store.
$ hg repack
# No datapack should be present.
$ findfilessorted .hg/store/packs
.hg/store/packs/cdd6b0d104ad718cec29643359c67c56c91e483e.histidx
.hg/store/packs/cdd6b0d104ad718cec29643359c67c56c91e483e.histpack
.hg/store/packs/manifests/2eece36afda8d776ef688304461f9bf904379e3e.dataidx
.hg/store/packs/manifests/2eece36afda8d776ef688304461f9bf904379e3e.datapack
.hg/store/packs/manifests/6f96b59e7b3c62bf2d3aba403f72343b53c05d95.histidx
.hg/store/packs/manifests/6f96b59e7b3c62bf2d3aba403f72343b53c05d95.histpack
# And verify we can read the blobs properly
$ hg up null
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg up -r tip
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat x
THIS IS AN LFS BLOB
$ cat y
THIS IS ANOTHER LFS BLOB
$ cd ..
$ rm -rf shallow
$ clone master shallow --noupdate
$ cd shallow
$ setconfig remotefilelog.useruststore=True worker.rustworkers=True remotefilelog.localdatarepack=True lfs.moveafterupload=True
# Let's validate that both the LFS extension, and the remotefilelog LFS can co-exist when pulling blobs
$ setconfig extensions.lfs= lfs.threshold=10B lfs.url=file:$TESTTMP/lfs-server/ remotefilelog.lfs=True
$ hg update -r tip
fetching tree '' 11643b8969ec3aa286b2209783159cee526e902a, found via 316bb9353f6a
1 trees fetched over 0.00s
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat x
THIS IS AN LFS BLOB
$ cat y
THIS IS ANOTHER LFS BLOB
$ findfilessorted $CACHEDIR
$TESTTMP/hgcache/master/indexedlogdatastore/0/index2-node
$TESTTMP/hgcache/master/indexedlogdatastore/0/log
$TESTTMP/hgcache/master/indexedlogdatastore/0/meta
$TESTTMP/hgcache/master/indexedlogdatastore/latest
$TESTTMP/hgcache/master/lfs/blobs/0/index2-sha256
$TESTTMP/hgcache/master/lfs/blobs/0/log
$TESTTMP/hgcache/master/lfs/blobs/0/meta
$TESTTMP/hgcache/master/lfs/blobs/latest
$TESTTMP/hgcache/master/lfs/pointers/0/index2-node
$TESTTMP/hgcache/master/lfs/pointers/0/index2-sha256
$TESTTMP/hgcache/master/lfs/pointers/0/log
$TESTTMP/hgcache/master/lfs/pointers/0/meta
$TESTTMP/hgcache/master/lfs/pointers/latest
$TESTTMP/hgcache/master/packs/cdd6b0d104ad718cec29643359c67c56c91e483e.histidx
$TESTTMP/hgcache/master/packs/cdd6b0d104ad718cec29643359c67c56c91e483e.histpack
$TESTTMP/hgcache/master/packs/manifests/1ad2258b3968784028da4c7af67e58472ed95148.dataidx
$TESTTMP/hgcache/master/packs/manifests/1ad2258b3968784028da4c7af67e58472ed95148.datapack
$TESTTMP/hgcache/master/packs/manifests/9bb7cc2e0e433f3564cbef21705ff896d9be2473.histidx
$TESTTMP/hgcache/master/packs/manifests/9bb7cc2e0e433f3564cbef21705ff896d9be2473.histpack
$TESTTMP/hgcache/master/packs/repacklock
# Disable the remotefilelog LFS implementation to verify we can still read the LFS blobs properly.
$ setconfig remotefilelog.lfs=False
$ hg up null
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg up -r tip
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ cat x
THIS IS AN LFS BLOB
$ cat y
THIS IS ANOTHER LFS BLOB