summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRainer Jung <rjung@apache.org>2023-03-10 09:14:17 +0000
committerRainer Jung <rjung@apache.org>2023-03-10 09:14:17 +0000
commit139eef46aec9566f5cafd385079967a2fa91d6a5 (patch)
treec1c0bb11e93a3865945fcab9b48a75ba275677c4 /test
parent9e1ac6d4a28910f6fedfbdab8d30ef65c0263fd8 (diff)
downloadhttpd-139eef46aec9566f5cafd385079967a2fa91d6a5.tar.gz
Fix proxy backend connection reuse tests.
Use one curl exec with multiple URLs instead of separate curl calls, so that we make sure we use the same connection to the web server ending up in the same httpd child process. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1908246 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test')
-rw-r--r--test/modules/http2/test_600_h2proxy.py39
1 files changed, 21 insertions, 18 deletions
diff --git a/test/modules/http2/test_600_h2proxy.py b/test/modules/http2/test_600_h2proxy.py
index 9591ce57b7..e93ba1ae51 100644
--- a/test/modules/http2/test_600_h2proxy.py
+++ b/test/modules/http2/test_600_h2proxy.py
@@ -78,24 +78,30 @@ class TestH2Proxy:
conf.install()
assert env.apache_restart() == 0
url = env.mkurl("https", "cgi", f"/h2proxy/{env.http_port}/hello.py")
- r = env.curl_get(url, 5)
- assert r.response["status"] == 200
- assert r.json["h2_stream_id"] == "1"
if enable_reuse == "on":
- # reuse is not guarantueed for each request, but we expect some
+ # reuse is not guaranteed for each request, but we expect some
# to do it and run on a h2 stream id > 1
reused = False
- for _ in range(10):
- r = env.curl_get(url, 5)
- assert r.response["status"] == 200
- if int(r.json["h2_stream_id"]) > 1:
+ count = 10
+ r = env.curl_raw([url] * count, 5)
+ response = r.response
+ for n in range(count):
+ assert response["status"] == 200
+ if n == (count - 1):
+ break
+ response = response["previous"]
+ assert r.json[0]["h2_stream_id"] == "1"
+ for n in range(1, count):
+ if int(r.json[n]["h2_stream_id"]) > 1:
reused = True
break
assert reused
else:
- r = env.curl_get(url, 5)
+ r = env.curl_raw([url, url], 5)
+ assert r.response["previous"]["status"] == 200
assert r.response["status"] == 200
- assert r.json["h2_stream_id"] == "1"
+ assert r.json[0]["h2_stream_id"] == "1"
+ assert r.json[1]["h2_stream_id"] == "1"
# do some flexible setup from #235 to proper connection selection
@pytest.mark.parametrize("enable_reuse", [ "on", "off" ])
@@ -119,16 +125,13 @@ class TestH2Proxy:
conf.install()
assert env.apache_restart() == 0
url = env.mkurl("https", "cgi", f"/h2proxy/{env.http_port}/hello.py")
- r = env.curl_get(url, 5)
- assert r.response["status"] == 200
- assert int(r.json["port"]) == env.http_port
- # going to another backend port must create a new connection and
- # we should see stream id one again
- url = env.mkurl("https", "cgi", f"/h2proxy/{env.http_port2}/hello.py")
- r = env.curl_get(url, 5)
+ url2 = env.mkurl("https", "cgi", f"/h2proxy/{env.http_port2}/hello.py")
+ r = env.curl_raw([url, url2], 5)
+ assert r.response["previous"]["status"] == 200
+ assert int(r.json[0]["port"]) == env.http_port
assert r.response["status"] == 200
exp_port = env.http_port if enable_reuse == "on" else env.http_port2
- assert int(r.json["port"]) == exp_port
+ assert int(r.json[1]["port"]) == exp_port
# lets do some error tests
def test_h2_600_30(self, env):