Commit fb69aa8
committed
test(net): two Dns tests asserted the resolver's opinion, not the port's (#2375)
The full gate surfaced two failures in `SharpRuntimeTests_Net` that the production
code did not cause, and both are the same defect: the test asserted something the
resolver decides.
1. `MalformedLiteralTextIsStillRejected` required six strings to fail to resolve.
On this container "1.2.3." takes a 13 ms DNS round trip and comes back as
1.2.0.3 -- where "1.2.3" is answered by libc's digits-and-dots shortcut in
0.03 ms, so the trailing dot is what sends it to the network. Any wildcard DNS
server can make that test fail, and .NET's Dns.GetHostAddresses would return
the same address here because it calls the same getaddrinfo.
2. `GetHostEntry_ByAddress_WithNoReverseMapping_TerminatesInsteadOfRecursing`
required the call to RETURN an entry. One gate run raised
"Temporary failure in name resolution" (EAI_AGAIN) for 192.0.2.1 while five
isolated runs passed.
Neither is a regression: both reproduce with the in-flight change stashed, and
neither test can be reached from `modules/core`. Neither is disabled, weakened,
skipped or recategorised.
The repairs keep the findings and drop the environment.
1. Two assertions replace one. `IPAddress::TryParse` must reject the text -- that
is the whole of SR-AUD-304, which was that `Dns` had a SECOND, disagreeing IPv4
parser, and it holds on every machine. Then the test calls `getaddrinfo` itself
and requires `Dns::GetHostAddresses` to AGREE with that independent oracle:
throw when the resolver has no answer, and otherwise return exactly the
resolver's address set. This is the oracle pattern #2351 established for
tzdata. It is strictly stronger than what it replaces -- the old test could not
express that a SUCCESSFUL resolution is reported faithfully, with no fabricated
entries and no duplicates.
2. The finding there is about TERMINATION. An unbounded mutual recursion overflows
the stack and takes the process down, so it can neither return nor throw; a
resolver that answers, one that says "no such name", and one that is briefly
unreachable are all acceptable. The test now asserts that, plus the structural
invariants when an entry does come back.
The file header's claim that "none of them needs a network" was measured false for
exactly one row and is corrected in place rather than left standing.
Mutations, both caught: returning an empty vector instead of raising on resolution
failure; giving malformed text a literal reading by trimming a trailing space or dot.
The test count does not move -- two tests rewritten, none added.
docs/DnsLiteralOracleTestDefect.md1 parent 16f364a commit fb69aa8
3 files changed
Lines changed: 195 additions & 20 deletions
File tree
- docs
- modules/net/tests/System/Net
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
Lines changed: 87 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
29 | 37 | | |
30 | 38 | | |
31 | 39 | | |
| |||
37 | 45 | | |
38 | 46 | | |
39 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
40 | 53 | | |
41 | 54 | | |
42 | 55 | | |
| |||
97 | 110 | | |
98 | 111 | | |
99 | 112 | | |
100 | | - | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
101 | 160 | | |
102 | | - | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
103 | 188 | | |
104 | 189 | | |
105 | 190 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
144 | | - | |
145 | | - | |
146 | | - | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
147 | 154 | | |
148 | | - | |
149 | | - | |
150 | | - | |
151 | | - | |
152 | | - | |
153 | | - | |
154 | | - | |
155 | | - | |
156 | | - | |
157 | | - | |
158 | | - | |
159 | | - | |
160 | | - | |
161 | | - | |
162 | | - | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
163 | 175 | | |
164 | 176 | | |
165 | 177 | | |
| |||
0 commit comments