Add AuTest for connect_attempts rr_retries and max_retries#12932
Add AuTest for connect_attempts rr_retries and max_retries#12932masaori335 wants to merge 2 commits intoapache:masterfrom
Conversation
ab39cfa to
3b069bc
Compare
There was a problem hiding this comment.
Pull request overview
Adds new AuTest coverage for origin connect-attempt retry behaviors (round-robin retries vs max retries) and extends the ATS replay test harness to support DNS record injection and error.log validation via replay YAML.
Changes:
- Added three new Proxy Verifier replay scenarios covering
proxy.config.http.connect_attempts_rr_retriesandproxy.config.http.connect_attempts_max_retries. - Added new
dns/connect_attempts.test.pyto run the new replay tests and gold files forerror.logexpectations. - Extended
tests/gold_tests/autest-site/ats_replay.test.extto support DNSrecordsinjection anderror_logvalidation (including gold-file based validation).
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/gold_tests/dns/replay/connect_attempts_rr_retries.replay.yaml | New replay scenario for round-robin retry behavior and down-server cache behavior. |
| tests/gold_tests/dns/replay/connect_attempts_rr_no_retry.replay.yaml | New replay scenario covering baseline behavior with no retries. |
| tests/gold_tests/dns/replay/connect_attempts_rr_max_retries.replay.yaml | New replay scenario covering connect_attempts_max_retries behavior. |
| tests/gold_tests/dns/gold/connect_attempts_rr_retries_error_log.gold | Expected error.log output for rr-retries scenario. |
| tests/gold_tests/dns/gold/connect_attempts_rr_no_error_log.gold | Expected error.log output for no-retry scenario. |
| tests/gold_tests/dns/gold/connect_attempts_rr_max_retries_error_log.gold | Expected error.log output for max-retries scenario. |
| tests/gold_tests/dns/connect_attempts.test.py | Test driver that runs the three new replay tests. |
| tests/gold_tests/autest-site/ats_replay.test.ext | Adds error_log validation support and DNS records wiring for replay-based tests. |
| # wait for error log | ||
| if log_validation != None and log_validation['error_log'] != None: | ||
| wait_for_log = obj.AddTestRun('Wait for logs of ' + ats_config.get('name', 'ts')) | ||
| wait_for_log.Processes.Default.Command = ( | ||
| os.path.join(obj.Variables.AtsTestToolsDir, 'condwait') + ' 60 1 -f ' + os.path.join(ts.Variables.LOGDIR, 'error.log')) | ||
| wait_for_log.Processes.Default.ReturnCode = 0 |
There was a problem hiding this comment.
In ATSReplayTest, the guard if log_validation != None and log_validation['error_log'] != None: can raise a KeyError when autest.ats.log_validation exists but does not define error_log (e.g. many existing replay tests only use traffic_out / diags_log). Please switch to a safe lookup (e.g. error_log_cfg = (log_validation or {}).get('error_log')) and check that value instead.
| # limitations under the License. | ||
|
|
||
| # | ||
| # This replay file assumes that caching is enabled. |
There was a problem hiding this comment.
The header comment says caching is enabled, but this replay config explicitly sets process_config.enable_cache: false. Please update or remove the comment so it matches the test configuration.
| # This replay file assumes that caching is enabled. | |
| # This replay file runs with caching disabled. |
| proxy-response: | ||
| status: 502 | ||
|
|
||
| # request expected hit down_server cache and immidiately get 500 |
There was a problem hiding this comment.
Spelling: "immidiately" should be "immediately" in this comment (and consider rewording to a full sentence for clarity).
| # request expected hit down_server cache and immidiately get 500 | |
| # This request is expected to hit the down_server cache and immediately receive a 500 response. |
| # limitations under the License. | ||
|
|
||
| # | ||
| # This replay file assumes that caching is enabled. |
There was a problem hiding this comment.
The header comment says caching is enabled, but this replay config explicitly sets process_config.enable_cache: false. Please update or remove the comment so it matches the test configuration.
| # This replay file assumes that caching is enabled. | |
| # This replay file runs with ATS caching disabled. |
| proxy-response: | ||
| status: 502 | ||
|
|
||
| # request expected hit down_server cache and immidiately get 500 |
There was a problem hiding this comment.
Spelling: "immidiately" should be "immediately" in this comment (and consider rewording to a full sentence for clarity).
| # request expected hit down_server cache and immidiately get 500 | |
| # The request is expected to hit the down_server cache and immediately receive a 500 response. |
| # limitations under the License. | ||
|
|
||
| # | ||
| # This replay file assumes that caching is enabled. |
There was a problem hiding this comment.
The header comment says caching is enabled, but this replay config explicitly sets process_config.enable_cache: false. Please update or remove the comment so it matches the test configuration.
| # This replay file assumes that caching is enabled. | |
| # This replay file assumes that caching is disabled. |
| proxy-response: | ||
| status: 502 | ||
|
|
||
| # request expected hit down_server cache and immidiately get 500 |
There was a problem hiding this comment.
Spelling: "immidiately" should be "immediately" in this comment (and consider rewording to a full sentence for clarity).
| # request expected hit down_server cache and immidiately get 500 | |
| # The request is expected to hit the down_server cache and immediately receive a 500 response. |
|
Somehow, the |
Covers combination of
proxy.config.http.connect_attempts_rr_retriesandproxy.config.http.connect_attempts_max_retries.The
connect_attempts_max_retries_down_serverwill be covered by #12922