##// END OF EJS Templates
lfs: teach the blob server to handle --prefix
lfs: teach the blob server to handle --prefix

File last commit:

r37635:b03f2e0f default
r37635:b03f2e0f default
Show More
test-lfs-serve-access.t
151 lines | 7.4 KiB | text/troff | Tads3Lexer
/ tests / test-lfs-serve-access.t
#require serve no-reposimplestore
$ cat >> $HGRCPATH <<EOF
> [extensions]
> lfs=
> [lfs]
> url=http://localhost:$HGPORT/.git/info/lfs
> track=all()
> [web]
> push_ssl = False
> allow-push = *
> EOF
Serving LFS files can experimentally be turned off. The long term solution is
to support the 'verify' action in both client and server, so that the server can
tell the client to store files elsewhere.
$ hg init server
$ hg --config "lfs.usercache=$TESTTMP/servercache" \
> --config experimental.lfs.serve=False -R server serve -d \
> -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log
$ cat hg.pid >> $DAEMON_PIDS
Uploads fail...
$ hg init client
$ echo 'this-is-an-lfs-file' > client/lfs.bin
$ hg -R client ci -Am 'initial commit'
adding lfs.bin
$ hg -R client push http://localhost:$HGPORT
pushing to http://localhost:$HGPORT/
searching for changes
abort: LFS HTTP error: HTTP Error 400: no such method: .git (action=upload)!
[255]
... so do a local push to make the data available. Remove the blob from the
default cache, so it attempts to download.
$ hg --config "lfs.usercache=$TESTTMP/servercache" \
> --config "lfs.url=null://" \
> -R client push -q server
$ mv `hg config lfs.usercache` $TESTTMP/servercache
Downloads fail...
$ hg clone http://localhost:$HGPORT httpclone
requesting all changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
new changesets 525251863cad
updating to branch default
abort: LFS HTTP error: HTTP Error 400: no such method: .git (action=download)!
[255]
$ $PYTHON $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
$ cat $TESTTMP/access.log $TESTTMP/errors.log
$LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
$LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D525251863cad618e55d483555f3d00a2ca99597e x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
$LOCALIP - - [$LOGDATE$] "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=phases x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
$LOCALIP - - [$LOGDATE$] "GET /?cmd=listkeys HTTP/1.1" 200 - x-hgarg-1:namespace=bookmarks x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
$LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 400 - (glob)
$LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
$LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
$LOCALIP - - [$LOGDATE$] "GET /?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%252C03%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=525251863cad618e55d483555f3d00a2ca99597e&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
$LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 400 - (glob)
Blob URIs are correct when --prefix is used
$ rm -f $TESTTMP/access.log $TESTTMP/errors.log
$ hg --config "lfs.usercache=$TESTTMP/servercache" -R server serve -d \
> -p $HGPORT --pid-file=hg.pid --prefix=subdir/mount/point \
> -A $TESTTMP/access.log -E $TESTTMP/errors.log
$ cat hg.pid >> $DAEMON_PIDS
$ hg --config lfs.url=http://localhost:$HGPORT/subdir/mount/point/.git/info/lfs \
> clone --debug http://localhost:$HGPORT/subdir/mount/point cloned2
using http://localhost:$HGPORT/subdir/mount/point
sending capabilities command
query 1; heads
sending batch command
requesting all changes
sending getbundle command
bundle2-input-bundle: with-transaction
bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported
adding changesets
add changeset 525251863cad
adding manifests
adding file changes
adding lfs.bin revisions
added 1 changesets with 1 changes to 1 files
calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
bundle2-input-part: total payload size 648
bundle2-input-part: "listkeys" (params: 1 mandatory) supported
bundle2-input-part: "phase-heads" supported
bundle2-input-part: total payload size 24
bundle2-input-part: "cache:rev-branch-cache" supported
bundle2-input-part: total payload size 39
bundle2-input-bundle: 3 parts total
checking for updated bookmarks
updating the branch cache
new changesets 525251863cad
updating to branch default
resolving manifests
branchmerge: False, force: False, partial: False
ancestor: 000000000000, local: 000000000000+, remote: 525251863cad
Status: 200
Content-Length: 371
Content-Type: application/vnd.git-lfs+json
Date: $HTTP_DATE$
Server: testing stub value
{
"objects": [
{
"actions": {
"download": {
"expires_at": "$ISO_8601_DATE_TIME$"
"header": {
"Accept": "application/vnd.git-lfs"
}
"href": "http://localhost:$HGPORT/subdir/mount/point/.hg/lfs/objects/f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e"
}
}
"oid": "f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e"
"size": 20
}
]
"transfer": "basic"
}
lfs: downloading f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e (20 bytes)
Status: 200
Content-Length: 20
Content-Type: application/octet-stream
Date: $HTTP_DATE$
Server: testing stub value
lfs: adding f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e to the usercache
lfs: processed: f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e
lfs.bin: remote created -> g
getting lfs.bin
lfs: found f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e in the local lfs store
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ $PYTHON $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
$ cat $TESTTMP/access.log $TESTTMP/errors.log
$LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=capabilities HTTP/1.1" 200 - (glob)
$LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
$LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=getbundle HTTP/1.1" 200 - x-hgarg-1:bookmarks=1&bundlecaps=HG20%2Cbundle2%3DHG20%250Abookmarks%250Achangegroup%253D01%252C02%252C03%250Adigests%253Dmd5%252Csha1%252Csha512%250Aerror%253Dabort%252Cunsupportedcontent%252Cpushraced%252Cpushkey%250Ahgtagsfnodes%250Alistkeys%250Aphases%253Dheads%250Apushkey%250Aremote-changegroup%253Dhttp%252Chttps%250Arev-branch-cache%250Astream%253Dv2&cg=1&common=0000000000000000000000000000000000000000&heads=525251863cad618e55d483555f3d00a2ca99597e&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
$LOCALIP - - [$LOGDATE$] "POST /subdir/mount/point/.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
$LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point/.hg/lfs/objects/f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e HTTP/1.1" 200 - (glob)