tests/test-lfs-serve-access.t
author Gregory Szorc <gregory.szorc@gmail.com>
Tue, 18 Sep 2018 17:51:43 -0700
changeset 39794 a6b3c4c1019f
parent 39723 5abc47d4ca6b
child 40035 393e44324037
permissions -rw-r--r--
revlog: move censor logic out of censor extension The censor extension is doing very low-level things with revlogs. It is fundamentally impossible for this logic to remain in the censor extension while support multiple storage backends: we need each storage backend to implement censor in its own storage-specific way. This commit effectively moves the revlog-specific censoring code to be a method of revlogs themselves. We've defined a new API on the file storage interface for censoring an individual node. Even though the current censoring code doesn't use it, the API requires a transaction instance because it logically makes sense for storage backends to require an active transaction (which implies a held write lock) in order to rewrite storage. After this commit, the censor extension has been reduced to boilerplate precondition checking before invoking the generic storage API. I tried to keep the code as similar as possible. But some minor changes were made: * We use self._io instead of instantiating a new revlogio instance. * We compare self.version against REVLOGV0 instead of != REVLOGV1 because presumably all future revlog versions will support censoring. * We use self.opener instead of going through repo.svfs (we don't have a handle on the repo instance from a revlog). * "revlog" dropped * Replace "flog" with "self". Differential Revision: https://phab.mercurial-scm.org/D4656
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38063
538e850ae737 tests: mark tests that fail when using chg as #require no-chg
Kyle Lippincott <spectral@google.com>
parents: 37766
diff changeset
     1
#require serve no-reposimplestore no-chg
37250
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     2
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     3
  $ cat >> $HGRCPATH <<EOF
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     4
  > [extensions]
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     5
  > lfs=
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     6
  > [lfs]
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     7
  > track=all()
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     8
  > [web]
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
     9
  > push_ssl = False
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    10
  > allow-push = *
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    11
  > EOF
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    12
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    13
Serving LFS files can experimentally be turned off.  The long term solution is
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    14
to support the 'verify' action in both client and server, so that the server can
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    15
tell the client to store files elsewhere.
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    16
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    17
  $ hg init server
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    18
  $ hg --config "lfs.usercache=$TESTTMP/servercache" \
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    19
  >    --config experimental.lfs.serve=False -R server serve -d \
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    20
  >    -p $HGPORT --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    21
  $ cat hg.pid >> $DAEMON_PIDS
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    22
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    23
Uploads fail...
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    24
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    25
  $ hg init client
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    26
  $ echo 'this-is-an-lfs-file' > client/lfs.bin
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    27
  $ hg -R client ci -Am 'initial commit'
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    28
  adding lfs.bin
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    29
  $ hg -R client push http://localhost:$HGPORT
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    30
  pushing to http://localhost:$HGPORT/
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    31
  searching for changes
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    32
  abort: LFS HTTP error: HTTP Error 400: no such method: .git (action=upload)!
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    33
  [255]
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    34
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    35
... so do a local push to make the data available.  Remove the blob from the
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    36
default cache, so it attempts to download.
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    37
  $ hg --config "lfs.usercache=$TESTTMP/servercache" \
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    38
  >    --config "lfs.url=null://" \
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    39
  >    -R client push -q server
37617
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    40
  $ mv `hg config lfs.usercache` $TESTTMP/servercache
37250
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    41
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    42
Downloads fail...
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    43
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    44
  $ hg clone http://localhost:$HGPORT httpclone
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    45
  requesting all changes
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    46
  adding changesets
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    47
  adding manifests
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    48
  adding file changes
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    49
  added 1 changesets with 1 changes to 1 files
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    50
  new changesets 525251863cad
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    51
  updating to branch default
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    52
  abort: LFS HTTP error: HTTP Error 400: no such method: .git (action=download)!
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    53
  [255]
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    54
39723
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39474
diff changeset
    55
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
37250
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    56
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    57
  $ cat $TESTTMP/access.log $TESTTMP/errors.log
37556
b77aa48ba690 httppeer: only advertise partial-pull if capabilities are known
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37498
diff changeset
    58
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
37498
aacfca6f9767 wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents: 37348
diff changeset
    59
  $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)
aacfca6f9767 wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents: 37348
diff changeset
    60
  $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)
aacfca6f9767 wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents: 37348
diff changeset
    61
  $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)
37250
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    62
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 400 - (glob)
37556
b77aa48ba690 httppeer: only advertise partial-pull if capabilities are known
Gregory Szorc <gregory.szorc@gmail.com>
parents: 37498
diff changeset
    63
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
37498
aacfca6f9767 wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents: 37348
diff changeset
    64
  $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)
aacfca6f9767 wireproto: support for pullbundles
Joerg Sonnenberger <joerg@bec.de>
parents: 37348
diff changeset
    65
  $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)
37250
dfb38c4850a9 lfs: add an experimental knob to disable blob serving
Matt Harbison <matt_harbison@yahoo.com>
parents:
diff changeset
    66
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 400 - (glob)
37617
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    67
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    68
Blob URIs are correct when --prefix is used
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    69
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    70
  $ rm -f $TESTTMP/access.log $TESTTMP/errors.log
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    71
  $ hg --config "lfs.usercache=$TESTTMP/servercache" -R server serve -d \
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    72
  >    -p $HGPORT --pid-file=hg.pid --prefix=subdir/mount/point \
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    73
  >    -A $TESTTMP/access.log -E $TESTTMP/errors.log
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    74
  $ cat hg.pid >> $DAEMON_PIDS
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    75
37691
d241e6632669 lfs: fix the inferred remote store path when using a --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37690
diff changeset
    76
  $ hg clone --debug http://localhost:$HGPORT/subdir/mount/point cloned2
37617
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    77
  using http://localhost:$HGPORT/subdir/mount/point
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    78
  sending capabilities command
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    79
  query 1; heads
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    80
  sending batch command
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    81
  requesting all changes
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    82
  sending getbundle command
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    83
  bundle2-input-bundle: with-transaction
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    84
  bundle2-input-part: "changegroup" (params: 1 mandatory 1 advisory) supported
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    85
  adding changesets
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    86
  add changeset 525251863cad
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    87
  adding manifests
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    88
  adding file changes
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    89
  adding lfs.bin revisions
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    90
  added 1 changesets with 1 changes to 1 files
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    91
  calling hook pretxnchangegroup.lfs: hgext.lfs.checkrequireslfs
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    92
  bundle2-input-part: total payload size 648
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    93
  bundle2-input-part: "listkeys" (params: 1 mandatory) supported
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    94
  bundle2-input-part: "phase-heads" supported
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    95
  bundle2-input-part: total payload size 24
37837
326b174c6a47 bundle2: mark the bundle2 part as advisory (issue5872)
Boris Feld <boris.feld@octobus.net>
parents: 37766
diff changeset
    96
  bundle2-input-part: "cache:rev-branch-cache" (advisory) supported
37617
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    97
  bundle2-input-part: total payload size 39
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    98
  bundle2-input-bundle: 3 parts total
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
    99
  checking for updated bookmarks
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   100
  updating the branch cache
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   101
  new changesets 525251863cad
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   102
  updating to branch default
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   103
  resolving manifests
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   104
   branchmerge: False, force: False, partial: False
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   105
   ancestor: 000000000000, local: 000000000000+, remote: 525251863cad
37691
d241e6632669 lfs: fix the inferred remote store path when using a --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37690
diff changeset
   106
  lfs: assuming remote store: http://localhost:$HGPORT/subdir/mount/point/.git/info/lfs
37617
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   107
  Status: 200
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   108
  Content-Length: 371
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   109
  Content-Type: application/vnd.git-lfs+json
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   110
  Date: $HTTP_DATE$
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   111
  Server: testing stub value
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   112
  {
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   113
    "objects": [
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   114
      {
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   115
        "actions": {
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   116
          "download": {
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   117
            "expires_at": "$ISO_8601_DATE_TIME$"
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   118
            "header": {
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   119
              "Accept": "application/vnd.git-lfs"
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   120
            }
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   121
            "href": "http://localhost:$HGPORT/subdir/mount/point/.hg/lfs/objects/f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e"
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   122
          }
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   123
        }
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   124
        "oid": "f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e"
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   125
        "size": 20
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   126
      }
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   127
    ]
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   128
    "transfer": "basic"
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   129
  }
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   130
  lfs: downloading f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e (20 bytes)
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   131
  Status: 200
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   132
  Content-Length: 20
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   133
  Content-Type: application/octet-stream
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   134
  Date: $HTTP_DATE$
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   135
  Server: testing stub value
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   136
  lfs: adding f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e to the usercache
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   137
  lfs: processed: f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e
37765
ab04972a33ef lfs: enable the final download count status message
Matt Harbison <matt_harbison@yahoo.com>
parents: 37692
diff changeset
   138
  lfs: downloaded 1 files (20 bytes)
37617
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   139
   lfs.bin: remote created -> g
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   140
  getting lfs.bin
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   141
  lfs: found f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e in the local lfs store
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   142
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   143
39723
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39474
diff changeset
   144
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
37617
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   145
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   146
  $ cat $TESTTMP/access.log $TESTTMP/errors.log
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   147
  $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point?cmd=capabilities HTTP/1.1" 200 - (glob)
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   148
  $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)
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   149
  $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)
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   150
  $LOCALIP - - [$LOGDATE$] "POST /subdir/mount/point/.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
b03f2e0fdb88 lfs: teach the blob server to handle --prefix
Matt Harbison <matt_harbison@yahoo.com>
parents: 37556
diff changeset
   151
  $LOCALIP - - [$LOGDATE$] "GET /subdir/mount/point/.hg/lfs/objects/f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e HTTP/1.1" 200 - (glob)
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   152
39474
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   153
Blobs that already exist in the usercache are linked into the repo store, even
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   154
though the client doesn't send the blob.
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   155
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   156
  $ hg init server2
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   157
  $ hg --config "lfs.usercache=$TESTTMP/servercache" -R server2 serve -d \
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   158
  >    -p $HGPORT --pid-file=hg.pid \
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   159
  >    -A $TESTTMP/access.log -E $TESTTMP/errors.log
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   160
  $ cat hg.pid >> $DAEMON_PIDS
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   161
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   162
  $ hg --config "lfs.usercache=$TESTTMP/servercache" -R cloned2 --debug \
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   163
  >    push http://localhost:$HGPORT | grep '^[{} ]'
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   164
  {
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   165
    "objects": [
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   166
      {
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   167
        "oid": "f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e"
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   168
        "size": 20
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   169
      }
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   170
    ]
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   171
    "transfer": "basic"
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   172
  }
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   173
  $ find server2/.hg/store/lfs/objects | sort
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   174
  server2/.hg/store/lfs/objects
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   175
  server2/.hg/store/lfs/objects/f0
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   176
  server2/.hg/store/lfs/objects/f0/3217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e
39723
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39474
diff changeset
   177
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
39474
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   178
  $ cat $TESTTMP/errors.log
a913d2892e17 lfs: ensure the blob is linked to the remote store on skipped uploads
Matt Harbison <matt_harbison@yahoo.com>
parents: 38251
diff changeset
   179
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   180
  $ cat >> $TESTTMP/lfsstoreerror.py <<EOF
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   181
  > import errno
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   182
  > from hgext.lfs import blobstore
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   183
  > 
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   184
  > _numverifies = 0
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   185
  > _readerr = True
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   186
  > 
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   187
  > def reposetup(ui, repo):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   188
  >     # Nothing to do with a remote repo
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   189
  >     if not repo.local():
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   190
  >         return
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   191
  > 
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   192
  >     store = repo.svfs.lfslocalblobstore
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   193
  >     class badstore(store.__class__):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   194
  >         def download(self, oid, src):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   195
  >             '''Called in the server to handle reading from the client in a
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   196
  >             PUT request.'''
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   197
  >             origread = src.read
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   198
  >             def _badread(nbytes):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   199
  >                 # Simulate bad data/checksum failure from the client
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   200
  >                 return b'0' * len(origread(nbytes))
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   201
  >             src.read = _badread
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   202
  >             super(badstore, self).download(oid, src)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   203
  > 
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   204
  >         def _read(self, vfs, oid, verify):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   205
  >             '''Called in the server to read data for a GET request, and then
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   206
  >             calls self._verify() on it before returning.'''
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   207
  >             global _readerr
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   208
  >             # One time simulation of a read error
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   209
  >             if _readerr:
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   210
  >                 _readerr = False
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   211
  >                 raise IOError(errno.EIO, '%s: I/O error' % oid)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   212
  >             # Simulate corrupt content on client download
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   213
  >             blobstore._verify(oid, 'dummy content')
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   214
  > 
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   215
  >         def verify(self, oid):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   216
  >             '''Called in the server to populate the Batch API response,
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   217
  >             letting the client re-upload if the file is corrupt.'''
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   218
  >             # Fail verify in Batch API for one clone command and one push
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   219
  >             # command with an IOError.  Then let it through to access other
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   220
  >             # functions.  Checksum failure is tested elsewhere.
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   221
  >             global _numverifies
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   222
  >             _numverifies += 1
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   223
  >             if _numverifies <= 2:
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   224
  >                 raise IOError(errno.EIO, '%s: I/O error' % oid)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   225
  >             return super(badstore, self).verify(oid)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   226
  > 
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   227
  >     store.__class__ = badstore
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   228
  > EOF
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   229
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   230
  $ rm -rf `hg config lfs.usercache`
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   231
  $ rm -f $TESTTMP/access.log $TESTTMP/errors.log
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   232
  $ hg --config "lfs.usercache=$TESTTMP/servercache" \
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   233
  >    --config extensions.lfsstoreerror=$TESTTMP/lfsstoreerror.py \
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   234
  >    -R server serve -d \
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   235
  >    -p $HGPORT1 --pid-file=hg.pid -A $TESTTMP/access.log -E $TESTTMP/errors.log
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   236
  $ cat hg.pid >> $DAEMON_PIDS
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   237
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   238
Test an I/O error in localstore.verify() (Batch API) with GET
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   239
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   240
  $ hg clone http://localhost:$HGPORT1 httpclone2
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   241
  requesting all changes
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   242
  adding changesets
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   243
  adding manifests
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   244
  adding file changes
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   245
  added 1 changesets with 1 changes to 1 files
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   246
  new changesets 525251863cad
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   247
  updating to branch default
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   248
  abort: LFS server error for "lfs.bin": Internal server error!
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   249
  [255]
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   250
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   251
Test an I/O error in localstore.verify() (Batch API) with PUT
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   252
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   253
  $ echo foo > client/lfs.bin
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   254
  $ hg -R client ci -m 'mod lfs'
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   255
  $ hg -R client push http://localhost:$HGPORT1
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   256
  pushing to http://localhost:$HGPORT1/
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   257
  searching for changes
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   258
  abort: LFS server error for "unknown": Internal server error!
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   259
  [255]
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   260
TODO: figure out how to associate the file name in the error above
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   261
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   262
Test a bad checksum sent by the client in the transfer API
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   263
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   264
  $ hg -R client push http://localhost:$HGPORT1
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   265
  pushing to http://localhost:$HGPORT1/
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   266
  searching for changes
37692
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   267
  abort: HTTP error: HTTP Error 422: corrupt blob (oid=b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c, action=upload)!
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   268
  [255]
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   269
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   270
  $ echo 'test lfs file' > server/lfs3.bin
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   271
  $ hg --config experimental.lfs.disableusercache=True \
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   272
  >    -R server ci -Aqm 'another lfs file'
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   273
  $ hg -R client pull -q http://localhost:$HGPORT1
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   274
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   275
Test an I/O error during the processing of the GET request
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   276
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   277
  $ hg --config lfs.url=http://localhost:$HGPORT1/.git/info/lfs \
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   278
  >    -R client update -r tip
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   279
  abort: HTTP error: HTTP Error 500: Internal Server Error (oid=276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d, action=download)!
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   280
  [255]
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   281
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   282
Test a checksum failure during the processing of the GET request
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   283
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   284
  $ hg --config lfs.url=http://localhost:$HGPORT1/.git/info/lfs \
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   285
  >    -R client update -r tip
37692
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   286
  abort: HTTP error: HTTP Error 422: corrupt blob (oid=276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d, action=download)!
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   287
  [255]
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   288
39723
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39474
diff changeset
   289
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   290
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   291
  $ cat $TESTTMP/access.log
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   292
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   293
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   294
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   295
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   296
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   297
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D392c05922088bacf8e68a6939b480017afbf245d x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   298
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   299
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   300
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   301
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   302
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   303
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   304
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D392c05922088bacf8e68a6939b480017afbf245d x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   305
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   306
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   307
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   308
  $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)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   309
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
37692
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   310
  $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c HTTP/1.1" 422 - (glob)
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   311
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   312
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D392c05922088bacf8e68a6939b480017afbf245d x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   313
  $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=525251863cad618e55d483555f3d00a2ca99597e&heads=506bf3d83f78c54b89e81c6411adee19fdf02156+525251863cad618e55d483555f3d00a2ca99597e&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   314
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   315
  $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d HTTP/1.1" 500 - (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   316
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
37692
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   317
  $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d HTTP/1.1" 422 - (glob)
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   318
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   319
  $ grep -v '  File "' $TESTTMP/errors.log
37690
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   320
  $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   321
  $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   322
  $LOCALIP - - [$ERRDATE$] HG error:      verifies = store.verify(oid) (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   323
  $LOCALIP - - [$ERRDATE$] HG error:      raise IOError(errno.EIO, '%s: I/O error' % oid) (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   324
  $LOCALIP - - [$ERRDATE$] HG error:  IOError: [Errno 5] f03217a32529a28a42d03b1244fe09b6e0f9fd06d7b966d4d50567be2abe6c0e: I/O error (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   325
  $LOCALIP - - [$ERRDATE$] HG error:   (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   326
  $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.git/info/lfs/objects/batch': (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   327
  $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   328
  $LOCALIP - - [$ERRDATE$] HG error:      verifies = store.verify(oid) (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   329
  $LOCALIP - - [$ERRDATE$] HG error:      raise IOError(errno.EIO, '%s: I/O error' % oid) (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   330
  $LOCALIP - - [$ERRDATE$] HG error:  IOError: [Errno 5] b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c: I/O error (glob)
726c4102db9e lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com>
parents: 37689
diff changeset
   331
  $LOCALIP - - [$ERRDATE$] HG error:   (glob)
37692
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   332
  $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.hg/lfs/objects/b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c': (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   333
  $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   334
  $LOCALIP - - [$ERRDATE$] HG error:      localstore.download(oid, req.bodyfh) (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   335
  $LOCALIP - - [$ERRDATE$] HG error:      super(badstore, self).download(oid, src) (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   336
  $LOCALIP - - [$ERRDATE$] HG error:      % oid) (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   337
  $LOCALIP - - [$ERRDATE$] HG error:  LfsCorruptionError: corrupt remote lfs object: b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   338
  $LOCALIP - - [$ERRDATE$] HG error:   (glob)
37689
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   339
  $LOCALIP - - [$ERRDATE$] Exception happened during processing request '/.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d': (glob)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   340
  Traceback (most recent call last):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   341
      self.do_write()
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   342
      self.do_hgweb()
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   343
      for chunk in self.server.application(env, self._start_response):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   344
      for r in self._runwsgi(req, res, repo):
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   345
      rctx, req, res, self.check_perm)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   346
      return func(*(args + a), **kw)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   347
      lambda perm:
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   348
      res.setbodybytes(localstore.read(oid))
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   349
      blob = self._read(self.vfs, oid, verify)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   350
      raise IOError(errno.EIO, '%s: I/O error' % oid)
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   351
  IOError: [Errno 5] 276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d: I/O error
a7dbda94c86a test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com>
parents: 37617
diff changeset
   352
  
37692
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   353
  $LOCALIP - - [$ERRDATE$] HG error:  Exception happened while processing request '/.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d': (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   354
  $LOCALIP - - [$ERRDATE$] HG error:  Traceback (most recent call last): (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   355
  $LOCALIP - - [$ERRDATE$] HG error:      res.setbodybytes(localstore.read(oid)) (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   356
  $LOCALIP - - [$ERRDATE$] HG error:      blob = self._read(self.vfs, oid, verify) (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   357
  $LOCALIP - - [$ERRDATE$] HG error:      blobstore._verify(oid, 'dummy content') (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   358
  $LOCALIP - - [$ERRDATE$] HG error:      hint=_('run hg verify')) (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   359
  $LOCALIP - - [$ERRDATE$] HG error:  LfsCorruptionError: detected corrupt lfs object: 276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d (glob)
10e5bb9678f4 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com>
parents: 37691
diff changeset
   360
  $LOCALIP - - [$ERRDATE$] HG error:   (glob)
37766
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   361
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   362
Basic Authorization headers are returned by the Batch API, and sent back with
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   363
the GET/PUT request.
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   364
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   365
  $ rm -f $TESTTMP/access.log $TESTTMP/errors.log
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   366
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   367
  $ cat >> $HGRCPATH << EOF
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   368
  > [experimental]
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   369
  > lfs.disableusercache = True
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   370
  > [auth]
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   371
  > l.schemes=http
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   372
  > l.prefix=lo
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   373
  > l.username=user
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   374
  > l.password=pass
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   375
  > EOF
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   376
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   377
  $ cat << EOF > userpass.py
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   378
  > import base64
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   379
  > from mercurial.hgweb import common
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   380
  > def perform_authentication(hgweb, req, op):
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   381
  >     auth = req.headers.get(b'Authorization')
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   382
  >     if not auth:
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   383
  >         raise common.ErrorResponse(common.HTTP_UNAUTHORIZED, b'who',
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   384
  >                 [(b'WWW-Authenticate', b'Basic Realm="mercurial"')])
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   385
  >     if base64.b64decode(auth.split()[1]).split(b':', 1) != [b'user',
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   386
  >                                                             b'pass']:
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   387
  >         raise common.ErrorResponse(common.HTTP_FORBIDDEN, b'no')
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   388
  > def extsetup():
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   389
  >     common.permhooks.insert(0, perform_authentication)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   390
  > EOF
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   391
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   392
  $ hg --config extensions.x=$TESTTMP/userpass.py \
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   393
  >    -R server serve -d -p $HGPORT1 --pid-file=hg.pid \
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   394
  >    -A $TESTTMP/access.log -E $TESTTMP/errors.log
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   395
  $ mv hg.pid $DAEMON_PIDS
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   396
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   397
  $ hg clone --debug http://localhost:$HGPORT1 auth_clone | egrep '^[{}]|  '
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   398
  {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   399
    "objects": [
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   400
      {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   401
        "actions": {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   402
          "download": {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   403
            "expires_at": "$ISO_8601_DATE_TIME$"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   404
            "header": {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   405
              "Accept": "application/vnd.git-lfs"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   406
              "Authorization": "Basic dXNlcjpwYXNz"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   407
            }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   408
            "href": "http://localhost:$HGPORT1/.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   409
          }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   410
        }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   411
        "oid": "276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   412
        "size": 14
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   413
      }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   414
    ]
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   415
    "transfer": "basic"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   416
  }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   417
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   418
  $ echo 'another blob' > auth_clone/lfs.blob
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   419
  $ hg -R auth_clone ci -Aqm 'add blob'
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   420
  $ hg -R auth_clone --debug push | egrep '^[{}]|  '
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   421
  {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   422
    "objects": [
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   423
      {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   424
        "actions": {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   425
          "upload": {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   426
            "expires_at": "$ISO_8601_DATE_TIME$"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   427
            "header": {
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   428
              "Accept": "application/vnd.git-lfs"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   429
              "Authorization": "Basic dXNlcjpwYXNz"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   430
            }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   431
            "href": "http://localhost:$HGPORT1/.hg/lfs/objects/df14287d8d75f076a6459e7a3703ca583ca9fb3f4918caed10c77ac8622d49b3"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   432
          }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   433
        }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   434
        "oid": "df14287d8d75f076a6459e7a3703ca583ca9fb3f4918caed10c77ac8622d49b3"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   435
        "size": 13
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   436
      }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   437
    ]
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   438
    "transfer": "basic"
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   439
  }
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   440
39723
5abc47d4ca6b tests: quote PYTHON usage
Matt Harbison <matt_harbison@yahoo.com>
parents: 39474
diff changeset
   441
  $ "$PYTHON" $RUNTESTDIR/killdaemons.py $DAEMON_PIDS
37766
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   442
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   443
  $ cat $TESTTMP/access.log $TESTTMP/errors.log
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   444
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 401 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   445
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   446
  $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)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   447
  $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=506bf3d83f78c54b89e81c6411adee19fdf02156+525251863cad618e55d483555f3d00a2ca99597e&listkeys=bookmarks&phases=1 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   448
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 401 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   449
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   450
  $LOCALIP - - [$LOGDATE$] "GET /.hg/lfs/objects/276f73cfd75f9fb519810df5f5d96d6594ca2521abd86cbcd92122f7d51a1f3d HTTP/1.1" 200 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   451
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 401 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   452
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=capabilities HTTP/1.1" 200 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   453
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=heads+%3Bknown+nodes%3D525251863cad618e55d483555f3d00a2ca99597e+4d9397055dc0c205f3132f331f36353ab1a525a3 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   454
  $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)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   455
  $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)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   456
  $LOCALIP - - [$LOGDATE$] "GET /?cmd=branchmap HTTP/1.1" 200 - x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   457
  $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)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   458
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 401 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   459
  $LOCALIP - - [$LOGDATE$] "POST /.git/info/lfs/objects/batch HTTP/1.1" 200 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   460
  $LOCALIP - - [$LOGDATE$] "PUT /.hg/lfs/objects/df14287d8d75f076a6459e7a3703ca583ca9fb3f4918caed10c77ac8622d49b3 HTTP/1.1" 201 - (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   461
  $LOCALIP - - [$LOGDATE$] "POST /?cmd=unbundle HTTP/1.1" 200 - x-hgarg-1:heads=666f726365 x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob)
925707ac2855 lfs: add the 'Authorization' property to the Batch API response, if present
Matt Harbison <matt_harbison@yahoo.com>
parents: 37765
diff changeset
   462
  $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)