Skip to content

Commit 9509633

Browse files
committed
autest: --thread-limit 1 by default for Proxy Verifier
For production traffic simulation, Proxy Verifier by default runs through the specified connections in parallel. But for our end to end tests, that hardly ever makes sense. Rather we want the tests to deterministically run through each specified connection sequentially. This patch does so by passing --thread-limit 1 as a default option to the Proxy Verifier client in the client extension. Many tests were specifying this already anyway, so this saves some burden on client configuration for each of the test descriptions.
1 parent 24551fe commit 9509633

23 files changed

+49
-122
lines changed

tests/gold_tests/autest-site/verifier_client.test.ext

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def _configure_client(
7070
# Create a copy of the replay directory in the run directory.
7171
run_replay_path = os.path.join(client_dir, os.path.basename(replay_path))
7272
process.Setup.Copy(replay_path, run_replay_path, CopyLogic.SoftFiles)
73-
command += " {} ".format(run_replay_path)
73+
command += f" {run_replay_path} "
7474

7575
if not http_ports:
7676
http_ports = [8080]
@@ -103,12 +103,12 @@ def _configure_client(
103103
ssl_cert = os.path.join(obj.Variables["AtsTestToolsDir"], "proxy-verifier", "ssl", "client.pem")
104104

105105
if not os.path.isfile(ssl_cert):
106-
raise ValueError("Tried to use '{}' for --client-cert, but it is not "
107-
"a valid file.".format(ssl_cert))
106+
raise ValueError(f"Tried to use '{ssl_cert}' for --client-cert, but it is not "
107+
"a valid file.")
108108
if ssl_cert:
109109
run_ssl_cert = os.path.join(client_dir, os.path.basename(ssl_cert))
110110
process.Setup.Copy(ssl_cert, run_ssl_cert, CopyLogic.SoftFiles)
111-
command += ' --client-cert "{}" '.format(run_ssl_cert)
111+
command += f' --client-cert "{run_ssl_cert}" '
112112

113113
tls_secrets_log_filename = "tls_secrets.txt"
114114
tls_secrets_log_path = os.path.join(client_dir, tls_secrets_log_filename)
@@ -119,21 +119,26 @@ def _configure_client(
119119
ca_cert = os.path.join(obj.Variables["AtsTestToolsDir"], "proxy-verifier", "ssl", "ca.pem")
120120

121121
if not os.path.isfile(ca_cert):
122-
raise ValueError("Tried to use '{}' for --ca-certs, but it is not "
123-
"a valid file.".format(ca_cert))
122+
raise ValueError(f"Tried to use '{ca_cert}' for --ca-certs, but it is not "
123+
"a valid file.")
124124
if ca_cert:
125125
run_ca_cert = os.path.join(client_dir, os.path.basename(ca_cert))
126126
process.Setup.Copy(ca_cert, run_ca_cert, CopyLogic.SoftFiles)
127-
command += ' --ca-certs "{}" '.format(run_ca_cert)
127+
command += f' --ca-certs "{run_ca_cert}" '
128128

129129
if verbose:
130130
command += ' --verbose diag '
131131

132132
if other_args:
133-
command += " {}".format(other_args)
133+
command += f" {other_args}"
134134

135135
if keys is not None:
136-
command += " --keys {}".format(keys)
136+
command += f" --keys {keys}"
137+
138+
# Generally we prefer the deterministic behavior of a single thread where
139+
# each connection is processed sequentially.
140+
if 'thread-limit' not in command:
141+
command += " --thread-limit 1"
137142

138143
process.Command = command
139144
process.ReturnCode = 0

tests/gold_tests/cache/background_fill.test.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,7 @@ def __testCase3(self):
167167
"pv_client",
168168
"replay/bg_fill.yaml",
169169
http_ports=[self.ts['for_pv'].Variables.port],
170-
https_ports=[self.ts['for_pv'].Variables.ssl_port],
171-
other_args='--thread-limit 1')
170+
https_ports=[self.ts['for_pv'].Variables.ssl_port])
172171
tr.Processes.Default.ReturnCode = 0
173172
tr.Processes.Default.Streams.stdout = "gold/background_fill_3_stdout.gold"
174173
self.__checkProcessAfter(tr)

tests/gold_tests/cache/cache-auth.test.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ def runTraffic(self):
5656
tr = Test.AddTestRun(
5757
"Verify the proper caching behavior for request/response containing auth-related fields when ATS is in default configuration"
5858
)
59-
tr.AddVerifierClientProcess(
60-
"auth-default-client", self.authDefaultReplayFile, http_ports=[self.ts.Variables.port], other_args='--thread-limit 1')
59+
tr.AddVerifierClientProcess("auth-default-client", self.authDefaultReplayFile, http_ports=[self.ts.Variables.port])
6160
tr.Processes.Default.StartBefore(self.server)
6261
tr.Processes.Default.StartBefore(self.ts)
6362
tr.StillRunningAfter = self.server
@@ -98,8 +97,7 @@ def runTraffic(self):
9897
tr = Test.AddTestRun(
9998
"Verify the proper caching behavior for request/response containing auth-related fields when ATS is configured to bypass caching for those"
10099
)
101-
tr.AddVerifierClientProcess(
102-
"auth-ignored-client", self.authIgnoredReplayFile, http_ports=[self.ts.Variables.port], other_args='--thread-limit 1')
100+
tr.AddVerifierClientProcess("auth-ignored-client", self.authIgnoredReplayFile, http_ports=[self.ts.Variables.port])
103101
tr.Processes.Default.StartBefore(self.server)
104102
tr.Processes.Default.StartBefore(self.ts)
105103
tr.StillRunningAfter = self.server

tests/gold_tests/cache/cache-control.test.py

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,7 @@ def setupTS(self):
203203
def runTraffic(self):
204204
tr = Test.AddTestRun("Verify the proper handling of cache-control directives in requests in default configuration")
205205
tr.AddVerifierClientProcess(
206-
"request-cache-control-default-client",
207-
self.requestCacheControlReplayFile,
208-
http_ports=[self.ts.Variables.port],
209-
other_args='--thread-limit 1')
206+
"request-cache-control-default-client", self.requestCacheControlReplayFile, http_ports=[self.ts.Variables.port])
210207
tr.Processes.Default.StartBefore(self.server)
211208
tr.Processes.Default.StartBefore(self.ts)
212209
tr.StillRunningAfter = self.server
@@ -256,10 +253,7 @@ def runTraffic(self):
256253
"Verify the proper handling of cache-control directives in requests when ATS is configured to honor client's request to bypass the cache"
257254
)
258255
tr.AddVerifierClientProcess(
259-
"request-cache-control-honor-client-client",
260-
self.requestCacheControlReplayFile,
261-
http_ports=[self.ts.Variables.port],
262-
other_args='--thread-limit 1')
256+
"request-cache-control-honor-client-client", self.requestCacheControlReplayFile, http_ports=[self.ts.Variables.port])
263257
tr.Processes.Default.StartBefore(self.server)
264258
tr.Processes.Default.StartBefore(self.ts)
265259
tr.StillRunningAfter = self.server
@@ -304,10 +298,7 @@ def setupTS(self):
304298
def runTraffic(self):
305299
tr = Test.AddTestRun("Verify the proper handling of cache-control directives in responses in default configuration")
306300
tr.AddVerifierClientProcess(
307-
"response-cache-control-client-default",
308-
self.responseCacheControlReplayFile,
309-
http_ports=[self.ts.Variables.port],
310-
other_args='--thread-limit 1')
301+
"response-cache-control-client-default", self.responseCacheControlReplayFile, http_ports=[self.ts.Variables.port])
311302
tr.Processes.Default.StartBefore(self.server)
312303
tr.Processes.Default.StartBefore(self.ts)
313304
tr.StillRunningAfter = self.server
@@ -356,10 +347,7 @@ def runTraffic(self):
356347
"Verify the proper handling of cache-control directives in responses when ATS is configured to ignore server's request to bypass the cache"
357348
)
358349
tr.AddVerifierClientProcess(
359-
"response-cache-control-client-ignored",
360-
self.responseCacheControlReplayFile,
361-
http_ports=[self.ts.Variables.port],
362-
other_args='--thread-limit 1')
350+
"response-cache-control-client-ignored", self.responseCacheControlReplayFile, http_ports=[self.ts.Variables.port])
363351
tr.Processes.Default.StartBefore(self.server)
364352
tr.Processes.Default.StartBefore(self.ts)
365353
tr.StillRunningAfter = self.server

tests/gold_tests/cache/cache-cookie.test.py

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,7 @@ def setupTS(self):
4848

4949
def runTraffic(self):
5050
tr = Test.AddTestRun("Verify the correct caching behavior when ATS is in default configuration")
51-
tr.AddVerifierClientProcess(
52-
"cookie-default-client",
53-
self.cookieDefaultReplayFile,
54-
http_ports=[self.ts.Variables.port],
55-
other_args='--thread-limit 1')
51+
tr.AddVerifierClientProcess("cookie-default-client", self.cookieDefaultReplayFile, http_ports=[self.ts.Variables.port])
5652
tr.Processes.Default.StartBefore(self.server)
5753
tr.Processes.Default.StartBefore(self.ts)
5854
tr.StillRunningAfter = self.server
@@ -91,8 +87,7 @@ def setupTS(self):
9187
def runTraffic(self):
9288
tr = Test.AddTestRun(
9389
"Verify the correct caching behavior when ATS is configured to not cache response to cookie for any content type")
94-
tr.AddVerifierClientProcess(
95-
"cookie-bypass-client", self.cookieBypassReplayFile, http_ports=[self.ts.Variables.port], other_args='--thread-limit 1')
90+
tr.AddVerifierClientProcess("cookie-bypass-client", self.cookieBypassReplayFile, http_ports=[self.ts.Variables.port])
9691
tr.Processes.Default.StartBefore(self.server)
9792
tr.Processes.Default.StartBefore(self.ts)
9893
tr.StillRunningAfter = self.server
@@ -131,11 +126,7 @@ def setupTS(self):
131126
def runTraffic(self):
132127
tr = Test.AddTestRun(
133128
"Verify the correct caching behavior when ATS is configured to cache response to cookie only for image content type")
134-
tr.AddVerifierClientProcess(
135-
"cookie-img-only-client",
136-
self.cookieImgOnlyReplayFile,
137-
http_ports=[self.ts.Variables.port],
138-
other_args='--thread-limit 1')
129+
tr.AddVerifierClientProcess("cookie-img-only-client", self.cookieImgOnlyReplayFile, http_ports=[self.ts.Variables.port])
139130
tr.Processes.Default.StartBefore(self.server)
140131
tr.Processes.Default.StartBefore(self.ts)
141132
tr.StillRunningAfter = self.server
@@ -175,10 +166,7 @@ def runTraffic(self):
175166
tr = Test.AddTestRun(
176167
"Verify the correct caching behavior when ATS is configured to cache response to cookie for all but text types")
177168
tr.AddVerifierClientProcess(
178-
"cookie-all-but-text-client",
179-
self.cookieAllButTextReplayFile,
180-
http_ports=[self.ts.Variables.port],
181-
other_args='--thread-limit 1')
169+
"cookie-all-but-text-client", self.cookieAllButTextReplayFile, http_ports=[self.ts.Variables.port])
182170
tr.Processes.Default.StartBefore(self.server)
183171
tr.Processes.Default.StartBefore(self.ts)
184172
tr.StillRunningAfter = self.server
@@ -222,10 +210,7 @@ def runTraffic(self):
222210
"Verify the correct caching behavior when ATS is configured to cache all content types but text, but with a few exceptions for text types which would also be cached"
223211
)
224212
tr.AddVerifierClientProcess(
225-
"cookie-all-but-text-with-excp-client",
226-
self.cookieAllButTextReplayFile,
227-
http_ports=[self.ts.Variables.port],
228-
other_args='--thread-limit 1')
213+
"cookie-all-but-text-with-excp-client", self.cookieAllButTextReplayFile, http_ports=[self.ts.Variables.port])
229214
tr.Processes.Default.StartBefore(self.server)
230215
tr.Processes.Default.StartBefore(self.ts)
231216
tr.StillRunningAfter = self.server

tests/gold_tests/chunked_encoding/bad_chunked_encoding.test.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,7 @@ def setupTS(self):
102102
def runChunkedTraffic(self):
103103
tr = Test.AddTestRun()
104104
tr.AddVerifierClientProcess(
105-
"client1",
106-
self.chunkedReplayFile,
107-
http_ports=[self.ts.Variables.port],
108-
https_ports=[self.ts.Variables.ssl_port],
109-
other_args='--thread-limit 1')
105+
"client1", self.chunkedReplayFile, http_ports=[self.ts.Variables.port], https_ports=[self.ts.Variables.ssl_port])
110106
tr.Processes.Default.StartBefore(self.server)
111107
tr.Processes.Default.StartBefore(self.ts)
112108
tr.StillRunningAfter = self.server
@@ -162,11 +158,7 @@ def setupTS(self):
162158
def runChunkedTraffic(self):
163159
tr = Test.AddTestRun()
164160
tr.AddVerifierClientProcess(
165-
"client2",
166-
self.chunkedReplayFile,
167-
http_ports=[self.ts.Variables.port],
168-
https_ports=[self.ts.Variables.ssl_port],
169-
other_args='--thread-limit 1')
161+
"client2", self.chunkedReplayFile, http_ports=[self.ts.Variables.port], https_ports=[self.ts.Variables.ssl_port])
170162
tr.Processes.Default.StartBefore(self.server)
171163
tr.Processes.Default.StartBefore(self.ts)
172164
tr.StillRunningAfter = self.server

tests/gold_tests/connect/connect.test.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,7 @@ def setupTS(self):
149149

150150
def runTraffic(self):
151151
tr = Test.AddTestRun("Verify correct handling of CONNECT request")
152-
tr.AddVerifierClientProcess(
153-
"connect-client", self.connectReplayFile, http_ports=[self.ts.Variables.port], other_args='--thread-limit 1')
152+
tr.AddVerifierClientProcess("connect-client", self.connectReplayFile, http_ports=[self.ts.Variables.port])
154153
tr.Processes.Default.StartBefore(self.server)
155154
tr.Processes.Default.StartBefore(self.ts)
156155
tr.StillRunningAfter = self.server
@@ -235,8 +234,7 @@ def setupTS(self):
235234

236235
def runTraffic(self):
237236
tr = Test.AddTestRun("Verify correct handling of CONNECT request on HTTP/2")
238-
tr.AddVerifierClientProcess(
239-
"connect-client2", self.connectReplayFile, https_ports=[self.ts.Variables.ssl_port], other_args='--thread-limit 1')
237+
tr.AddVerifierClientProcess("connect-client2", self.connectReplayFile, https_ports=[self.ts.Variables.ssl_port])
240238
tr.Processes.Default.StartBefore(self.server)
241239
tr.Processes.Default.StartBefore(self.ts)
242240
tr.StillRunningAfter = self.server

tests/gold_tests/h2/h2get_with_body.test.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,7 @@
5555
tr.Processes.Default.StartBefore(pv_server)
5656
tr.Processes.Default.StartBefore(ts)
5757
tr.AddVerifierClientProcess(
58-
"pv_client",
59-
"h2get_with_body.yaml",
60-
http_ports=[ts.Variables.port],
61-
https_ports=[ts.Variables.ssl_port],
62-
other_args='--thread-limit 1')
58+
"pv_client", "h2get_with_body.yaml", http_ports=[ts.Variables.port], https_ports=[ts.Variables.ssl_port])
6359
tr.Processes.Default.ReturnCode = 0
6460

6561
tr.Processes.Default.Streams.All += Testers.ContainsExpression(

tests/gold_tests/h2/http2_close_connection.test.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,7 @@
5151
tr.Processes.Default.StartBefore(pv_server)
5252
tr.Processes.Default.StartBefore(ts)
5353
tr.AddVerifierClientProcess(
54-
"pv_client",
55-
"http2_close_connection.yaml",
56-
http_ports=[ts.Variables.port],
57-
https_ports=[ts.Variables.ssl_port],
58-
other_args='--thread-limit 1')
54+
"pv_client", "http2_close_connection.yaml", http_ports=[ts.Variables.port], https_ports=[ts.Variables.ssl_port])
5955
tr.Processes.Default.ReturnCode = 0
6056

6157
tr.Processes.Default.Streams.All += Testers.ContainsExpression(

tests/gold_tests/headers/invalid_range_header.test.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ def setupTS(self):
4949

5050
def runTraffic(self):
5151
tr = Test.AddTestRun()
52-
tr.AddVerifierClientProcess(
53-
"client1", self.invalidRangeRequestReplayFile, http_ports=[self.ts.Variables.port], other_args='--thread-limit 1')
52+
tr.AddVerifierClientProcess("client1", self.invalidRangeRequestReplayFile, http_ports=[self.ts.Variables.port])
5453
tr.Processes.Default.StartBefore(self.server)
5554
tr.Processes.Default.StartBefore(self.ts)
5655
tr.StillRunningAfter = self.server

0 commit comments

Comments
 (0)