Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Relax localhost subdomain address-family checks on Android/AppleMobile - #128404

Closed
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix
Closed

Relax localhost subdomain address-family checks on Android/AppleMobile#128404
kotlarmilos with Copilot wants to merge 4 commits into
mainfrom
copilot/ci-scan-test-failure-fix

Conversation

CopilotAI commented May 20, 2026

Copy link
Copy Markdown
Contributor

main PR

Description

This PR relaxes AddressFamily assertions for *.localhost DNS functional tests on Android and Apple mobile, where OS resolvers can return mixed-family results (for example, link-local IPv6 entries during IPv4 queries), causing flakes.

It now applies the same platform-specific behavior to both:

  • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
  • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily

On Android/Apple mobile, tests require the requested family to be represented where applicable and skip strict per-entry family enforcement. On other platforms, strict family validation is preserved.

Customer Impact

Reduces CI/test flakiness on mobile platforms and improves reliability of runtime-extra-platforms validation without changing product behavior.

Regression

No product regression fix; this is a test expectation adjustment for platform-specific resolver behavior.

Testing

  • Ran targeted functional tests for:
    • DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily
    • DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily
  • Verified targeted test run passed.

Risk

Low risk. Changes are limited to test code in System.Net.NameResolution functional tests and only relax assertions on Android/Apple mobile while keeping strict validation elsewhere.

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

…roid/AppleMobile
Co-authored-by: kotlarmilos <11523312+kotlarmilos@users.noreply.github.com>
CopilotAI requested review from Copilot and removed request for CopilotMay 20, 2026 13:33
CopilotAI changed the title [WIP] Fix test failure for DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamilyRelax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileMay 20, 2026
CopilotAI requested a review from kotlarmilosMay 20, 2026 13:34
@kotlarmilos

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@kotlarmilos
kotlarmilos requested a review from rzikmMay 22, 2026 13:16
@kotlarmiloskotlarmilos added this to the 11.0.0 milestone May 22, 2026
@kotlarmilos
kotlarmilos marked this pull request as ready for review May 22, 2026 13:16
CopilotAI review requested due to automatic review settings May 22, 2026 13:16
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts System.Net.NameResolution functional test expectations for Dns.GetHostEntry(..., AddressFamily) on Android/Apple mobile where the OS resolver can return mixed-family results, reducing platform-specific flakiness while keeping stricter validation on other platforms.

Changes:

  • Adds platform gating (strictAddressFamily) to relax address-family assertions on Android/Apple mobile.
  • Factors shared sync/async validation into a local VerifyAddressFamily helper.
  • Replaces per-element Assert.All (always) with “requested family must be present” (Assert.Contains) plus conditional strict validation.
Show a summary per file
FileDescription
src/libraries/System.Net.NameResolution/tests/FunctionalTests/GetHostEntryTest.csRelaxes address-family assertions on Android/Apple mobile and refactors the sync/async checks into a helper.

Copilot's findings

  • Files reviewed: 1/1 changed files
  • Comments generated: 1

Comment on lines +452 to +456
Assert.Contains(entry.AddressList, addr => addr.AddressFamily == addressFamily);
if (strictAddressFamily)
{
Assert.All(entry.AddressList, addr => Assert.Equal(addressFamily, addr.AddressFamily));
}

@rzikmrzikm left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, modulo existing comment

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'os-ios': @vitek-karas, @kotlarmilos, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to 'arch-android': @vitek-karas, @simonrozsival, @steveisok, @akoeplinger
See info in area-owners.md if you want to be subscribed.

@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

@rzikm

Copy link
Copy Markdown
Member

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

…Mobile
Co-authored-by: rzikm <32671551+rzikm@users.noreply.github.com>

CopilotAI commented May 27, 2026

Copy link
Copy Markdown
ContributorAuthor

@copilot There is a similar failure for DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily, can you address this one as well?

Addressed in 27909d9. I applied the same Android/AppleMobile relaxation to DnsGetHostAddresses_LocalhostSubdomain_RespectsAddressFamily by gating strict Assert.All checks behind the same platform condition and keeping IPv4 presence validation via Assert.Contains.

CopilotAI changed the title Relax address-family check in DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily on Android/AppleMobileRelax localhost subdomain address-family checks on Android/AppleMobileMay 27, 2026
CopilotAI requested a review from rzikmMay 27, 2026 12:19
@rzikm

Copy link
Copy Markdown
Member

/azp run runtime-extra-platforms

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines successfully started running 1 pipeline(s).

…bdomain_RespectsAddressFamily
The previous unconditional Assert.Contains tightened semantics for IPv6 on
non-mobile platforms: an empty AddressList used to pass via vacuous Assert.All
but would fail Assert.Contains. Guard the contains check with
addressFamily == AddressFamily.InterNetwork, matching the original
"at least one IPv4 address" expectation and the structure already used in
GetHostAddressesTest.cs.
Addresses review feedback on #128404.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rzikm

Copy link
Copy Markdown
Member

I think this PR can be superseeded by #128705

@jkotas
jkotas deleted the copilot/ci-scan-test-failure-fix branch June 7, 2026 04:28
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 7, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ci-scan] Test failure: System.Net.NameResolution.Tests.GetHostEntryTest.DnsGetHostEntry_LocalhostSubdomain_RespectsAddressFamily

5 participants

@kotlarmilos@rzikm@karelz