Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 0 additions & 45 deletions tests/gold_tests/autest-site/ats_replay.test.ext
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand Down Expand Up @@ -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


Expand Down
27 changes: 25 additions & 2 deletions tests/gold_tests/cache/alternate-caching.test.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,28 @@
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
89 changes: 87 additions & 2 deletions tests/gold_tests/cache/cache-auth.test.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,90 @@
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()
Loading