tests: extend get-with-headers to support cache testing
authorDirkjan Ochtman <dirkjan@ochtman.nl>
Wed, 08 Sep 2010 15:11:35 +0200
changeset 12182 1121af239761
parent 12181 045c9e8db0d8
child 12183 f64b416b0ac8
tests: extend get-with-headers to support cache testing
tests/get-with-headers.py
tests/test-hgweb
--- a/tests/get-with-headers.py	Wed Sep 08 15:19:35 2010 +0200
+++ b/tests/get-with-headers.py	Wed Sep 08 15:11:35 2010 +0200
@@ -12,18 +12,40 @@
 except ImportError:
     pass
 
-headers = [h.lower() for h in sys.argv[3:]]
-conn = httplib.HTTPConnection(sys.argv[1])
-conn.request("GET", sys.argv[2])
-response = conn.getresponse()
-print response.status, response.reason
-for h in headers:
-    if response.getheader(h, None) is not None:
-        print "%s: %s" % (h, response.getheader(h))
-print
-data = response.read()
-sys.stdout.write(data)
+twice = False
+if '--twice' in sys.argv:
+    sys.argv.remove('--twice')
+    twice = True
+
+tag = None
+def request(host, path, show):
+
+    global tag
+    headers = {}
+    if tag:
+        headers['If-None-Match'] = tag
 
-if 200 <= response.status <= 299:
+    conn = httplib.HTTPConnection(host)
+    conn.request("GET", path, None, headers)
+    response = conn.getresponse()
+    print response.status, response.reason
+    for h in [h.lower() for h in show]:
+        if response.getheader(h, None) is not None:
+            print "%s: %s" % (h, response.getheader(h))
+
+    print
+    data = response.read()
+    sys.stdout.write(data)
+
+    if twice and response.getheader('ETag', None):
+        tag = response.getheader('ETag')
+
+    return response.status
+
+status = request(sys.argv[1], sys.argv[2], sys.argv[3:])
+if twice:
+    status = request(sys.argv[1], sys.argv[2], sys.argv[3:])
+
+if 200 <= status <= 305:
     sys.exit(0)
 sys.exit(1)
--- a/tests/test-hgweb	Wed Sep 08 15:19:35 2010 +0200
+++ b/tests/test-hgweb	Wed Sep 08 15:11:35 2010 +0200
@@ -43,7 +43,7 @@
 python -c "print len(file('access.log').readlines()), 'log lines written'"
 
 echo % static file
-"$TESTDIR/get-with-headers.py" localhost:$HGPORT '/static/style-gitweb.css'
+"$TESTDIR/get-with-headers.py" --twice localhost:$HGPORT '/static/style-gitweb.css'
 
 echo % errors
 cat errors.log