This is an automated email from the ASF dual-hosted git repository.
bneradt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficserver.git
The following commit(s) were added to refs/heads/master by this push:
new e95924764b Revert "cache-*.test.py tests to use ATSReplayTest
(#12694)" (#12700)
e95924764b is described below
commit e95924764b1d43cc5afaebb93bff2b4db284aafa
Author: Brian Neradt <[email protected]>
AuthorDate: Mon Nov 24 11:40:22 2025 -0600
Revert "cache-*.test.py tests to use ATSReplayTest (#12694)" (#12700)
This reverts commit ab0a575ef01705bce19968409ca34bd738e4daae.
We have to circle back around on these. It turns out that CI was not
running the autests due to needing #12699.
---
tests/gold_tests/autest-site/ats_replay.test.ext | 45 ---
tests/gold_tests/cache/alternate-caching.test.py | 27 +-
tests/gold_tests/cache/cache-auth.test.py | 89 +++++-
tests/gold_tests/cache/cache-control.test.py | 348 ++++++++++++++++++++-
tests/gold_tests/cache/cache-cookie.test.py | 206 +++++++++++-
.../gold_tests/cache/cache-range-response.test.py | 18 +-
.../gold_tests/cache/cache-request-method.test.py | 80 ++++-
tests/gold_tests/cache/conditional-get-hit.test.py | 17 +-
.../cache/gold/cache_and_req_body-hit.gold | 10 +
.../cache/gold/cache_and_req_body-miss.gold | 10 +
tests/gold_tests/cache/gold/cache_hit_stale.gold | 10 +
tests/gold_tests/cache/gold/cache_no_cache.gold | 12 +
tests/gold_tests/cache/gold/cache_no_cc.gold | 9 +
tests/gold_tests/cache/negative-caching.test.py | 62 +++-
.../gold_tests/cache/negative-revalidating.test.py | 79 ++++-
tests/gold_tests/cache/proxy_serve_stale.test.py | 49 ++-
.../replay/alternate-caching-update-size.yaml | 28 --
.../cache/replay/auth-default.replay.yaml | 68 ++++
.../cache/replay/auth-ignored.replay.yaml | 67 ++++
.../cache/replay/cache-control-basic.replay.yaml | 218 -------------
.../cache/replay/cache-control-max-age.replay.yaml | 29 --
.../cache/replay/cache-control-pragma.replay.yaml | 26 --
.../replay/cache-control-s-maxage.replay.yaml | 27 --
.../cache/replay/cache-range-response.replay.yaml | 25 --
.../cache/replay/conditional-get-cache-hit.yaml | 23 --
.../cookie-all-but-text-with-excp.replay.yaml | 28 --
.../cache/replay/cookie-all-but-text.replay.yaml | 27 --
.../cache/replay/cookie-bypass-cache.replay.yaml | 27 --
.../cache/replay/cookie-cache-img-only.replay.yaml | 27 --
.../cache/replay/cookie-default.replay.yaml | 27 +-
.../cache/replay/head_with_get_cached.replay.yaml | 27 +-
.../cache/replay/ignore_authentication.replay.yaml | 158 ----------
.../replay/negative-caching-customized.replay.yaml | 28 --
.../replay/negative-caching-default.replay.yaml | 27 --
.../replay/negative-caching-disabled.replay.yaml | 27 --
.../negative-revalidating-disabled.replay.yaml | 29 --
.../negative-revalidating-enabled.replay.yaml | 34 +-
.../replay/negative-revalidating-list.replay.yaml | 35 +--
.../post_with_post_caching_disabled.replay.yaml | 29 --
.../post_with_post_caching_enabled.replay.yaml | 28 --
.../post_with_post_caching_override.replay.yaml | 113 -------
.../cache/replay/proxy_serve_stale.replay.yaml | 32 --
.../request-cache-control-default.replay.yaml | 26 --
.../request-cache-control-honor-client.replay.yaml | 36 ---
.../response-cache-control-default.replay.yaml | 34 --
.../response-cache-control-ignored.replay.yaml | 35 ---
.../cache/replay/varied_transactions.replay.yaml | 28 --
tests/gold_tests/cache/vary-handling.test.py | 22 +-
48 files changed, 1129 insertions(+), 1337 deletions(-)
diff --git a/tests/gold_tests/autest-site/ats_replay.test.ext
b/tests/gold_tests/autest-site/ats_replay.test.ext
index 3028ac9edf..10e3b0fe85 100644
--- a/tests/gold_tests/autest-site/ats_replay.test.ext
+++ b/tests/gold_tests/autest-site/ats_replay.test.ext
@@ -36,17 +36,6 @@ def configure_ats(obj: 'TestRun', server: 'Process',
ats_config: dict, dns: Opti
ts = obj.MakeATSProcess(name, **process_config)
records_config = ats_config.get('records_config', {})
ts.Disk.records_config.update(records_config)
-
- # Configure plugin_config if specified.
- plugin_config = ats_config.get('plugin_config', [])
- for plugin_line in plugin_config:
- ts.Disk.plugin_config.AddLine(plugin_line)
-
- # Configure parent_config if specified.
- parent_config = ats_config.get('parent_config', [])
- for parent_line in parent_config:
- ts.Disk.parent_config.AddLine(parent_line)
-
remap_config = ats_config.get('remap_config', [])
for remap_entry in remap_config:
if isinstance(remap_entry, str):
@@ -79,40 +68,6 @@ def configure_ats(obj: 'TestRun', server: 'Process',
ats_config: dict, dns: Opti
ts.Setup.Copy(src_dir, dst_dir)
else:
ts.Setup.CopyAs(item, ts.Variables.CONFIGDIR)
-
- # Configure log validation if specified.
- log_validation = ats_config.get('log_validation', {})
- if log_validation:
- # traffic_out validation.
- traffic_out = log_validation.get('traffic_out', {})
- for contains_entry in traffic_out.get('contains', []):
- expression = contains_entry['expression']
- description = contains_entry.get('description', f'Verify
traffic_out contains: {expression}')
- ts.Disk.traffic_out.Content +=
Testers.ContainsExpression(expression, description)
- for excludes_entry in traffic_out.get('excludes', []):
- expression = excludes_entry['expression']
- description = excludes_entry.get('description', f'Verify
traffic_out excludes: {expression}')
- ts.Disk.traffic_out.Content +=
Testers.ExcludesExpression(expression, description)
- # Gold file validation for traffic_out.
- if 'gold_file' in traffic_out:
- gold_file = traffic_out['gold_file']
- ts.Disk.traffic_out.Content += gold_file
-
- # diags_log validation.
- diags_log = log_validation.get('diags_log', {})
- for contains_entry in diags_log.get('contains', []):
- expression = contains_entry['expression']
- description = contains_entry.get('description', f'Verify diags_log
contains: {expression}')
- ts.Disk.diags_log.Content +=
Testers.ContainsExpression(expression, description)
- for excludes_entry in diags_log.get('excludes', []):
- expression = excludes_entry['expression']
- description = excludes_entry.get('description', f'Verify diags_log
excludes: {expression}')
- ts.Disk.diags_log.Content +=
Testers.ExcludesExpression(expression, description)
- # Gold file validation for diags_log.
- if 'gold_file' in diags_log:
- gold_file = diags_log['gold_file']
- ts.Disk.diags_log.Content += gold_file
-
return ts
diff --git a/tests/gold_tests/cache/alternate-caching.test.py
b/tests/gold_tests/cache/alternate-caching.test.py
index b6ec135083..21b7ef017a 100644
--- a/tests/gold_tests/cache/alternate-caching.test.py
+++ b/tests/gold_tests/cache/alternate-caching.test.py
@@ -21,5 +21,28 @@ Test.Summary = '''
Test the alternate caching feature.
'''
-# Verify disabled negative revalidating behavior.
-Test.ATSReplayTest(replay_file="replay/alternate-caching-update-size.yaml")
+#
+# Verify disabled negative_revalidating behavior.
+#
+ts = Test.MakeATSProcess("ts-alternate-caching")
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http|cache',
+ 'proxy.config.http.cache.max_stale_age': 6,
+ 'proxy.config.cache.select_alternate': 1,
+ 'proxy.config.cache.limits.http.max_alts': 4,
+
+ # Try with and without this
+ 'proxy.config.http.negative_revalidating_enabled': 1,
+ 'proxy.config.http.negative_caching_enabled': 1,
+ 'proxy.config.http.negative_caching_lifetime': 30
+ })
+tr = Test.AddTestRun("Verify disabled negative revalidating behavior.")
+replay_file = "replay/alternate-caching-update-size.yaml"
+server = tr.AddVerifierServerProcess("server1", replay_file)
+server_port = server.Variables.http_port
+tr.AddVerifierClientProcess("client1", replay_file,
http_ports=[ts.Variables.port])
+ts.Disk.remap_config.AddLine('map / http://127.0.0.1:{0}'.format(server_port))
+tr.Processes.Default.StartBefore(ts)
+tr.StillRunningAfter = ts
diff --git a/tests/gold_tests/cache/cache-auth.test.py
b/tests/gold_tests/cache/cache-auth.test.py
index 0861355464..9e8f3e6c31 100644
--- a/tests/gold_tests/cache/cache-auth.test.py
+++ b/tests/gold_tests/cache/cache-auth.test.py
@@ -21,5 +21,90 @@ Test.Summary = '''
Test authorization-related caching behaviors
'''
-# Verify proxy.config.http.cache.ignore_authentication behavior.
-Test.ATSReplayTest(replay_file="replay/ignore_authentication.replay.yaml")
+Test.ContinueOnFail = True
+
+# **testname is required**
+testName = ""
+
+
+class AuthDefaultTest:
+ # Verify the proper caching behavior for request/response containing
+ # auth-related fields when ATS is in default configuration
+ authDefaultReplayFile = "replay/auth-default.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server =
Test.MakeVerifierServerProcess("auth-default-verifier-server",
self.authDefaultReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-auth-default")
+ self.ts.Disk.records_config.update({
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ # Verify log for skipping the WWW-Authenticate response
+ self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
+ "response has WWW-Authenticate, response is not cacheable",
+ "Verify ATS doesn't store the response with WWW-Authenticate.")
+
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "Verify the proper caching behavior for request/response
containing auth-related fields when ATS is in default configuration"
+ )
+ tr.AddVerifierClientProcess("auth-default-client",
self.authDefaultReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+AuthDefaultTest().run()
+
+
+class AuthIgnoredTest:
+ # Verify the proper caching behavior for request/response containing
+ # auth-related fields when ATS is configured to bypass caching for those
+ authIgnoredReplayFile = "replay/auth-ignored.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server =
Test.MakeVerifierServerProcess("auth-ignored-verifier-server",
self.authIgnoredReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-auth-ignored")
+ self.ts.Disk.records_config.update(
+ {
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ # Configure ATS to ignore the WWW-Authenticate header in
+ # response(allow caching of such response)
+ "proxy.config.http.cache.ignore_authentication": 1
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "Verify the proper caching behavior for request/response
containing auth-related fields when ATS is configured to bypass caching for
those"
+ )
+ tr.AddVerifierClientProcess("auth-ignored-client",
self.authIgnoredReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+AuthIgnoredTest().run()
diff --git a/tests/gold_tests/cache/cache-control.test.py
b/tests/gold_tests/cache/cache-control.test.py
index 809798b8fb..82cbd180a2 100644
--- a/tests/gold_tests/cache/cache-control.test.py
+++ b/tests/gold_tests/cache/cache-control.test.py
@@ -18,29 +18,343 @@ Test cached responses and requests with bodies
# limitations under the License.
Test.Summary = '''
-Test cached responses and cache-control directives
+Test cached responses and requests with bodies
'''
-# Basic cache operations: miss, hit, no-cache-control, stale, and
only-if-cached
-Test.ATSReplayTest(replay_file="replay/cache-control-basic.replay.yaml")
+Test.ContinueOnFail = True
+
+# Define default ATS
+ts = Test.MakeATSProcess("ts")
+server = Test.MakeOriginServer("server")
+
+# **testname is required**
+testName = ""
+request_header1 = {"headers": "GET / HTTP/1.1\r\nHost:
www.example.com\r\n\r\n", "timestamp": "1469733493.993", "body": ""}
+response_header1 = {
+ "headers": "HTTP/1.1 200 OK\r\nConnection: close\r\nCache-Control:
max-age=300\r\n\r\n",
+ "timestamp": "1469733493.993",
+ "body": "xxx"
+}
+request_header2 = {
+ "headers": "GET /no_cache_control HTTP/1.1\r\nHost:
www.example.com\r\n\r\n",
+ "timestamp": "1469733493.993",
+ "body": ""
+}
+response_header2 = {
+ "headers": "HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n",
+ "timestamp": "1469733493.993",
+ "body": "the flinstones"
+}
+request_header3 = {
+ "headers": "GET /max_age_10sec HTTP/1.1\r\nHost: www.example.com\r\n\r\n",
+ "timestamp": "1469733493.993",
+ "body": ""
+}
+response_header3 = {
+ "headers": "HTTP/1.1 200 OK\r\nConnection: close\r\nCache-Control:
max-age=10,public\r\n\r\n",
+ "timestamp": "1469733493.993",
+ "body": "yabadabadoo"
+}
+server.addResponse("sessionlog.json", request_header1, response_header1)
+server.addResponse("sessionlog.json", request_header2, response_header2)
+server.addResponse("sessionlog.json", request_header3, response_header3)
+
+# ATS Configuration
+ts.Disk.plugin_config.AddLine('xdebug.so --enable=x-cache,x-cache-key,via')
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http',
+ 'proxy.config.http.response_via_str': 3,
+ 'proxy.config.http.insert_age_in_response': 0,
+ })
+
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.Port))
+
+ipv4flag = ""
+if not Condition.CurlUsingUnixDomainSocket():
+ ipv4flag = "--ipv4"
+
+# Test 1 - 200 response and cache fill
+tr = Test.AddTestRun()
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(Test.Processes.ts)
+tr.MakeCurlCommand(
+ '-s -D - -v {ipv4} --http1.1 -H "x-debug: x-cache,via" -H "Host:
www.example.com" http://localhost:{port}/max_age_10sec'.format(
+ port=ts.Variables.port, ipv4=ipv4flag),
+ ts=ts)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stdout = "gold/cache_and_req_body-miss.gold"
+tr.StillRunningAfter = ts
+
+# Test 2 - 200 cached response and using netcat
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = "printf 'GET /max_age_10sec
HTTP/1.1\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host:
www.example.com\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(
+ port=ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stdout = "gold/cache_and_req_body-hit.gold"
+tr.StillRunningAfter = ts
+
+# Test 3 - response doesn't have cache control directive, so cache-miss every
+# time
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = "printf 'GET /no_cache_control
HTTP/1.1\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host:
www.example.com\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(
+ port=ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stdout = "gold/cache_no_cc.gold"
+tr.StillRunningAfter = ts
+
+# Test 4 - hit stale cache.
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = "sleep 15; printf 'GET /max_age_10sec
HTTP/1.1\r\n''x-debug: x-cache,x-cache-key,via\r\n''Host:
www.example.com\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(
+ port=ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stdout = "gold/cache_hit_stale.gold"
+tr.StillRunningAfter = ts
+
+# Test 5 - only-if-cached. 504 "Not Cached" should be returned if not in cache
+tr = Test.AddTestRun()
+tr.Processes.Default.Command = "printf 'GET /no_cache_control
HTTP/1.1\r\n''Cache-Control: only-if-cached\r\n''x-debug:
x-cache,x-cache-key,via\r\n''Host: www.example.com\r\n''Cache-control:
max-age=300\r\n''\r\n'|nc 127.0.0.1 -w 1 {port}".format(
+ port=ts.Variables.port)
+tr.Processes.Default.ReturnCode = 0
+tr.Processes.Default.Streams.stdout = "gold/cache_no_cache.gold"
+tr.StillRunningAfter = ts
+
+#
+# Verify correct handling of various max-age directives in both clients and
+# responses.
+#
+ts = Test.MakeATSProcess("ts-for-proxy-verifier")
+replay_file = "replay/cache-control-max-age.replay.yaml"
+server = Test.MakeVerifierServerProcess("proxy-verifier-server", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http',
+ 'proxy.config.http.insert_age_in_response': 0,
+
+ # Disable ignoring max-age in the client request so we can test that
+ # behavior too.
+ 'proxy.config.http.cache.ignore_client_cc_max_age': 0,
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr = Test.AddTestRun("Verify correct max-age cache-control behavior.")
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("proxy-verifier-client", replay_file,
http_ports=[ts.Variables.port])
+
+#
+# Verify correct handling of various s-maxage directives in responses.
+#
+ts = Test.MakeATSProcess("ts-s-maxage")
+replay_file = "replay/cache-control-s-maxage.replay.yaml"
+server = Test.MakeVerifierServerProcess("s-maxage-server", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http',
+ 'proxy.config.http.insert_age_in_response': 0,
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr = Test.AddTestRun("Verify correct max-age cache-control behavior.")
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("s-maxage-client", replay_file,
http_ports=[ts.Variables.port])
+
+#
+# Verify correct interaction between cache-control no-cache and pragma header
+#
+ts = Test.MakeATSProcess("ts-cache-control-pragma")
+ts.Disk.records_config.update({
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http|cache',
+})
+tr = Test.AddTestRun("Verify Pragma: no-cache does not conflict with
Cache-Control headers")
+replay_file = "replay/cache-control-pragma.replay.yaml"
+server = tr.AddVerifierServerProcess("pragma-server", replay_file)
+tr.AddVerifierClientProcess("pragma-client", replay_file,
http_ports=[ts.Variables.port])
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.StillRunningAfter = ts
+
+
+class RequestCacheControlDefaultTest:
+ # Verify the proper handling of cache-control directives in requests in
+ # default configuration
+ requestCacheControlReplayFile =
"replay/request-cache-control-default.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server = Test.MakeVerifierServerProcess(
+ "request-cache-control-default-verifier-server",
self.requestCacheControlReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-request-cache-control-default")
+ self.ts.Disk.records_config.update({
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ def runTraffic(self):
+ tr = Test.AddTestRun("Verify the proper handling of cache-control
directives in requests in default configuration")
+ tr.AddVerifierClientProcess(
+ "request-cache-control-default-client",
self.requestCacheControlReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+RequestCacheControlDefaultTest().run()
+
+
+class RequestCacheControlHonorClientTest:
+ # Verify the proper handling of cache-control directives in requests when
+ # ATS is configured to honor client's request to bypass the cache
+ requestCacheControlReplayFile =
"replay/request-cache-control-honor-client.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server = Test.MakeVerifierServerProcess(
+ "request-cache-control-honor-client-verifier-server",
self.requestCacheControlReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-request-cache-control-honor-client")
+ self.ts.Disk.records_config.update(
+ {
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ # Configured to honor client requests to bypass the cache
+ "proxy.config.http.cache.ignore_client_no_cache": 0
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ # Verify logs for the request containing no-cache
+ self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
+ "Revalidate document with server", "Verify that ATS honors the
no-cache and performs a revalidation.")
+ # Verify logs for the request containing no-store
+ self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
+ "client does not permit storing, and cache control does not say to
ignore client no-cache",
+ "Verify that ATS honors the no-store.")
+
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "Verify the proper handling of cache-control directives in
requests when ATS is configured to honor client's request to bypass the cache"
+ )
+ tr.AddVerifierClientProcess(
+ "request-cache-control-honor-client-client",
self.requestCacheControlReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+RequestCacheControlHonorClientTest().run()
+
+
+class ResponseCacheControlDefaultTest:
+ # Verify the proper handling of cache-control directives in responses in
+ # default configuration
+ responseCacheControlReplayFile =
"replay/response-cache-control-default.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server = Test.MakeVerifierServerProcess(
+ "response-cache-control-default-verifier-server",
self.responseCacheControlReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-response-cache-control-default")
+ self.ts.Disk.records_config.update({
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ # Verify logs for the response containing no-cache
+ self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
+ "Revalidate document with server", "Verify that ATS honors the
no-cache in response and performs a revalidation.")
+ # Verify logs for the response containing no-store
+ self.ts.Disk.traffic_out.Content += Testers.ContainsExpression(
+ "server does not permit storing and config file does not indicate
that server directive should be ignored",
+ "Verify that ATS honors the no-store in response and bypasses the
cache.")
+
+ def runTraffic(self):
+ tr = Test.AddTestRun("Verify the proper handling of cache-control
directives in responses in default configuration")
+ tr.AddVerifierClientProcess(
+ "response-cache-control-client-default",
self.responseCacheControlReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+ResponseCacheControlDefaultTest().run()
+
+
+class ResponseCacheControlIgnoredTest:
+ # Verify the proper handling of cache-control directives in responses when
+ # ATS is configured to ignore server's request to bypass the cache
+ responseCacheControlReplayFile =
"replay/response-cache-control-ignored.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
-# Max-age directives in both clients and responses
-Test.ATSReplayTest(replay_file="replay/cache-control-max-age.replay.yaml")
+ def setupOriginServer(self):
+ self.server = Test.MakeVerifierServerProcess(
+ "response-cache-control-ignored-verifier-server",
self.responseCacheControlReplayFile)
-# S-maxage directives in responses
-Test.ATSReplayTest(replay_file="replay/cache-control-s-maxage.replay.yaml")
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-response-cache-control-ignored")
+ self.ts.Disk.records_config.update(
+ {
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ "proxy.config.http.cache.ignore_server_no_cache": 1
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
-# Interaction between cache-control no-cache and pragma header
-Test.ATSReplayTest(replay_file="replay/cache-control-pragma.replay.yaml")
+ # Verify logs for the response containing no-cache or no-store
+ self.ts.Disk.traffic_out.Content += Testers.ExcludesExpression(
+ "Revalidate document with server",
+ "Verify that ATS ignores the no-cache in response and therefore
doesn't perform a revalidation.")
+ self.ts.Disk.traffic_out.Content += Testers.ExcludesExpression(
+ "server does not permit storing and config file does not indicate
that server directive should be ignored",
+ "Verify that ATS ignores the no-store in response and caches the
responses despite its presence.")
-# Request cache-control directives in default configuration
-Test.ATSReplayTest(replay_file="replay/request-cache-control-default.replay.yaml")
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "Verify the proper handling of cache-control directives in
responses when ATS is configured to ignore server's request to bypass the cache"
+ )
+ tr.AddVerifierClientProcess(
+ "response-cache-control-client-ignored",
self.responseCacheControlReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
-# Request cache-control directives when ATS honors client requests to bypass
cache
-Test.ATSReplayTest(replay_file="replay/request-cache-control-honor-client.replay.yaml")
+ def run(self):
+ self.runTraffic()
-# Response cache-control directives in default configuration
-Test.ATSReplayTest(replay_file="replay/response-cache-control-default.replay.yaml")
-# Response cache-control directives when ATS ignores server requests to bypass
cache
-Test.ATSReplayTest(replay_file="replay/response-cache-control-ignored.replay.yaml")
+ResponseCacheControlIgnoredTest().run()
diff --git a/tests/gold_tests/cache/cache-cookie.test.py
b/tests/gold_tests/cache/cache-cookie.test.py
index 6480540675..01d781a3fe 100644
--- a/tests/gold_tests/cache/cache-cookie.test.py
+++ b/tests/gold_tests/cache/cache-cookie.test.py
@@ -21,17 +21,203 @@ Test.Summary = '''
Test cookie-related caching behaviors
'''
-# Verify correct caching behavior in default configuration
-Test.ATSReplayTest(replay_file="replay/cookie-default.replay.yaml")
+Test.ContinueOnFail = True
-# Verify correct caching behavior when not caching responses to cookies
-Test.ATSReplayTest(replay_file="replay/cookie-bypass-cache.replay.yaml")
+# **testname is required**
+testName = ""
-# Verify correct caching behavior when caching only image responses to cookies
-Test.ATSReplayTest(replay_file="replay/cookie-cache-img-only.replay.yaml")
-# Verify correct caching behavior when caching all but text responses to
cookies
-Test.ATSReplayTest(replay_file="replay/cookie-all-but-text.replay.yaml")
+class CookieDefaultTest:
+ # Verify the correct caching behavior when ATS is in default configuration
+ cookieDefaultReplayFile = "replay/cookie-default.replay.yaml"
-# Verify correct caching behavior for all but text with exceptions
-Test.ATSReplayTest(replay_file="replay/cookie-all-but-text-with-excp.replay.yaml")
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server =
Test.MakeVerifierServerProcess("cookie-default-verifier-server",
self.cookieDefaultReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-cookie-default")
+ self.ts.Disk.records_config.update({
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ def runTraffic(self):
+ tr = Test.AddTestRun("Verify the correct caching behavior when ATS is
in default configuration")
+ tr.AddVerifierClientProcess("cookie-default-client",
self.cookieDefaultReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+CookieDefaultTest().run()
+
+
+class CookieBypassTest:
+ # Verify the correct caching behavior when ATS is configured to not cache
+ # response to cookie for any content type
+ cookieBypassReplayFile = "replay/cookie-bypass-cache.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server =
Test.MakeVerifierServerProcess("cookie-bypass-verifier-server",
self.cookieBypassReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-cookie-bypass")
+ self.ts.Disk.records_config.update(
+ {
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ # Bypass cache for any responses to cookies
+ "proxy.config.http.cache.cache_responses_to_cookies": 0
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "Verify the correct caching behavior when ATS is configured to not
cache response to cookie for any content type")
+ tr.AddVerifierClientProcess("cookie-bypass-client",
self.cookieBypassReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+CookieBypassTest().run()
+
+
+class CookieImgOnlyTest:
+ # Verify the correct caching behavior when ATS is configured to cache
+ # response to cookie only for image content type
+ cookieImgOnlyReplayFile = "replay/cookie-cache-img-only.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server =
Test.MakeVerifierServerProcess("cookie-img-only-verifier-server",
self.cookieImgOnlyReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-cookie-img-only")
+ self.ts.Disk.records_config.update(
+ {
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ # Cache only for image types
+ "proxy.config.http.cache.cache_responses_to_cookies": 2
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "Verify the correct caching behavior when ATS is configured to
cache response to cookie only for image content type")
+ tr.AddVerifierClientProcess("cookie-img-only-client",
self.cookieImgOnlyReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+CookieImgOnlyTest().run()
+
+
+class CookieAllButTextTest:
+ # Verify the correct caching behavior when ATS is configured to cache
+ # response to cookie for all but text types
+ cookieAllButTextReplayFile = "replay/cookie-all-but-text.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server =
Test.MakeVerifierServerProcess("cookie-all-but-text-verifier-server",
self.cookieAllButTextReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-cookie-all-but-text")
+ self.ts.Disk.records_config.update(
+ {
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ # Cache all content type except text
+ "proxy.config.http.cache.cache_responses_to_cookies": 3
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "Verify the correct caching behavior when ATS is configured to
cache response to cookie for all but text types")
+ tr.AddVerifierClientProcess(
+ "cookie-all-but-text-client", self.cookieAllButTextReplayFile,
http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+CookieAllButTextTest().run()
+
+
+class CookieAllButTextWithExcpTest:
+ # 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
+ cookieAllButTextReplayFile =
"replay/cookie-all-but-text-with-excp.replay.yaml"
+
+ def __init__(self):
+ self.setupOriginServer()
+ self.setupTS()
+
+ def setupOriginServer(self):
+ self.server = Test.MakeVerifierServerProcess(
+ "cookie-all-but-text-with-excp-verifier-server",
self.cookieAllButTextReplayFile)
+
+ def setupTS(self):
+ self.ts = Test.MakeATSProcess("ts-cookie-all-but-text-with-excp")
+ self.ts.Disk.records_config.update(
+ {
+ "proxy.config.diags.debug.enabled": 1,
+ "proxy.config.diags.debug.tags": "http",
+ # Cache all content type but text. Text type also gets cached
for
+ # server responses without Set-Cookie or with Cache-Control:
public
+ "proxy.config.http.cache.cache_responses_to_cookies": 4
+ })
+ self.ts.Disk.remap_config.AddLine(f"map /
http://127.0.0.1:{self.server.Variables.http_port}/",)
+
+ def runTraffic(self):
+ tr = Test.AddTestRun(
+ "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"
+ )
+ tr.AddVerifierClientProcess(
+ "cookie-all-but-text-with-excp-client",
self.cookieAllButTextReplayFile, http_ports=[self.ts.Variables.port])
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.ts)
+ tr.StillRunningAfter = self.server
+ tr.StillRunningAfter = self.ts
+
+ def run(self):
+ self.runTraffic()
+
+
+CookieAllButTextWithExcpTest().run()
diff --git a/tests/gold_tests/cache/cache-range-response.test.py
b/tests/gold_tests/cache/cache-range-response.test.py
index f82ee7940d..4202095f07 100644
--- a/tests/gold_tests/cache/cache-range-response.test.py
+++ b/tests/gold_tests/cache/cache-range-response.test.py
@@ -21,5 +21,19 @@ Test.Summary = '''
Verify correct caching behavior for range requests.
'''
-# Verify range request is transformed from a 200 response.
-Test.ATSReplayTest(replay_file="replay/cache-range-response.replay.yaml")
+ts = Test.MakeATSProcess("ts")
+replay_file = "replay/cache-range-response.replay.yaml"
+server = Test.MakeVerifierServerProcess("server0", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http.*|cache.*',
+ 'proxy.config.http.cache.range.write': 1,
+ 'proxy.config.http.cache.when_to_revalidate': 4,
+ 'proxy.config.http.insert_response_via_str': 3,
+ })
+ts.Disk.remap_config.AddLine(f'map /
http://127.0.0.1:{server.Variables.http_port}')
+tr = Test.AddTestRun("Verify range request is transformed from a 200 response")
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client0", replay_file,
http_ports=[ts.Variables.port])
diff --git a/tests/gold_tests/cache/cache-request-method.test.py
b/tests/gold_tests/cache/cache-request-method.test.py
index 6e702a222e..21fd65517d 100644
--- a/tests/gold_tests/cache/cache-request-method.test.py
+++ b/tests/gold_tests/cache/cache-request-method.test.py
@@ -21,14 +21,78 @@ Test.Summary = '''
Verify correct caching behavior with respect to request method.
'''
-# Verify correct POST response handling when caching POST responses is disabled
-Test.ATSReplayTest(replay_file="replay/post_with_post_caching_disabled.replay.yaml")
+# Test 0: Verify correct POST response handling when caching POST responses is
+# disabled.
+tr = Test.AddTestRun("Verify correct with POST response caching disabled.")
+ts = tr.MakeATSProcess("ts")
+replay_file = "replay/post_with_post_caching_disabled.replay.yaml"
+server = tr.AddVerifierServerProcess("server0", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http.*|cache.*',
+ 'proxy.config.http.insert_age_in_response': 0,
-# Verify correct POST response handling when caching POST responses is enabled
-Test.ATSReplayTest(replay_file="replay/post_with_post_caching_enabled.replay.yaml")
+ # Caching of POST responses is disabled by default. Verify default
behavior
+ # by leaving it unconfigured.
+ # 'proxy.config.http.cache.post_method': 0,
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client0", replay_file,
http_ports=[ts.Variables.port])
-# Verify correct POST response handling when caching POST responses is enabled
via overridable config
-Test.ATSReplayTest(replay_file="replay/post_with_post_caching_override.replay.yaml")
+# Test 1: Verify correct POST response handling when caching POST responses is
+# enabled.
+tr = Test.AddTestRun("Verify correct with POST response caching enabled.")
+ts = tr.MakeATSProcess("ts-cache-post")
+replay_file = "replay/post_with_post_caching_enabled.replay.yaml"
+server = tr.AddVerifierServerProcess("server1", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http.*|cache.*',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.http.cache.post_method': 1,
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client1", replay_file,
http_ports=[ts.Variables.port])
-# Verify correct HEAD response handling with cached GET response
-Test.ATSReplayTest(replay_file="replay/head_with_get_cached.replay.yaml")
+# Test 2: Verify correct POST response handling when caching POST responses is
+# enabled via an overridable config.
+tr = Test.AddTestRun("Verify correct with POST response caching enabled
overridably.")
+ts = tr.MakeATSProcess("ts-cache-post-override")
+replay_file = "replay/post_with_post_caching_enabled.replay.yaml"
+server = tr.AddVerifierServerProcess("server2", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http.*|cache.*',
+ 'proxy.config.http.insert_age_in_response': 0,
+ # Override the following in remap.config.
+ 'proxy.config.http.cache.post_method': 0,
+ })
+ts.Disk.remap_config.AddLine(
+ f'map / http://127.0.0.1:{server.Variables.http_port} '
+ '@plugin=conf_remap.so @pparam=proxy.config.http.cache.post_method=1')
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client2", replay_file,
http_ports=[ts.Variables.port])
+
+# Test 3: Verify correct HEAD response handling with cached GET response
+tr = Test.AddTestRun("Verify correct with HEAD response.")
+ts = tr.MakeATSProcess("ts-cache-head")
+replay_file = "replay/head_with_get_cached.replay.yaml"
+server = tr.AddVerifierServerProcess("server3", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http.*|cache.*',
+ 'proxy.config.http.insert_age_in_response': 0,
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client3", replay_file,
http_ports=[ts.Variables.port])
diff --git a/tests/gold_tests/cache/conditional-get-hit.test.py
b/tests/gold_tests/cache/conditional-get-hit.test.py
index 22b15e5295..f3df0a1f4e 100644
--- a/tests/gold_tests/cache/conditional-get-hit.test.py
+++ b/tests/gold_tests/cache/conditional-get-hit.test.py
@@ -21,5 +21,18 @@ Test.Summary = '''
Test conditional get with body drains the body from client"
'''
-# Verify conditional get with cache hit drains client body.
-Test.ATSReplayTest(replay_file="replay/conditional-get-cache-hit.yaml")
+ts = Test.MakeATSProcess("ts-conditional-get-caching")
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http|cache',
+ 'proxy.config.http.cache.max_stale_age': 6,
+ })
+tr = Test.AddTestRun("Verify conditional get with cache hit drain client body")
+replay_file = "replay/conditional-get-cache-hit.yaml"
+server = tr.AddVerifierServerProcess("server1", replay_file)
+server_port = server.Variables.http_port
+tr.AddVerifierClientProcess("client1", replay_file,
http_ports=[ts.Variables.port])
+ts.Disk.remap_config.AddLine('map / http://127.0.0.1:{0}'.format(server_port))
+tr.Processes.Default.StartBefore(ts)
+tr.StillRunningAfter = ts
diff --git a/tests/gold_tests/cache/gold/cache_and_req_body-hit.gold
b/tests/gold_tests/cache/gold/cache_and_req_body-hit.gold
new file mode 100644
index 0000000000..34bb179c50
--- /dev/null
+++ b/tests/gold_tests/cache/gold/cache_and_req_body-hit.gold
@@ -0,0 +1,10 @@
+HTTP/1.1 200 OK
+Cache-Control: max-age=10,public
+Content-Length: 11
+Date: ``
+Connection: keep-alive
+Via: ``
+Server: ``
+X-Cache: hit-fresh
+``
+yabadabadoo``
diff --git a/tests/gold_tests/cache/gold/cache_and_req_body-miss.gold
b/tests/gold_tests/cache/gold/cache_and_req_body-miss.gold
new file mode 100644
index 0000000000..33efb4bac0
--- /dev/null
+++ b/tests/gold_tests/cache/gold/cache_and_req_body-miss.gold
@@ -0,0 +1,10 @@
+HTTP/1.1 200 OK
+Cache-Control: max-age=10,public
+Content-Length: 11
+Date: ``
+Connection: keep-alive
+Via: ``
+Server: ``
+X-Cache: miss
+``
+yabadabadoo``
diff --git a/tests/gold_tests/cache/gold/cache_hit_stale.gold
b/tests/gold_tests/cache/gold/cache_hit_stale.gold
new file mode 100644
index 0000000000..25a3d6670c
--- /dev/null
+++ b/tests/gold_tests/cache/gold/cache_hit_stale.gold
@@ -0,0 +1,10 @@
+HTTP/1.1 200 OK
+Cache-Control: max-age=10,public
+Content-Length: 11
+Date: ``
+Connection: keep-alive
+Via: ``
+Server: ``
+X-Cache: hit-stale
+``
+yabadabadoo``
diff --git a/tests/gold_tests/cache/gold/cache_no_cache.gold
b/tests/gold_tests/cache/gold/cache_no_cache.gold
new file mode 100644
index 0000000000..6cadfa0c28
--- /dev/null
+++ b/tests/gold_tests/cache/gold/cache_no_cache.gold
@@ -0,0 +1,12 @@
+HTTP/1.1 504 Not Cached ``
+Date: ``
+Connection: keep-alive
+Via: http/1.1 ``
+Server: ``
+Cache-Control: no-store
+Content-Type: text/html
+Content-Language: en
+``
+X-Cache: miss
+Content-Length: 340
+``
diff --git a/tests/gold_tests/cache/gold/cache_no_cc.gold
b/tests/gold_tests/cache/gold/cache_no_cc.gold
new file mode 100644
index 0000000000..7f50b005e6
--- /dev/null
+++ b/tests/gold_tests/cache/gold/cache_no_cc.gold
@@ -0,0 +1,9 @@
+HTTP/1.1 200 OK
+Content-Length: 14
+Date: ``
+Connection: keep-alive
+Via: ``
+Server: ``
+X-Cache: miss
+``
+the flinstones``
diff --git a/tests/gold_tests/cache/negative-caching.test.py
b/tests/gold_tests/cache/negative-caching.test.py
index 0e09ae17bb..bcd0868aef 100644
--- a/tests/gold_tests/cache/negative-caching.test.py
+++ b/tests/gold_tests/cache/negative-caching.test.py
@@ -21,18 +21,66 @@ Test.Summary = '''
Test negative caching.
'''
-# Negative caching disabled
-Test.ATSReplayTest(replay_file="replay/negative-caching-disabled.replay.yaml")
+#
+# Negative caching disabled.
+#
+ts = Test.MakeATSProcess("ts-disabled")
+replay_file = "replay/negative-caching-disabled.replay.yaml"
+server = Test.MakeVerifierServerProcess("server-disabled", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.http.negative_caching_enabled': 0
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr = Test.AddTestRun("Verify correct behavior without negative caching
enabled.")
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client-disabled", replay_file,
http_ports=[ts.Variables.port])
-# Negative caching enabled with default configuration
-Test.ATSReplayTest(replay_file="replay/negative-caching-default.replay.yaml")
+#
+# Negative caching enabled with otherwise default configuration.
+#
+ts = Test.MakeATSProcess("ts-default")
+replay_file = "replay/negative-caching-default.replay.yaml"
+server = Test.MakeVerifierServerProcess("server-default", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.http.negative_caching_enabled': 1
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr = Test.AddTestRun("Verify default negative caching behavior")
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client-default", replay_file,
http_ports=[ts.Variables.port])
-# Customized response caching for negative caching configuration
-Test.ATSReplayTest(replay_file="replay/negative-caching-customized.replay.yaml")
+#
+# Customized response caching for negative caching configuration.
+#
+ts = Test.MakeATSProcess("ts-customized")
+replay_file = "replay/negative-caching-customized.replay.yaml"
+server = Test.MakeVerifierServerProcess("server-customized", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.http.negative_caching_enabled': 1,
+ 'proxy.config.http.negative_caching_list': "400"
+ })
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+tr = Test.AddTestRun("Verify customized negative caching list")
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client-customized", replay_file,
http_ports=[ts.Variables.port])
#
# Verify correct proxy.config.http.negative_caching_lifetime behavior.
-# These tests require multiple test runs with shared ATS processes, so use
class-based approach.
#
ts = Test.MakeATSProcess("ts-lifetime")
ts.Disk.records_config.update(
diff --git a/tests/gold_tests/cache/negative-revalidating.test.py
b/tests/gold_tests/cache/negative-revalidating.test.py
index 30071d147e..e80c577827 100644
--- a/tests/gold_tests/cache/negative-revalidating.test.py
+++ b/tests/gold_tests/cache/negative-revalidating.test.py
@@ -21,11 +21,78 @@ Test.Summary = '''
Test the negative revalidating feature.
'''
-# Verify negative revalidating disabled
-Test.ATSReplayTest(replay_file="replay/negative-revalidating-disabled.replay.yaml")
-# Verify negative revalidating enabled
-Test.ATSReplayTest(replay_file="replay/negative-revalidating-enabled.replay.yaml")
+class NegativeRevalidatingTest:
+ _test_num: int = 0
-# Verify negative_revalidating_list behavior
-Test.ATSReplayTest(replay_file="replay/negative-revalidating-list.replay.yaml")
+ def __init__(self, name: str, records_config: dict, replay_file: str):
+ self._tr = Test.AddTestRun(name)
+ self._replay_file = replay_file
+
+ self.__setupOriginServer()
+ self.__setupTS(records_config)
+ self.__setupClient()
+
+ NegativeRevalidatingTest._test_num += 1
+
+ def __setupClient(self):
+ self._tr.AddVerifierClientProcess(
+ f"client-{NegativeRevalidatingTest._test_num}", self._replay_file,
http_ports=[self._ts.Variables.port])
+
+ def __setupOriginServer(self):
+ self._server =
self._tr.AddVerifierServerProcess(f"server-{NegativeRevalidatingTest._test_num}",
self._replay_file)
+
+ def __setupTS(self, records_config):
+ self._ts =
Test.MakeATSProcess(f"ts-{NegativeRevalidatingTest._test_num}")
+ self._ts.Disk.records_config.update(records_config)
+ self._ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(self._server.Variables.http_port))
+
+ def run(self):
+ self._tr.Processes.Default.StartBefore(self._ts)
+ self._tr.StillRunningAfter = self._ts
+
+
+#
+# Verify disabled negative_revalidating behavior.
+#
+NegativeRevalidatingTest(
+ "Verify negative revalidating disabled", {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http|cache',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.http.insert_response_via_str': 2,
+ 'proxy.config.http.negative_revalidating_enabled': 0,
+ 'proxy.config.http.cache.max_stale_age': 6
+ }, "replay/negative-revalidating-disabled.replay.yaml").run()
+
+#
+# Verify enabled negative_revalidating behavior.
+#
+NegativeRevalidatingTest(
+ "Verify negative revalidating enabled",
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http|cache',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.http.insert_response_via_str': 2,
+
+ # Negative revalidating is on by default. Verify this by leaving out
the
+ # following line and expect negative_revalidating to be enabled.
+ # 'proxy.config.http.negative_revalidating_enabled': 1,
+ 'proxy.config.http.cache.max_stale_age': 6
+ },
+ "replay/negative-revalidating-enabled.replay.yaml").run()
+
+#
+# Verify negative_revalidating list behavior.
+#
+NegativeRevalidatingTest(
+ "Verify negative_revalidating_list behavior", {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http|cache',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.http.insert_response_via_str': 2,
+ 'proxy.config.http.cache.max_stale_age': 6,
+ 'proxy.config.http.negative_revalidating_enabled': 1,
+ 'proxy.config.http.negative_revalidating_list': "403 404"
+ }, "replay/negative-revalidating-list.replay.yaml").run()
diff --git a/tests/gold_tests/cache/proxy_serve_stale.test.py
b/tests/gold_tests/cache/proxy_serve_stale.test.py
index 43c0bebd54..252a50a958 100644
--- a/tests/gold_tests/cache/proxy_serve_stale.test.py
+++ b/tests/gold_tests/cache/proxy_serve_stale.test.py
@@ -20,5 +20,50 @@ Test child proxy serving stale content when parents are
exhausted
Test.testName = "proxy_serve_stale"
Test.ContinueOnFail = True
-# Verify that stale content is served when the parent is down.
-Test.ATSReplayTest(replay_file="replay/proxy_serve_stale.replay.yaml")
+
+class ProxyServeStaleTest:
+ """Verify that stale content is served when the parent is down."""
+
+ single_transaction_replay = "replay/proxy_serve_stale.replay.yaml"
+ ts_parent_hostname = "localhost:82"
+
+ def __init__(self):
+ """Initialize the test."""
+ self._configure_server()
+ self._configure_ts()
+
+ def _configure_server(self):
+ self.server = Test.MakeVerifierServerProcess("server",
self.single_transaction_replay)
+ self.nameserver = Test.MakeDNServer("dns", default='127.0.0.1')
+
+ def _configure_ts(self):
+ self.ts_child = Test.MakeATSProcess("ts_child")
+ # Config child proxy to route to parent proxy
+ self.ts_child.Disk.records_config.update(
+ {
+ 'proxy.config.http.push_method_enabled': 1,
+ 'proxy.config.http.parent_proxy.fail_threshold': 2,
+ 'proxy.config.http.parent_proxy.total_connect_attempts': 1,
+ 'proxy.config.http.cache.max_stale_age': 10,
+ 'proxy.config.http.parent_proxy.self_detect': 0,
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags':
'cache|http|dns|hostdb|parent_proxy',
+ 'proxy.config.dns.nameservers':
f"127.0.0.1:{self.nameserver.Variables.Port}",
+ })
+ self.ts_child.Disk.parent_config.AddLine(
+ f'dest_domain=. parent="{self.ts_parent_hostname}"
round_robin=consistent_hash go_direct=false')
+ self.ts_child.Disk.remap_config.AddLine(f'map /
http://localhost:{self.server.Variables.http_port}')
+
+ def run(self):
+ """Run the test cases."""
+
+ tr = Test.AddTestRun()
+ tr.AddVerifierClientProcess('client', self.single_transaction_replay,
http_ports=[self.ts_child.Variables.port])
+ tr.Processes.Default.ReturnCode = 0
+ tr.StillRunningAfter = self.ts_child
+ tr.Processes.Default.StartBefore(self.server)
+ tr.Processes.Default.StartBefore(self.nameserver)
+ tr.Processes.Default.StartBefore(self.ts_child)
+
+
+ProxyServeStaleTest().run()
diff --git a/tests/gold_tests/cache/replay/alternate-caching-update-size.yaml
b/tests/gold_tests/cache/replay/alternate-caching-update-size.yaml
index 8031f2019c..ddc4a46194 100644
--- a/tests/gold_tests/cache/replay/alternate-caching-update-size.yaml
+++ b/tests/gold_tests/cache/replay/alternate-caching-update-size.yaml
@@ -50,34 +50,6 @@ meta:
- [ Accept-Language, es_US ]
delay: 100ms
-autest:
- description: 'Verify disabled negative revalidating behavior'
-
- server:
- name: 'server-alternate-caching'
-
- client:
- name: 'client-alternate-caching'
-
- ats:
- name: 'ts-alternate-caching'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http|cache'
- proxy.config.http.cache.max_stale_age: 6
- proxy.config.cache.select_alternate: 1
- proxy.config.cache.limits.http.max_alts: 4
- proxy.config.http.negative_revalidating_enabled: 1
- proxy.config.http.negative_caching_enabled: 1
- proxy.config.http.negative_caching_lifetime: 30
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# These first two requests just store the two alternats for this url
diff --git a/tests/gold_tests/cache/replay/auth-default.replay.yaml
b/tests/gold_tests/cache/replay/auth-default.replay.yaml
new file mode 100644
index 0000000000..d68cdffc50
--- /dev/null
+++ b/tests/gold_tests/cache/replay/auth-default.replay.yaml
@@ -0,0 +1,68 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This replay file assumes that caching is enabled and
+# proxy.config.http.cache.ignore_authentication is set to 0(current default)
+#
+meta:
+ version: "1.0"
+
+sessions:
+ - transactions:
+ # Verify the response containing WWW-Authenticate is not cached
+ - client-request:
+ method: "GET"
+ version: "1.1"
+ url: /cc/auth
+ headers:
+ fields:
+ - [uuid, cc-www-auth-response]
+ - [Host, example.com]
+
+ server-response:
+ status: 401
+ reason: Unauthorized
+ headers:
+ fields:
+ - [Content-Length, 4]
+ - [Cache-Control, "max-age=5"]
+ - [WWW-Authenticate, "Basic"]
+
+ proxy-response:
+ status: 401
+
+ # Re-request to make sure the previous response was not cached
+ - client-request:
+ # Add a delay so ATS has time to finish any caching IO for the
+ # previous transaction.
+ delay: 100ms
+ method: "GET"
+ version: "1.1"
+ url: /cc/auth
+ headers:
+ fields:
+ - [uuid, cc-www-auth-response-verify]
+ - [Host, example.com]
+ - [Authorization, "Basic ZGVtbzphdHNAc3Ryb25ncHc="]
+
+ server-response:
+ status: 200
+ reason: OK
+
+ # Verify that the new 200 response is returned instead of the 401
+ proxy-response:
+ status: 200
diff --git a/tests/gold_tests/cache/replay/auth-ignored.replay.yaml
b/tests/gold_tests/cache/replay/auth-ignored.replay.yaml
new file mode 100644
index 0000000000..b0361fffcc
--- /dev/null
+++ b/tests/gold_tests/cache/replay/auth-ignored.replay.yaml
@@ -0,0 +1,67 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#
+# This replay file assumes that caching is enabled and
+# proxy.config.http.cache.ignore_authentication is set to 1
+#
+meta:
+ version: "1.0"
+
+sessions:
+ - transactions:
+ # Verify that response containing WWW-Authenticate is cached
+ - client-request:
+ method: "GET"
+ version: "1.1"
+ url: /cc/auth
+ headers:
+ fields:
+ - [uuid, cc-www-auth-response]
+ - [Host, example.com]
+
+ server-response:
+ status: 401
+ reason: Unauthorized
+ headers:
+ fields:
+ - [Content-Length, 4]
+ - [Cache-Control, "max-age=5"]
+ - [WWW-Authenticate, "Basic"]
+
+ proxy-response:
+ status: 401
+ # Re-request to make sure the previous response was not cached
+ - client-request:
+ # Add a delay so ATS has time to finish any caching IO for the
+ # previous transaction.
+ delay: 100ms
+ method: "GET"
+ version: "1.1"
+ url: /cc/auth
+ headers:
+ fields:
+ - [uuid, cc-www-auth-response-verify]
+ - [Host, example.com]
+ - [Authorization, "Basic ZGVtbzphdHNAc3Ryb25ncHc="]
+
+ server-response:
+ status: 200
+ reason: OK
+
+ # Verify that the cached 401 response is returned
+ proxy-response:
+ status: 401
diff --git a/tests/gold_tests/cache/replay/cache-control-basic.replay.yaml
b/tests/gold_tests/cache/replay/cache-control-basic.replay.yaml
deleted file mode 100644
index 58b4c974a8..0000000000
--- a/tests/gold_tests/cache/replay/cache-control-basic.replay.yaml
+++ /dev/null
@@ -1,218 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-meta:
- version: "1.0"
-
-# Configuration section for autest integration
-autest:
- description: 'Test basic cache operations: miss, hit, no-cache-control,
stale, and only-if-cached'
-
- dns:
- name: 'dns-cache-basic'
-
- server:
- name: 'server-cache-basic'
-
- client:
- name: 'client-cache-basic'
-
- ats:
- name: 'ts-cache-basic'
- process_config:
- enable_cache: true
-
- plugin_config:
- - 'xdebug.so --enable=x-cache,x-cache-key,via'
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.response_via_str: 3
- proxy.config.http.insert_age_in_response: 0
-
- remap_config:
- - from: "http://www.example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
-sessions:
-- transactions:
-
- #############################################################################
- # Test 1: Cache miss - populate cache with max-age=1
- #############################################################################
- - client-request:
- method: GET
- url: /cacheable
- version: '1.1'
- headers:
- fields:
- - [Host, www.example.com]
- - [x-debug, "x-cache,x-cache-key,via"]
- - [uuid, cache-miss]
-
- server-response:
- status: 200
- reason: OK
- headers:
- fields:
- - [Content-Type, text/plain]
- - [Content-Length, "3"]
- - [Cache-Control, "max-age=1"]
- content:
- encoding: plain
- data: xxx
-
- proxy-response:
- status: 200
- headers:
- fields:
- - [Cache-Control, { value: "max-age=1", as: equal }]
- - [X-Cache, { value: "miss", as: equal }]
- - [X-Cache-Key, { value: "http://", as: contains }]
- content:
- encoding: plain
- data: xxx
- verify: { as: equal }
-
- #############################################################################
- # Test 2: Cache hit-fresh - retrieve from cache
- #############################################################################
- - client-request:
- delay: 100ms
- method: GET
- url: /cacheable
- version: '1.1'
- headers:
- fields:
- - [Host, www.example.com]
- - [x-debug, "x-cache,x-cache-key,via"]
- - [uuid, cache-hit]
-
- # Server should not receive this request (it's cached)
- server-response:
- status: 404
- reason: Not Found
-
- # Expect cached 200 response
- proxy-response:
- status: 200
- headers:
- fields:
- - [Cache-Control, { value: "max-age=1", as: equal }]
- - [X-Cache, { value: "hit-fresh", as: equal }]
- content:
- encoding: plain
- data: xxx
- verify: { as: equal }
-
- #############################################################################
- # Test 3: No cache-control - response without caching directive (cache miss)
- #############################################################################
- - client-request:
- method: GET
- url: /no_cache_control
- version: '1.1'
- headers:
- fields:
- - [Host, www.example.com]
- - [x-debug, "x-cache,x-cache-key,via"]
- - [uuid, no-cache-control]
-
- server-response:
- status: 200
- reason: OK
- headers:
- fields:
- - [Content-Type, text/plain]
- - [Content-Length, "14"]
- # No Cache-Control header
- content:
- encoding: plain
- data: "the flinstones"
-
- proxy-response:
- status: 200
- headers:
- fields:
- - [X-Cache, { value: "miss", as: equal }]
- content:
- encoding: plain
- data: "the flinstones"
- verify: { as: equal }
-
- #############################################################################
- # Test 4: Hit stale cache - wait for cache entry to become stale
- #############################################################################
- - client-request:
- # Wait for the cache entry from Test 1 to become stale
- delay: 2s
- method: GET
- url: /cacheable
- version: '1.1'
- headers:
- fields:
- - [Host, www.example.com]
- - [x-debug, "x-cache,x-cache-key,via"]
- - [uuid, cache-hit-stale]
-
- # Server should receive revalidation request
- server-response:
- status: 200
- reason: OK
- headers:
- fields:
- - [Content-Type, text/plain]
- - [Content-Length, "3"]
- - [Cache-Control, "max-age=1"]
- content:
- encoding: plain
- data: xxx
-
- proxy-response:
- status: 200
- headers:
- fields:
- - [X-Cache, { value: "hit-stale", as: equal }]
-
- #############################################################################
- # Test 5: only-if-cached - should return 504 if not in cache
- #############################################################################
- - client-request:
- method: GET
- url: /not_in_cache
- version: '1.1'
- headers:
- fields:
- - [Host, www.example.com]
- - [Cache-Control, "only-if-cached"]
- - [x-debug, "x-cache,x-cache-key,via"]
- - [uuid, only-if-cached]
-
- # Server should not be contacted for only-if-cached requests
- server-response:
- status: 200
- reason: OK
-
- # Should get 504 Not Cached
- proxy-response:
- status: 504
- reason: "Not Cached"
- headers:
- fields:
- - [X-Cache, { value: "miss", as: equal }]
- - [Cache-Control, { value: "no-store", as: equal }]
-
diff --git a/tests/gold_tests/cache/replay/cache-control-max-age.replay.yaml
b/tests/gold_tests/cache/replay/cache-control-max-age.replay.yaml
index 2a1fdec6fa..d97bf1531d 100644
--- a/tests/gold_tests/cache/replay/cache-control-max-age.replay.yaml
+++ b/tests/gold_tests/cache/replay/cache-control-max-age.replay.yaml
@@ -23,35 +23,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- description: 'Verify correct handling of various max-age directives in both
clients and responses'
-
- dns:
- name: 'dns-max_age'
-
- server:
- name: 'proxy-verifier-server'
-
- client:
- name: 'proxy-verifier-client'
-
- ats:
- name: 'ts-for-proxy-verifier'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.insert_age_in_response: 0
- # Disable ignoring max-age in the client request so we can test that
behavior too.
- proxy.config.http.cache.ignore_client_cc_max_age: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
blocks:
- request_for_positive_max_age: &request_for_positive_max_age
client-request:
diff --git a/tests/gold_tests/cache/replay/cache-control-pragma.replay.yaml
b/tests/gold_tests/cache/replay/cache-control-pragma.replay.yaml
index a691977d09..5cd5713178 100644
--- a/tests/gold_tests/cache/replay/cache-control-pragma.replay.yaml
+++ b/tests/gold_tests/cache/replay/cache-control-pragma.replay.yaml
@@ -23,32 +23,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- description: 'Verify correct interaction between cache-control no-cache and
pragma header'
-
- dns:
- name: 'dns-pragma'
-
- server:
- name: 'pragma-server'
-
- client:
- name: 'pragma-client'
-
- ats:
- name: 'ts-cache-control-pragma'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http|cache'
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Pragma: no-cache will prevent caching
diff --git a/tests/gold_tests/cache/replay/cache-control-s-maxage.replay.yaml
b/tests/gold_tests/cache/replay/cache-control-s-maxage.replay.yaml
index 6bab36d567..f8cd29dbfd 100644
--- a/tests/gold_tests/cache/replay/cache-control-s-maxage.replay.yaml
+++ b/tests/gold_tests/cache/replay/cache-control-s-maxage.replay.yaml
@@ -21,33 +21,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- description: 'Verify correct handling of various s-maxage directives in
responses'
-
- dns:
- name: 'dns-s_maxage'
-
- server:
- name: 's-maxage-server'
-
- client:
- name: 's-maxage-client'
-
- ats:
- name: 'ts-s-maxage'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.insert_age_in_response: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
blocks:
- request_for_positive_s_maxage: &request_for_positive_s_maxage
client-request:
diff --git a/tests/gold_tests/cache/replay/cache-range-response.replay.yaml
b/tests/gold_tests/cache/replay/cache-range-response.replay.yaml
index 0ebde6ac77..0bb4d2271e 100644
--- a/tests/gold_tests/cache/replay/cache-range-response.replay.yaml
+++ b/tests/gold_tests/cache/replay/cache-range-response.replay.yaml
@@ -18,31 +18,6 @@
meta:
version: "1.0"
-autest:
- description: 'Verify correct caching behavior for range requests'
-
- server:
- name: 'server-range-response'
-
- client:
- name: 'client-range-response'
-
- ats:
- name: 'ts-range-response'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http.*|cache.*'
- proxy.config.http.cache.range.write: 1
- proxy.config.http.cache.when_to_revalidate: 4
- proxy.config.http.insert_response_via_str: 3
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Populate the cache with a response to a GET request.
diff --git a/tests/gold_tests/cache/replay/conditional-get-cache-hit.yaml
b/tests/gold_tests/cache/replay/conditional-get-cache-hit.yaml
index 21b052ae88..a1d838f5d0 100644
--- a/tests/gold_tests/cache/replay/conditional-get-cache-hit.yaml
+++ b/tests/gold_tests/cache/replay/conditional-get-cache-hit.yaml
@@ -17,29 +17,6 @@
meta:
version: "1.0"
-autest:
- description: 'Verify conditional get with cache hit drains client body'
-
- server:
- name: 'server-conditional-get'
-
- client:
- name: 'client-conditional-get'
-
- ats:
- name: 'ts-conditional-get-caching'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http|cache'
- proxy.config.http.cache.max_stale_age: 6
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Cache a request
diff --git
a/tests/gold_tests/cache/replay/cookie-all-but-text-with-excp.replay.yaml
b/tests/gold_tests/cache/replay/cookie-all-but-text-with-excp.replay.yaml
index cbfe991837..77cefbc47f 100644
--- a/tests/gold_tests/cache/replay/cookie-all-but-text-with-excp.replay.yaml
+++ b/tests/gold_tests/cache/replay/cookie-all-but-text-with-excp.replay.yaml
@@ -23,34 +23,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-cookie_all_but_text_with_excp'
- description: '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'
-
- server:
- name: 'cookie-all-but-text-with-excp-verifier-server'
-
- client:
- name: 'cookie-all-but-text-with-excp-client'
-
- ats:
- name: 'ts-cookie-all-but-text-with-excp'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- # Cache all content type but text. Text type also gets cached for
- # server responses without Set-Cookie or with Cache-Control: public
- proxy.config.http.cache.cache_responses_to_cookies: 4
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Verify that response containing Set-Cookie with image content type is
diff --git a/tests/gold_tests/cache/replay/cookie-all-but-text.replay.yaml
b/tests/gold_tests/cache/replay/cookie-all-but-text.replay.yaml
index a0390c52eb..aa8a6e2a56 100644
--- a/tests/gold_tests/cache/replay/cookie-all-but-text.replay.yaml
+++ b/tests/gold_tests/cache/replay/cookie-all-but-text.replay.yaml
@@ -22,33 +22,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-cookie_all_but_text'
- description: 'Verify the correct caching behavior when ATS is configured to
cache response to cookie for all but text types'
-
- server:
- name: 'cookie-all-but-text-verifier-server'
-
- client:
- name: 'cookie-all-but-text-client'
-
- ats:
- name: 'ts-cookie-all-but-text'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- # Cache all content type except text
- proxy.config.http.cache.cache_responses_to_cookies: 3
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Verify that response containing Set-Cookie with image content type is
diff --git a/tests/gold_tests/cache/replay/cookie-bypass-cache.replay.yaml
b/tests/gold_tests/cache/replay/cookie-bypass-cache.replay.yaml
index 9e0ab697ac..eda1128554 100644
--- a/tests/gold_tests/cache/replay/cookie-bypass-cache.replay.yaml
+++ b/tests/gold_tests/cache/replay/cookie-bypass-cache.replay.yaml
@@ -22,33 +22,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-cookie_bypass_cache'
- description: 'Verify the correct caching behavior when ATS is configured to
not cache response to cookie for any content type'
-
- server:
- name: 'cookie-bypass-verifier-server'
-
- client:
- name: 'cookie-bypass-client'
-
- ats:
- name: 'ts-cookie-bypass'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- # Bypass cache for any responses to cookies
- proxy.config.http.cache.cache_responses_to_cookies: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Verify that response containing Set-Cookie with text content type is
not
diff --git a/tests/gold_tests/cache/replay/cookie-cache-img-only.replay.yaml
b/tests/gold_tests/cache/replay/cookie-cache-img-only.replay.yaml
index e95cdc66f2..2b377eb232 100644
--- a/tests/gold_tests/cache/replay/cookie-cache-img-only.replay.yaml
+++ b/tests/gold_tests/cache/replay/cookie-cache-img-only.replay.yaml
@@ -22,33 +22,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-cookie_cache_img_only'
- description: 'Verify the correct caching behavior when ATS is configured to
cache response to cookie only for image content type'
-
- server:
- name: 'cookie-img-only-verifier-server'
-
- client:
- name: 'cookie-img-only-client'
-
- ats:
- name: 'ts-cookie-img-only'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- # Cache only for image types
- proxy.config.http.cache.cache_responses_to_cookies: 2
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Verify that response containing Set-Cookie with text content type is
not
diff --git a/tests/gold_tests/cache/replay/cookie-default.replay.yaml
b/tests/gold_tests/cache/replay/cookie-default.replay.yaml
index 0f1608f1c2..c9773bc5fe 100644
--- a/tests/gold_tests/cache/replay/cookie-default.replay.yaml
+++ b/tests/gold_tests/cache/replay/cookie-default.replay.yaml
@@ -16,37 +16,12 @@
#
# This replay file assumes that caching is enabled and
-# proxy.config.http.cache.cache_responses_to_cookies is set to 1 (current
+# proxy.config.http.cache.cache_responses_to_cookies is set to 1(current
# default, cache for any content-type)
#
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-cookie_default'
- description: 'Verify the correct caching behavior when ATS is in default
configuration'
-
- server:
- name: 'cookie-default-verifier-server'
-
- client:
- name: 'cookie-default-client'
-
- ats:
- name: 'ts-cookie-default'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Verify the response containing Set-Cookie with text content type is
diff --git a/tests/gold_tests/cache/replay/head_with_get_cached.replay.yaml
b/tests/gold_tests/cache/replay/head_with_get_cached.replay.yaml
index 6f1136ab3c..e55b12a7e9 100644
--- a/tests/gold_tests/cache/replay/head_with_get_cached.replay.yaml
+++ b/tests/gold_tests/cache/replay/head_with_get_cached.replay.yaml
@@ -17,31 +17,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-head_with_get_cached'
- description: 'Verify correct HEAD response handling with cached GET response'
-
- server:
- name: 'server-head'
-
- client:
- name: 'client-head'
-
- ats:
- name: 'ts-cache-head'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http.*|cache.*'
- proxy.config.http.insert_age_in_response: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
sessions:
- transactions:
@@ -307,4 +282,4 @@ sessions:
status: 200
headers:
fields:
- - [ X-Response, { value: second_get_response, as: equal} ]
+ - [ X-Response, { value: second_get_response, as: equal} ]
\ No newline at end of file
diff --git a/tests/gold_tests/cache/replay/ignore_authentication.replay.yaml
b/tests/gold_tests/cache/replay/ignore_authentication.replay.yaml
deleted file mode 100644
index eb04957d2a..0000000000
--- a/tests/gold_tests/cache/replay/ignore_authentication.replay.yaml
+++ /dev/null
@@ -1,158 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-#
-# This replay file verifies auth-related caching behaviors with both default
-# configuration and with ignore_authentication enabled via conf_remap
-#
-meta:
- version: "1.0"
-
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-auth'
- description: 'Verify the proper caching behavior for request/response
containing auth-related fields in both default and ignore_authentication
configurations'
-
- server:
- name: 'auth-verifier-server'
-
- client:
- name: 'auth-client'
-
- ats:
- name: 'ts-auth'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- # Default behavior: respect WWW-Authenticate (don't cache)
- proxy.config.http.cache.ignore_authentication: 0
-
- remap_config:
- # Default path - uses default ignore_authentication=0
- - from: "http://example.com/default/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/default/"
- # Ignored path - overrides to ignore_authentication=1 via conf_remap
- - from: "http://example.com/ignored/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/ignored/"
- plugins:
- - name: "conf_remap.so"
- args:
- - "proxy.config.http.cache.ignore_authentication=1"
-
- log_validation:
- traffic_out:
- contains:
- - expression: "response has WWW-Authenticate, response is not
cacheable"
- description: "Verify ATS doesn't store the response with
WWW-Authenticate in default config."
-
-sessions:
- - transactions:
- #########################################################################
- # Test default behavior: WWW-Authenticate responses are NOT cached
- #########################################################################
- - client-request:
- method: "GET"
- version: "1.1"
- url: /default/auth
- headers:
- fields:
- - [uuid, default-www-auth-response]
- - [Host, example.com]
-
- server-response:
- status: 401
- reason: Unauthorized
- headers:
- fields:
- - [Content-Length, 4]
- - [Cache-Control, "max-age=5"]
- - [WWW-Authenticate, "Basic"]
-
- proxy-response:
- status: 401
-
- # Re-request to verify the previous response was NOT cached
- - client-request:
- # Add a delay so ATS has time to finish any caching IO for the
- # previous transaction.
- delay: 100ms
- method: "GET"
- version: "1.1"
- url: /default/auth
- headers:
- fields:
- - [uuid, default-www-auth-verify]
- - [Host, example.com]
- - [Authorization, "Basic ZGVtbzphdHNAc3Ryb25ncHc="]
-
- server-response:
- status: 200
- reason: OK
-
- # Verify that the new 200 response is returned instead of cached 401
- proxy-response:
- status: 200
-
- #########################################################################
- # Test ignore_authentication=1: WWW-Authenticate responses ARE cached
- #########################################################################
- - client-request:
- method: "GET"
- version: "1.1"
- url: /ignored/auth
- headers:
- fields:
- - [uuid, ignored-www-auth-response]
- - [Host, example.com]
-
- server-response:
- status: 401
- reason: Unauthorized
- headers:
- fields:
- - [Content-Length, 4]
- - [Cache-Control, "max-age=5"]
- - [WWW-Authenticate, "Basic"]
-
- proxy-response:
- status: 401
-
- # Re-request to verify the previous response WAS cached
- - client-request:
- # Add a delay so ATS has time to finish any caching IO for the
- # previous transaction.
- delay: 100ms
- method: "GET"
- version: "1.1"
- url: /ignored/auth
- headers:
- fields:
- - [uuid, ignored-www-auth-verify]
- - [Host, example.com]
- - [Authorization, "Basic ZGVtbzphdHNAc3Ryb25ncHc="]
-
- server-response:
- status: 200
- reason: OK
-
- # Verify that the cached 401 response is returned instead of new 200
- proxy-response:
- status: 401
-
diff --git
a/tests/gold_tests/cache/replay/negative-caching-customized.replay.yaml
b/tests/gold_tests/cache/replay/negative-caching-customized.replay.yaml
index bbdf572aa4..52df653b16 100644
--- a/tests/gold_tests/cache/replay/negative-caching-customized.replay.yaml
+++ b/tests/gold_tests/cache/replay/negative-caching-customized.replay.yaml
@@ -23,34 +23,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-neg_caching_customized'
- description: 'Verify customized negative caching list'
-
- server:
- name: 'server-customized'
-
- client:
- name: 'client-customized'
-
- ats:
- name: 'ts-customized'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.http.negative_caching_enabled: 1
- proxy.config.http.negative_caching_list: "400"
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
blocks:
- 200_response: &200_response
server-response:
diff --git a/tests/gold_tests/cache/replay/negative-caching-default.replay.yaml
b/tests/gold_tests/cache/replay/negative-caching-default.replay.yaml
index 71d1f69919..6b945c3005 100644
--- a/tests/gold_tests/cache/replay/negative-caching-default.replay.yaml
+++ b/tests/gold_tests/cache/replay/negative-caching-default.replay.yaml
@@ -22,33 +22,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-neg_caching_default'
- description: 'Verify default negative caching behavior'
-
- server:
- name: 'server-default'
-
- client:
- name: 'client-default'
-
- ats:
- name: 'ts-default'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.http.negative_caching_enabled: 1
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
blocks:
- 200_response: &200_response
server-response:
diff --git
a/tests/gold_tests/cache/replay/negative-caching-disabled.replay.yaml
b/tests/gold_tests/cache/replay/negative-caching-disabled.replay.yaml
index 364be65eee..0df4f317cd 100644
--- a/tests/gold_tests/cache/replay/negative-caching-disabled.replay.yaml
+++ b/tests/gold_tests/cache/replay/negative-caching-disabled.replay.yaml
@@ -21,33 +21,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-neg_caching_disabled'
- description: 'Verify correct behavior without negative caching enabled'
-
- server:
- name: 'server-disabled'
-
- client:
- name: 'client-disabled'
-
- ats:
- name: 'ts-disabled'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.http.negative_caching_enabled: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
blocks:
- request_for_path_200: &request_for_path_200
client-request:
diff --git
a/tests/gold_tests/cache/replay/negative-revalidating-disabled.replay.yaml
b/tests/gold_tests/cache/replay/negative-revalidating-disabled.replay.yaml
index 93e3a71a48..cfc3c9b636 100644
--- a/tests/gold_tests/cache/replay/negative-revalidating-disabled.replay.yaml
+++ b/tests/gold_tests/cache/replay/negative-revalidating-disabled.replay.yaml
@@ -22,35 +22,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-neg_revalidating_disabled'
- description: 'Verify negative revalidating disabled'
-
- server:
- name: 'server-negative-revalidating-disabled'
-
- client:
- name: 'client-negative-revalidating-disabled'
-
- ats:
- name: 'ts-negative-revalidating-disabled'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http|cache'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.http.insert_response_via_str: 2
- proxy.config.http.negative_revalidating_enabled: 0
- proxy.config.http.cache.max_stale_age: 6
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
diff --git
a/tests/gold_tests/cache/replay/negative-revalidating-enabled.replay.yaml
b/tests/gold_tests/cache/replay/negative-revalidating-enabled.replay.yaml
index 32c5ad66eb..4b320767bf 100644
--- a/tests/gold_tests/cache/replay/negative-revalidating-enabled.replay.yaml
+++ b/tests/gold_tests/cache/replay/negative-revalidating-enabled.replay.yaml
@@ -15,44 +15,14 @@
# limitations under the License.
#
-# Verify negative_revalidating enabled behavior. This replay file assumes:
-# * ATS is configured with negative_revalidating enabled (default).
+# Verify negative_revalidating disabled behavior. This replay file assumes:
+# * ATS is configured with negative_revalidating disabled.
# * max_stale_age is set to 6 seconds.
#
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-neg_revalidating_enabled'
- description: 'Verify negative revalidating enabled'
-
- server:
- name: 'server-negative-revalidating-enabled'
-
- client:
- name: 'client-negative-revalidating-enabled'
-
- ats:
- name: 'ts-negative-revalidating-enabled'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http|cache'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.http.insert_response_via_str: 2
- # Negative revalidating is on by default.
- # proxy.config.http.negative_revalidating_enabled: 1
- proxy.config.http.cache.max_stale_age: 6
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
diff --git
a/tests/gold_tests/cache/replay/negative-revalidating-list.replay.yaml
b/tests/gold_tests/cache/replay/negative-revalidating-list.replay.yaml
index af23465b16..f95dab2d93 100644
--- a/tests/gold_tests/cache/replay/negative-revalidating-list.replay.yaml
+++ b/tests/gold_tests/cache/replay/negative-revalidating-list.replay.yaml
@@ -15,45 +15,14 @@
# limitations under the License.
#
-# Verify negative_revalidating_list behavior. This replay file assumes:
-# * ATS is configured with negative_revalidating enabled.
+# Verify negative_revalidating disabled behavior. This replay file assumes:
+# * ATS is configured with negative_revalidating disabled.
# * max_stale_age is set to 6 seconds.
-# * negative_revalidating_list is set to "403 404"
#
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-neg_revalidating_list'
- description: 'Verify negative_revalidating_list behavior'
-
- server:
- name: 'server-negative-revalidating-list'
-
- client:
- name: 'client-negative-revalidating-list'
-
- ats:
- name: 'ts-negative-revalidating-list'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http|cache'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.http.insert_response_via_str: 2
- proxy.config.http.cache.max_stale_age: 6
- proxy.config.http.negative_revalidating_enabled: 1
- proxy.config.http.negative_revalidating_list: "403 404"
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
diff --git
a/tests/gold_tests/cache/replay/post_with_post_caching_disabled.replay.yaml
b/tests/gold_tests/cache/replay/post_with_post_caching_disabled.replay.yaml
index 13beb51e5c..84dcabe99c 100644
--- a/tests/gold_tests/cache/replay/post_with_post_caching_disabled.replay.yaml
+++ b/tests/gold_tests/cache/replay/post_with_post_caching_disabled.replay.yaml
@@ -17,35 +17,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-post_with_post_caching_disabled'
- dns:
- name: 'dns-post_with_post_caching_disabled'
- description: 'Verify correct POST response handling when caching POST
responses is disabled'
-
- server:
- name: 'server-post-disabled'
-
- client:
- name: 'client-post-disabled'
-
- ats:
- name: 'ts'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http.*|cache.*'
- proxy.config.http.insert_age_in_response: 0
- # Caching of POST responses is disabled by default.
- # proxy.config.http.cache.post_method: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
sessions:
- transactions:
diff --git
a/tests/gold_tests/cache/replay/post_with_post_caching_enabled.replay.yaml
b/tests/gold_tests/cache/replay/post_with_post_caching_enabled.replay.yaml
index b5d1d1a23e..5f102d23cd 100644
--- a/tests/gold_tests/cache/replay/post_with_post_caching_enabled.replay.yaml
+++ b/tests/gold_tests/cache/replay/post_with_post_caching_enabled.replay.yaml
@@ -17,34 +17,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-post_with_post_caching_enabled'
- dns:
- name: 'dns-post_with_post_caching_enabled'
- description: 'Verify correct POST response handling when caching POST
responses is enabled'
-
- server:
- name: 'server-post-enabled'
-
- client:
- name: 'client-post-enabled'
-
- ats:
- name: 'ts-cache-post'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http.*|cache.*'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.http.cache.post_method: 1
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
sessions:
- transactions:
diff --git
a/tests/gold_tests/cache/replay/post_with_post_caching_override.replay.yaml
b/tests/gold_tests/cache/replay/post_with_post_caching_override.replay.yaml
deleted file mode 100644
index a50cf05a9f..0000000000
--- a/tests/gold_tests/cache/replay/post_with_post_caching_override.replay.yaml
+++ /dev/null
@@ -1,113 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-meta:
- version: "1.0"
-
-# Configuration section for autest integration
-autest:
- dns:
- name: 'dns-post_with_post_caching_override'
- dns:
- name: 'dns-post_with_post_caching_override'
- description: 'Verify correct POST response handling when caching POST
responses is enabled via overridable config'
-
- server:
- name: 'server-post-override'
-
- client:
- name: 'client-post-override'
-
- ats:
- name: 'ts-cache-post-override'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http.*|cache.*'
- proxy.config.http.insert_age_in_response: 0
- # Override the following in remap.config.
- proxy.config.http.cache.post_method: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
- plugins:
- - name: "conf_remap.so"
- args:
- - "proxy.config.http.cache.post_method=1"
-
-# Use the same sessions as post_with_post_caching_enabled.replay.yaml
-# since the behavior should be the same (POST caching enabled)
-sessions:
-- transactions:
-
- #
- # Test 1: Verify caching of a response to a POST request.
- #
-
- # The simple case: perform two POST requests and make sure the second
- # is served with the cached response of the first.
- - client-request:
- method: "POST"
- version: "1.1"
- url: /simple/post/test
- headers:
- fields:
- - [ Host, example.com ]
- - [ Content-Length, 48 ]
- - [ uuid, 11 ]
-
- server-response:
- status: 200
- reason: OK
- headers:
- fields:
- - [ Content-Length, 16 ]
- - [ Cache-Control, max-age=300 ]
-
- proxy-response:
- status: 200
-
- - client-request:
- # Add a delay so ATS has time to finish any caching IO for the previous
- # transaction.
- delay: 100ms
-
- method: "POST"
- version: "1.1"
- url: /simple/post/test
- headers:
- fields:
- - [ Host, example.com ]
- - [ Content-Length, 48 ]
- - [ uuid, 12 ]
-
- # This should not go through to the server since the previous POST response
- # should have been cached. Return a non-200 response to
- # verify it is served from cache.
- server-response:
- status: 400
- reason: "Bad Request"
- headers:
- fields:
- - [ Content-Length, 0 ]
-
- # Expect the cached 200 response.
- proxy-response:
- status: 200
-
diff --git a/tests/gold_tests/cache/replay/proxy_serve_stale.replay.yaml
b/tests/gold_tests/cache/replay/proxy_serve_stale.replay.yaml
index b3a84d1b57..152af6ecd8 100644
--- a/tests/gold_tests/cache/replay/proxy_serve_stale.replay.yaml
+++ b/tests/gold_tests/cache/replay/proxy_serve_stale.replay.yaml
@@ -36,38 +36,6 @@ meta:
- [ Content-Length, 16 ]
- [ X-Response, should_not_see ]
-autest:
- description: 'Verify that stale content is served when the parent is down'
-
- dns:
- name: 'dns-serve-stale'
-
- server:
- name: 'server-serve-stale'
-
- client:
- name: 'client-serve-stale'
-
- ats:
- name: 'ts_child'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.http.push_method_enabled: 1
- proxy.config.http.parent_proxy.fail_threshold: 2
- proxy.config.http.parent_proxy.total_connect_attempts: 1
- proxy.config.http.cache.max_stale_age: 10
- proxy.config.http.parent_proxy.self_detect: 0
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'cache|http|dns|hostdb|parent_proxy'
-
- parent_config:
- - 'dest_domain=. parent="localhost:82" round_robin=consistent_hash
go_direct=false'
-
- remap_config:
- - from: "http://example.com/"
- to: "http://localhost:{SERVER_HTTP_PORT}/"
sessions:
- transactions:
diff --git
a/tests/gold_tests/cache/replay/request-cache-control-default.replay.yaml
b/tests/gold_tests/cache/replay/request-cache-control-default.replay.yaml
index e0a0d91f1a..94d3bde4af 100644
--- a/tests/gold_tests/cache/replay/request-cache-control-default.replay.yaml
+++ b/tests/gold_tests/cache/replay/request-cache-control-default.replay.yaml
@@ -21,32 +21,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- description: 'Verify the proper handling of cache-control directives in
requests in default configuration'
-
- dns:
- name: 'dns-req_default'
-
- server:
- name: 'request-cache-control-default-verifier-server'
-
- client:
- name: 'request-cache-control-default-client'
-
- ats:
- name: 'ts-request-cache-control-default'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
sessions:
- transactions:
# Populating the cache
diff --git
a/tests/gold_tests/cache/replay/request-cache-control-honor-client.replay.yaml
b/tests/gold_tests/cache/replay/request-cache-control-honor-client.replay.yaml
index a5e8faf315..9340ed6653 100644
---
a/tests/gold_tests/cache/replay/request-cache-control-honor-client.replay.yaml
+++
b/tests/gold_tests/cache/replay/request-cache-control-honor-client.replay.yaml
@@ -22,42 +22,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- description: 'Verify the proper handling of cache-control directives in
requests when ATS is configured to honor client requests to bypass the cache'
-
- dns:
- name: 'dns-req_honor_client'
-
- server:
- name: 'request-cache-control-honor-client-verifier-server'
-
- client:
- name: 'request-cache-control-honor-client-client'
-
- ats:
- name: 'ts-request-cache-control-honor-client'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- # Configured to honor client requests to bypass the cache
- proxy.config.http.cache.ignore_client_no_cache: 0
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
- log_validation:
- traffic_out:
- contains:
- - expression: "Revalidate document with server"
- description: "Verify that ATS honors the no-cache and performs a
revalidation."
- - expression: "client does not permit storing, and cache control
does not say to ignore client no-cache"
- description: "Verify that ATS honors the no-store."
-
sessions:
- transactions:
# Populating the cache
diff --git
a/tests/gold_tests/cache/replay/response-cache-control-default.replay.yaml
b/tests/gold_tests/cache/replay/response-cache-control-default.replay.yaml
index 3ecfa83131..b87ad86ad5 100644
--- a/tests/gold_tests/cache/replay/response-cache-control-default.replay.yaml
+++ b/tests/gold_tests/cache/replay/response-cache-control-default.replay.yaml
@@ -22,40 +22,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- description: 'Verify the proper handling of cache-control directives in
responses in default configuration'
-
- dns:
- name: 'dns-resp_default'
-
- server:
- name: 'response-cache-control-default-verifier-server'
-
- client:
- name: 'response-cache-control-client-default'
-
- ats:
- name: 'ts-response-cache-control-default'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
- log_validation:
- traffic_out:
- contains:
- - expression: "Revalidate document with server"
- description: "Verify that ATS honors the no-cache in response and
performs a revalidation."
- - expression: "server does not permit storing and config file does
not indicate that server directive should be ignored"
- description: "Verify that ATS honors the no-store in response and
bypasses the cache."
-
sessions:
- transactions:
# Verify Cache-Control: no-cache in response is honored
diff --git
a/tests/gold_tests/cache/replay/response-cache-control-ignored.replay.yaml
b/tests/gold_tests/cache/replay/response-cache-control-ignored.replay.yaml
index 17fa5d5c40..2380e4a34d 100644
--- a/tests/gold_tests/cache/replay/response-cache-control-ignored.replay.yaml
+++ b/tests/gold_tests/cache/replay/response-cache-control-ignored.replay.yaml
@@ -21,41 +21,6 @@
meta:
version: "1.0"
-# Configuration section for autest integration
-autest:
- description: 'Verify the proper handling of cache-control directives in
responses when ATS is configured to ignore server requests to bypass the cache'
-
- dns:
- name: 'dns-resp_ignored'
-
- server:
- name: 'response-cache-control-ignored-verifier-server'
-
- client:
- name: 'response-cache-control-client-ignored'
-
- ats:
- name: 'ts-response-cache-control-ignored'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.cache.ignore_server_no_cache: 1
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
- log_validation:
- traffic_out:
- excludes:
- - expression: "Revalidate document with server"
- description: "Verify that ATS ignores the no-cache in response and
therefore doesn't perform a revalidation."
- - expression: "server does not permit storing and config file does
not indicate that server directive should be ignored"
- description: "Verify that ATS ignores the no-store in response and
caches the responses despite its presence."
-
sessions:
- transactions:
# Verify the no-cache in response is ignored and the response is cached
diff --git a/tests/gold_tests/cache/replay/varied_transactions.replay.yaml
b/tests/gold_tests/cache/replay/varied_transactions.replay.yaml
index a7e65c0ac9..ccb35e7210 100644
--- a/tests/gold_tests/cache/replay/varied_transactions.replay.yaml
+++ b/tests/gold_tests/cache/replay/varied_transactions.replay.yaml
@@ -33,34 +33,6 @@ meta:
fields:
- [ Content-Length, 0 ]
-autest:
- description: 'Run traffic with max_alts behavior when set to 4'
-
- server:
- name: 'server-vary-handling'
-
- client:
- name: 'client-vary-handling'
-
- ats:
- name: 'ts-vary-handling'
- process_config:
- enable_cache: true
-
- records_config:
- proxy.config.diags.debug.enabled: 1
- proxy.config.diags.debug.tags: 'http'
- proxy.config.http.insert_age_in_response: 0
- proxy.config.cache.limits.http.max_alts: 4
- proxy.config.cache.log.alternate.eviction: 1
-
- remap_config:
- - from: "http://example.com/"
- to: "http://backend.example.com:{SERVER_HTTP_PORT}/"
-
- log_validation:
- diags_log:
- gold_file: "gold/two_alternates_evicted.gold"
sessions:
- transactions:
diff --git a/tests/gold_tests/cache/vary-handling.test.py
b/tests/gold_tests/cache/vary-handling.test.py
index 3e27012f99..45b5141425 100644
--- a/tests/gold_tests/cache/vary-handling.test.py
+++ b/tests/gold_tests/cache/vary-handling.test.py
@@ -21,5 +21,23 @@ Test.Summary = '''
Test correct handling of alternates via the Vary header.
'''
-# Run traffic with max_alts behavior when set to 4.
-Test.ATSReplayTest(replay_file="replay/varied_transactions.replay.yaml")
+ts = Test.MakeATSProcess("ts")
+replay_file = "replay/varied_transactions.replay.yaml"
+server = Test.MakeVerifierServerProcess("server", replay_file)
+ts.Disk.records_config.update(
+ {
+ 'proxy.config.diags.debug.enabled': 1,
+ 'proxy.config.diags.debug.tags': 'http',
+ 'proxy.config.http.insert_age_in_response': 0,
+ 'proxy.config.cache.limits.http.max_alts': 4,
+ 'proxy.config.cache.log.alternate.eviction': 1,
+ })
+
+ts.Disk.remap_config.AddLine('map /
http://127.0.0.1:{0}'.format(server.Variables.http_port))
+
+tr = Test.AddTestRun("Run traffic with max_alts behavior when set to 4")
+tr.Processes.Default.StartBefore(server)
+tr.Processes.Default.StartBefore(ts)
+tr.AddVerifierClientProcess("client", replay_file,
http_ports=[ts.Variables.port])
+
+ts.Disk.diags_log.Content += "gold/two_alternates_evicted.gold"