The test that a refused query is not resent asking for recursion asked one operator's public resolver for eight record types at each of its two addresses, and an attempt passed only when all eight were refused. It now sends one A query, through the existing QueryServers test export, to public resolvers of four operators in turn and stops at the first that replies. An attempt where none replies is retried by livednstest.Retry.
Not in the diff:
The four were chosen because each refused every query not asking for recursion and answered every query asking for it when checked by hand. Some other public resolvers answer such a query from their cache, or refuse only some of the time; they are left out.
If one of the four starts answering a query not asking for recursion, the test fails at once instead of asking the next: that is the answer the test exists to catch.
When none of the four replies, one attempt asks all four within its time limit, so the test fails on its own well inside the suite's 90-second limit.
Disclosures:
Judgement call: the test is renamed TestQueryServers_RecursiveResolverRefused, since it no longer calls QueryNameserverIP. The resend lived in queryDNS, which both use.
Judgement call: a reply that is neither a refusal nor an answer, such as SERVFAIL, counts as no reply and the next resolver is asked, as QueryServers itself passes over such a server.
Model: opus-5-5
Closes https://git.eeqj.de/sneak/dnswatcher/issues/251
The test that a refused query is not resent asking for recursion asked one operator's public resolver for eight record types at each of its two addresses, and an attempt passed only when all eight were refused. It now sends one A query, through the existing `QueryServers` test export, to public resolvers of four operators in turn and stops at the first that replies. An attempt where none replies is retried by `livednstest.Retry`.
Not in the diff:
- The four were chosen because each refused every query not asking for recursion and answered every query asking for it when checked by hand. Some other public resolvers answer such a query from their cache, or refuse only some of the time; they are left out.
- If one of the four starts answering a query not asking for recursion, the test fails at once instead of asking the next: that is the answer the test exists to catch.
- When none of the four replies, one attempt asks all four within its time limit, so the test fails on its own well inside the suite's 90-second limit.
Disclosures:
- Judgement call: the test is renamed `TestQueryServers_RecursiveResolverRefused`, since it no longer calls `QueryNameserverIP`. The resend lived in `queryDNS`, which both use.
- Judgement call: a reply that is neither a refusal nor an answer, such as SERVFAIL, counts as no reply and the next resolver is asked, as `QueryServers` itself passes over such a server.
Model: opus-5-5
The test asked one operator's recursive resolver for eight record types
at each of its two addresses, and passed only when all eight were
refused within one attempt; when that operator stopped answering, next
went red. It is now TestQueryServers_RecursiveResolverRefused: through
the existing QueryServers test export it sends one A query to public
resolvers of four operators in turn, inside livednstest.Retry, moving
on when one gives no reply. Each refuses a query not asking for
recursion and answers one that does, so putting the resend asking for
recursion back still fails the test at once.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #251
The test that a refused query is not resent asking for recursion asked one operator's public resolver for eight record types at each of its two addresses, and an attempt passed only when all eight were refused. It now sends one A query, through the existing
QueryServerstest export, to public resolvers of four operators in turn and stops at the first that replies. An attempt where none replies is retried bylivednstest.Retry.Not in the diff:
Disclosures:
TestQueryServers_RecursiveResolverRefused, since it no longer callsQueryNameserverIP. The resend lived inqueryDNS, which both use.QueryServersitself passes over such a server.Model: opus-5-5
Review passed on
1d944b1.Model: opus-5-5