Patchwork [2,of,9,remotefilelog-ext,getfile-http] test-http: new test that demonstrates a few defects

login
register
mail settings
Submitter Augie Fackler
Date July 1, 2015, 8:05 p.m.
Message ID <41771848adf150766c9e.1435781139@arthedain.pit.corp.google.com>
Download mbox | patch
Permalink /patch/9853/
State Not Applicable
Headers show

Comments

Augie Fackler - July 1, 2015, 8:05 p.m.
# HG changeset patch
# User Augie Fackler <augie@google.com>
# Date 1435610634 14400
#      Mon Jun 29 16:43:54 2015 -0400
# Node ID 41771848adf150766c9e5169c2787e80715b9116
# Parent  0b1c8aee65839b5515c2a203d51b2d7fe9ed057b
test-http: new test that demonstrates a few defects

1) The client doesn't look-before-you-leap on the remotefilelog capability

2) The http server crashes ungracefully when handling a remotefilelog
request (ideally it should respond with '400 No Such Method' as a
server without the extension would.)

3) capabilities are inconsistently advertised between cmd=hello and
cmd=capabilities.

Future patches will attempt to clean up most of this.

Patch

diff --git a/tests/test-http.t b/tests/test-http.t
new file mode 100644
--- /dev/null
+++ b/tests/test-http.t
@@ -0,0 +1,36 @@ 
+  $ . "$TESTDIR/library.sh"
+
+  $ hginit master
+  $ cd master
+  $ cat >> .hg/hgrc <<EOF
+  > [remotefilelog]
+  > server=True
+  > EOF
+  $ echo x > x
+  $ hg commit -qAm x
+Bug: remotefilelog tries to fetch from a server which can't handle
+remotefilelog requests because it's http-based:
+  $ hg serve -p $HGPORT -d --pid-file=../hg1.pid -E ../error.log
+
+  $ cd ..
+  $ cat hg1.pid >> $DAEMON_PIDS
+
+  $ hgcloneshallow http://localhost:$HGPORT/ shallow -q
+  1 files fetched over 1 fetches - (1 misses, 0.00% hit ratio) over 0.00s
+  abort: HTTP Error 500: Internal Server Error
+
+Bug: remotefilelog capability is listed for cmd=hello but not cmd=capabilities
+  $ get-with-headers.py localhost:$HGPORT '?cmd=capabilities'
+  200 Script output follows
+  
+  lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream-preferred stream bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 (no-eol)
+  $ get-with-headers.py localhost:$HGPORT '?cmd=hello'
+  200 Script output follows
+  
+  capabilities: lookup changegroupsubset branchmap pushkey known getbundle unbundlehash batch stream-preferred stream bundle2=HG20%0Achangegroup%3D01%2C02%0Adigests%3Dmd5%2Csha1%2Csha512%0Aerror%3Dabort%2Cunsupportedcontent%2Cpushraced%2Cpushkey%0Ahgtagsfnodes%0Alistkeys%0Apushkey%0Aremote-changegroup%3Dhttp%2Chttps unbundle=HG10GZ,HG10BZ,HG10UN httpheader=1024 remotefilelog
+
+  $ get-with-headers.py localhost:$HGPORT '?cmd=this-command-does-not-exist' | head -n 1
+  400 no such method: this-command-does-not-exist
+Bug: this should return 400, not 5xx
+  $ get-with-headers.py localhost:$HGPORT '?cmd=getfiles' | head -n 1
+  500 Internal Server Error