Skip to content

Commit 93abd7c

Browse files
authored
Fixes skupperproject#1373: HTTP/1 test timeout in wait_http_listeners_down (skupperproject#1384)
Fix prevents the router from reconnecting when the last active connection closes by shutting down the listener socket after accepting the last connection from the router.
1 parent 6a9d559 commit 93abd7c

File tree

1 file changed

+33
-11
lines changed

1 file changed

+33
-11
lines changed

tests/system_tests_http1_adaptor.py

+33-11
Original file line numberDiff line numberDiff line change
@@ -693,9 +693,11 @@ def test_3000_N_client_pipeline_cancel(self):
693693
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
694694
listener.bind(("", self.server11_port))
695695
listener.settimeout(TIMEOUT)
696-
listener.listen(1)
696+
listener.listen(0)
697697
server, addr = listener.accept()
698698
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
699+
# prevent router reconnect when server socket closes (ISSUE-1373)
700+
listener.shutdown(socket.SHUT_RDWR)
699701

700702
clients = []
701703
for index in range(CLIENT_COUNT):
@@ -841,7 +843,7 @@ def test_3001_N_client_pipeline_recover(self):
841843
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
842844
listener.bind((self.server11_host, self.server11_port))
843845
listener.settimeout(TIMEOUT)
844-
listener.listen(1)
846+
listener.listen(0)
845847
server, addr = listener.accept()
846848
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
847849

@@ -923,6 +925,8 @@ def test_3001_N_client_pipeline_recover(self):
923925

924926
server, addr = listener.accept()
925927
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
928+
# prevent router reconnect when server socket closes (ISSUE-1373)
929+
listener.shutdown(socket.SHUT_RDWR)
926930

927931
# expect the remaining requests to complete successfully
928932

@@ -982,9 +986,11 @@ def test_4000_client_half_close(self):
982986
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
983987
listener.bind((self.server11_host, self.server11_port))
984988
listener.settimeout(TIMEOUT)
985-
listener.listen(1)
989+
listener.listen(0)
986990
server, addr = listener.accept()
987991
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
992+
# prevent router reconnect when server socket closes (ISSUE-1373)
993+
listener.shutdown(socket.SHUT_RDWR)
988994

989995
clients = []
990996
for index in range(CLIENT_COUNT):
@@ -1063,9 +1069,11 @@ def test_4001_server_half_close(self):
10631069
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
10641070
listener.bind((self.server11_host, self.server11_port))
10651071
listener.settimeout(TIMEOUT)
1066-
listener.listen(1)
1072+
listener.listen(0)
10671073
server, addr = listener.accept()
10681074
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
1075+
# prevent router reconnect when server socket closes (ISSUE-1373)
1076+
listener.shutdown(socket.SHUT_RDWR)
10691077

10701078
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
10711079
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -1115,9 +1123,11 @@ def test_4002_server_early_reply(self):
11151123
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
11161124
listener.bind((self.server11_host, self.server11_port))
11171125
listener.settimeout(TIMEOUT)
1118-
listener.listen(1)
1126+
listener.listen(0)
11191127
server, addr = listener.accept()
11201128
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
1129+
# prevent router reconnect when server socket closes (ISSUE-1373)
1130+
listener.shutdown(socket.SHUT_RDWR)
11211131

11221132
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
11231133
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -1310,9 +1320,11 @@ def test_4000_server_no_notify(self):
13101320
with self.server_ssl_context.wrap_socket(raw_listener,
13111321
server_side=True) as listener:
13121322
listener.bind((self.server11_host, self.server11_port))
1313-
listener.listen(1)
1323+
listener.listen(0)
13141324
server, addr = listener.accept()
13151325
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
1326+
# prevent router reconnect when server socket closes (ISSUE-1373)
1327+
listener.shutdown(socket.SHUT_RDWR)
13161328

13171329
raw_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
13181330
raw_client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -1361,9 +1373,11 @@ def test_4001_server_no_notify_truncated(self):
13611373
with self.server_ssl_context.wrap_socket(raw_listener,
13621374
server_side=True) as listener:
13631375
listener.bind((self.server11_host, self.server11_port))
1364-
listener.listen(1)
1376+
listener.listen(0)
13651377
server, addr = listener.accept()
13661378
wait_http_listeners_up(self.EA1.addresses[0], l_filter={'name': 'L_testServer11'})
1379+
# prevent router reconnect when server socket closes (ISSUE-1373)
1380+
listener.shutdown(socket.SHUT_RDWR)
13671381

13681382
raw_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
13691383
raw_client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -1689,9 +1703,11 @@ def test_06_bad_request_headers(self):
16891703
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
16901704
listener.bind(("", self.http_server_port))
16911705
listener.settimeout(TIMEOUT)
1692-
listener.listen(1)
1706+
listener.listen(0)
16931707
server, addr = listener.accept()
16941708
wait_http_listeners_up(self.INT_A.listener, l_filter={'name': 'L_testServer'})
1709+
# prevent router reconnect when server socket closes (ISSUE-1373)
1710+
listener.shutdown(socket.SHUT_RDWR)
16951711

16961712
bad_requests = [
16971713
# malformed request line
@@ -1752,7 +1768,7 @@ def test_07_bad_response_line(self):
17521768
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
17531769
listener.bind(("", self.http_server_port))
17541770
listener.settimeout(TIMEOUT)
1755-
listener.listen(1)
1771+
listener.listen(0)
17561772

17571773
bad_responses = [
17581774
# malformed response line
@@ -1771,9 +1787,13 @@ def test_07_bad_response_line(self):
17711787

17721788
# unterminated request to check client cleanup
17731789
request = b'GET / HTTP/1.1\r\nContent-Length: 100\r\n\r\nX'
1774-
for response in bad_responses:
1790+
for index in range(len(bad_responses)):
1791+
response = bad_responses[index]
17751792
server, addr = listener.accept()
17761793
wait_http_listeners_up(self.INT_A.listener, l_filter={'name': 'L_testServer'})
1794+
# prevent router reconnect when server socket closes (ISSUE-1373)
1795+
if index == len(bad_responses) - 1:
1796+
listener.shutdown(socket.SHUT_RDWR)
17771797

17781798
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
17791799
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
@@ -1811,7 +1831,7 @@ def test_08_bad_chunked_body(self):
18111831
listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
18121832
listener.bind(("", self.http_server_port))
18131833
listener.settimeout(TIMEOUT)
1814-
listener.listen(1)
1834+
listener.listen(0)
18151835

18161836
server, addr = listener.accept()
18171837
wait_http_listeners_up(self.INT_A.listener, l_filter={'name': 'L_testServer'})
@@ -1856,6 +1876,8 @@ def test_08_bad_chunked_body(self):
18561876

18571877
server, addr = listener.accept()
18581878
wait_http_listeners_up(self.INT_A.listener, l_filter={'name': 'L_testServer'})
1879+
# prevent router reconnect when server socket closes (ISSUE-1373)
1880+
listener.shutdown(socket.SHUT_RDWR)
18591881

18601882
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
18611883
client.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)

0 commit comments

Comments
 (0)