[インデックス 13777] ファイルの概要
このコミットは、Go言語の標準ライブラリnet
パッケージ内のCNAMEルックアップテストの対象ドメインをwww.google.com
からwww.iana.org
に変更するものです。これにより、テストの安定性と意味合いが向上することが期待されます。
コミット
commit b7376442669a0ea48e06bd98a3350c33cefe1113
Author: Mikio Hara <mikioh.mikioh@gmail.com>
Date: Sun Sep 9 23:53:48 2012 +0900
net: change cname lookup test target to iana.org
It might be meaningful, and stable than others.
R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/6499091
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/b7376442669a0ea48e06bd98a3350c33cefe1113
元コミット内容
このコミットは、Go言語のnet
パッケージにおけるCNAME(Canonical Name)レコードのルックアップテストを変更するものです。具体的には、既存のTestLookupCNAME
関数がwww.google.com
をテスト対象としていたものを削除し、新たにTestLookupIANACNAME
関数を追加してwww.iana.org
をテスト対象としています。
変更の意図は、www.iana.org
がより「意味があり、他のドメインよりも安定している可能性がある」という点にあります。これは、テストの信頼性を高めるための改善です。
変更の背景
ソフトウェア開発において、外部サービスに依存するテストは、その外部サービスの可用性や応答内容の変化によって不安定になることがあります。特にDNSルックアップのようなネットワークに依存するテストでは、テスト対象のドメインのDNS設定が変更されたり、一時的にアクセスできなくなったりすると、テストが失敗する原因となります。
元のテストではwww.google.com
のCNAMEレコードを検証していましたが、Googleのような大規模なサービスは、そのインフラストラクチャの変更に伴いDNSレコードも頻繁に更新される可能性があります。これにより、テストが意図せず失敗する「flaky test」(不安定なテスト)となるリスクがありました。
このコミットの背景には、テストの安定性を向上させ、より信頼性の高いテスト環境を構築するという目的があります。IANA (Internet Assigned Numbers Authority) は、インターネットのIPアドレス空間、ドメイン名、プロトコル識別子などのグローバルな調整を担当する組織であり、そのウェブサイトwww.iana.org
のDNSレコードは、一般的な商用サイトと比較して非常に安定していると推測されます。そのため、テスト対象としてより適切であると判断されたと考えられます。
前提知識の解説
CNAMEレコード (Canonical Name Record)
CNAMEレコードは、DNS (Domain Name System) におけるリソースレコードの一種で、あるドメイン名が別のドメイン名のエイリアス(別名)であることを示します。例えば、blog.example.com
がexample.github.io
のCNAMEレコードである場合、blog.example.com
へのアクセスはexample.github.io
に転送されます。これにより、複数のサービスが同じIPアドレスを共有したり、サービスプロバイダの変更時にIPアドレスの変更を隠蔽したりすることが可能になります。
CNAMEレコードは、主に以下のような目的で使用されます。
- サブドメインのエイリアス:
www.example.com
をexample.com
のエイリアスにするなど。 - ホスティングサービスの利用: GitHub PagesやHerokuなどのサービスで、カスタムドメインをサービスプロバイダのドメインにマッピングする場合。
- CDN (Content Delivery Network) の利用: CDNのエッジサーバーにトラフィックをルーティングする場合。
CNAMEレコードをルックアップする際には、最終的な正規名(Canonical Name)が返されます。
Go言語のnet
パッケージ
Go言語の標準ライブラリには、ネットワーク機能を提供するnet
パッケージが含まれています。このパッケージは、TCP/IP、UDP、DNSルックアップなど、様々なネットワーク操作のためのAPIを提供します。
net.LookupCNAME
: この関数は、指定されたホスト名のCNAMEレコードをルックアップし、その正規名を返します。エラーが発生した場合はエラーも返します。
Go言語のテストフレームワーク
Go言語には、標準でテストをサポートするtesting
パッケージが用意されています。
testing.T
: テスト関数に渡される型で、テストのログ出力、エラー報告、テストのスキップなどの機能を提供します。t.Logf
: テスト中に情報をログに出力します。t.Errorf
: テストが失敗したことを報告し、エラーメッセージを出力します。testing.Short()
:go test -short
フラグが指定された場合にtrue
を返します。これにより、時間のかかるテストや外部ネットワークに依存するテストをスキップすることができます。*testExternal
: この変数は、テストが外部ネットワークにアクセスする必要があるかどうかを制御するためのフラグであると推測されます。go test
コマンドに特定のフラグを渡すことで、この変数の値を設定し、外部ネットワークへのアクセスを伴うテストの実行を制御できます。
技術的詳細
このコミットは、Go言語のnet
パッケージにおけるDNS CNAMEルックアップのテストロジックを改善しています。
-
テストファイルの変更:
src/pkg/net/dialgoogle_test.go
からTestLookupCNAME
関数が削除されました。このファイルは元々Google関連のネットワークテストをまとめたものだったようです。src/pkg/net/lookup_test.go
にTestLookupIANACNAME
関数が追加されました。このファイルは一般的なDNSルックアップテストをまとめる役割を担っています。
-
テスト対象の変更:
- 旧テスト:
LookupCNAME("www.google.com")
- 新テスト:
LookupCNAME("www.iana.org")
- 旧テスト:
-
期待されるCNAMEの変更:
- 旧テストでは、
www.google.com
のCNAMEが.l.google.com.
で終わることを期待していました。これはGoogleのインフラストラクチャ(例えば、ロードバランシングやCDN)に関連するCNAMEパターンです。 - 新テストでは、
www.iana.org
のCNAMEが.icann.org.
で終わることを期待しています。IANAはICANN (Internet Corporation for Assigned Names and Numbers) の一部門であるため、このCNAMEパターンは妥当です。
- 旧テストでは、
-
テストのスキップ条件:
- 両方のテスト関数で、
testing.Short()
または!*testExternal
がtrue
の場合にテストをスキップするロジックは維持されています。これは、CI/CD環境での高速なテスト実行や、外部ネットワークへのアクセスが制限されている環境でのテスト実行を考慮したものです。
- 両方のテスト関数で、
この変更により、テストはより安定したDNSレコードを持つiana.org
を対象とすることで、GoogleのDNS設定変更に起因するテストの不安定性を回避できるようになります。これは、テストの信頼性と保守性を向上させるための重要な改善です。
コアとなるコードの変更箇所
src/pkg/net/dialgoogle_test.go
(削除)
--- a/src/pkg/net/dialgoogle_test.go
+++ b/src/pkg/net/dialgoogle_test.go
@@ -41,17 +41,6 @@ func doDial(t *testing.T, network, addr string) {
fd.Close()
}
-func TestLookupCNAME(t *testing.T) {
- if testing.Short() || !*testExternal {
- t.Logf("skipping test to avoid external network")
- return
- }
- cname, err := LookupCNAME("www.google.com")
- if !strings.HasSuffix(cname, ".l.google.com.") || err != nil {
- t.Errorf(`LookupCNAME("www.google.com.") = %q, %v, want "*.l.google.com.", nil`, cname, err)
- }
-}
-
var googleaddrsipv4 = []string{
"%d.%d.%d.%d:80",
"www.google.com:80",
src/pkg/net/lookup_test.go
(追加)
--- a/src/pkg/net/lookup_test.go
+++ b/src/pkg/net/lookup_test.go
@@ -9,6 +9,7 @@ package net
import (
"flag"
+ "strings"
"testing"
)
@@ -79,6 +80,17 @@ func TestGoogleDNSAddr(t *testing.T) {
}
}
+func TestLookupIANACNAME(t *testing.T) {
+ if testing.Short() || !*testExternal {
+ t.Logf("skipping test to avoid external network")
+ return
+ }
+ cname, err := LookupCNAME("www.iana.org")
+ if !strings.HasSuffix(cname, ".icann.org.") || err != nil {
+ t.Errorf(`LookupCNAME("www.iana.org.") = %q, %v, want "*.icann.org.", nil`, cname, err)
+ }
+}
+
var revAddrTests = []struct {
Addr string
Reverse string
コアとなるコードの解説
削除されたコード (src/pkg/net/dialgoogle_test.go
より)
TestLookupCNAME
関数は、www.google.com
のCNAMEレコードをルックアップし、その結果が.l.google.com.
で終わることを期待していました。このテストは、Googleの特定のDNS設定に依存しており、Google側のインフラ変更によってテストが不安定になる可能性がありました。テストの目的はCNAMEルックアップ機能自体の検証であり、特定の外部ドメインのCNAME構造に依存することは、テストの安定性を損なう要因となり得ます。
追加されたコード (src/pkg/net/lookup_test.go
より)
TestLookupIANACNAME
関数が新しく追加されました。この関数は以下の処理を行います。
-
テストスキップ条件の確認:
if testing.Short() || !*testExternal { t.Logf("skipping test to avoid external network") return }
これは、
go test -short
フラグが指定された場合、または外部ネットワークへのアクセスが許可されていない場合に、テストをスキップするための標準的なGoのテストパターンです。これにより、開発者がローカルで高速にテストを実行したり、ネットワーク接続がない環境でテストを実行したりする際に、外部依存のテストがボトルネックになるのを防ぎます。 -
CNAMEルックアップの実行:
cname, err := LookupCNAME("www.iana.org")
net.LookupCNAME
関数を使用して、www.iana.org
のCNAMEレコードをルックアップします。 -
結果の検証:
if !strings.HasSuffix(cname, ".icann.org.") || err != nil { t.Errorf(`LookupCNAME("www.iana.org.") = %q, %v, want "*.icann.org.", nil`, cname, err) }
ルックアップされたCNAME (
cname
) が.icann.org.
で終わることを検証します。また、エラーが発生していないことも確認します。iana.org
はICANNの管理下にあるため、そのCNAMEが.icann.org.
で終わることは非常に論理的であり、安定したテスト結果を期待できます。
この変更により、CNAMEルックアップ機能のテストは、より安定した外部ドメインに依存するようになり、テストの信頼性が向上しました。また、strings
パッケージが新しくインポートされている点も注目すべき変更です。
関連リンク
- Go言語の
net
パッケージドキュメント: https://pkg.go.dev/net - Go言語の
testing
パッケージドキュメント: https://pkg.go.dev/testing - IANA (Internet Assigned Numbers Authority) 公式サイト: https://www.iana.org/
- ICANN (Internet Corporation for Assigned Names and Numbers) 公式サイト: https://www.icann.org/
- CNAMEレコードに関するMDN Web Docs: https://developer.mozilla.org/ja/docs/Glossary/CNAME_record
参考にした情報源リンク
- Go言語のテストに関する公式ドキュメントやブログ記事
- DNS CNAMEレコードに関する一般的な技術情報
- IANAおよびICANNの役割に関する情報
- Go言語の
net
パッケージのソースコード(コミット時点のバージョン) - Go言語のコードレビューシステム (Gerrit) のCL (Change List) ページ: https://golang.org/cl/6499091 (これはコミットメッセージに記載されているリンクであり、当時のレビュープロセスを理解する上で有用です。)
[インデックス 13777] ファイルの概要
このコミットは、Go言語の標準ライブラリnet
パッケージ内のCNAMEルックアップテストの対象ドメインをwww.google.com
からwww.iana.org
に変更するものです。これにより、テストの安定性と意味合いが向上することが期待されます。
コミット
commit b7376442669a0ea48e06bd98a3350c33cefe1113
Author: Mikio Hara <mikioh.mikioh@gmail.com>
Date: Sun Sep 9 23:53:48 2012 +0900
net: change cname lookup test target to iana.org
It might be meaningful, and stable than others.
R=golang-dev, agl
CC=golang-dev
https://golang.org/cl/6499091
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/b7376442669a0ea48e06bd98a3350c33cefe1113
元コミット内容
このコミットは、Go言語のnet
パッケージにおけるCNAME(Canonical Name)レコードのルックアップテストを変更するものです。具体的には、既存のTestLookupCNAME
関数がwww.google.com
をテスト対象としていたものを削除し、新たにTestLookupIANACNAME
関数を追加してwww.iana.org
をテスト対象としています。
変更の意図は、www.iana.org
がより「意味があり、他のドメインよりも安定している可能性がある」という点にあります。これは、テストの信頼性を高めるための改善です。
変更の背景
ソフトウェア開発において、外部サービスに依存するテストは、その外部サービスの可用性や応答内容の変化によって不安定になることがあります。特にDNSルックアップのようなネットワークに依存するテストでは、テスト対象のドメインのDNS設定が変更されたり、一時的にアクセスできなくなったりすると、テストが失敗する原因となります。
元のテストではwww.google.com
のCNAMEレコードを検証していましたが、Googleのような大規模なサービスは、そのインフラストラクチャの変更に伴いDNSレコードも頻繁に更新される可能性があります。これにより、テストが意図せず失敗する「flaky test」(不安定なテスト)となるリスクがありました。
このコミットの背景には、テストの安定性を向上させ、より信頼性の高いテスト環境を構築するという目的があります。IANA (Internet Assigned Numbers Authority) は、インターネットのIPアドレス空間、ドメイン名、プロトコル識別子などのグローバルな調整を担当する組織であり、そのウェブサイトwww.iana.org
のDNSレコードは、一般的な商用サイトと比較して非常に安定していると推測されます。そのため、テスト対象としてより適切であると判断されたと考えられます。IANAはDNSルートゾーンの管理など、DNSの安定性とグローバルな調整において中心的な役割を担っており、その技術要件はDNSの安定運用に不可欠です。
前提知識の解説
CNAMEレコード (Canonical Name Record)
CNAMEレコードは、DNS (Domain Name System) におけるリソースレコードの一種で、あるドメイン名が別のドメイン名のエイリアス(別名)であることを示します。例えば、blog.example.com
がexample.github.io
のCNAMEレコードである場合、blog.example.com
へのアクセスはexample.github.io
に転送されます。これにより、複数のサービスが同じIPアドレスを共有したり、サービスプロバイダの変更時にIPアドレスの変更を隠蔽したりすることが可能になります。
CNAMEレコードは、主に以下のような目的で使用されます。
- サブドメインのエイリアス:
www.example.com
をexample.com
のエイリアスにするなど。 - ホスティングサービスの利用: GitHub PagesやHerokuなどのサービスで、カスタムドメインをサービスプロバイダのドメインにマッピングする場合。
- CDN (Content Delivery Network) の利用: CDNのエッジサーバーにトラフィックをルーティングする場合。
CNAMEレコードをルックアップする際には、最終的な正規名(Canonical Name)が返されます。
Go言語のnet
パッケージ
Go言語の標準ライブラリには、ネットワーク機能を提供するnet
パッケージが含まれています。このパッケージは、TCP/IP、UDP、DNSルックアップなど、様々なネットワーク操作のためのAPIを提供します。
net.LookupCNAME
: この関数は、指定されたホスト名のCNAMEレコードをルックアップし、その正規名を返します。エラーが発生した場合はエラーも返します。
Go言語のテストフレームワーク
Go言語には、標準でテストをサポートするtesting
パッケージが用意されています。
testing.T
: テスト関数に渡される型で、テストのログ出力、エラー報告、テストのスキップなどの機能を提供します。t.Logf
: テスト中に情報をログに出力します。t.Errorf
: テストが失敗したことを報告し、エラーメッセージを出力します。testing.Short()
:go test -short
フラグが指定された場合にtrue
を返します。これにより、時間のかかるテストや外部ネットワークに依存するテストをスキップすることができます。*testExternal
: この変数は、テストが外部ネットワークにアクセスする必要があるかどうかを制御するためのフラグであると推測されます。go test
コマンドに特定のフラグを渡すことで、この変数の値を設定し、外部ネットワークへのアクセスを伴うテストの実行を制御できます。
外部ネットワークに依存するテストの課題と対策
Go言語で外部ネットワークに依存するテストを行う場合、以下のような課題があります。
- 不安定性 (Flakiness): 外部サービスの可用性や応答内容の変動により、テストが不安定になる可能性があります。
- 速度: 実際のネットワーク呼び出しは、インメモリ操作よりも大幅に遅く、テストスイートの実行時間を長くします。
- 副作用: テストが外部システム上のデータを作成、変更、削除する可能性があり、テストの分離と再現性に問題が生じることがあります。
- コスト: 一部の外部サービスはリクエストごとに課金されるため、テストが費用を発生させる可能性があります。
- 依存関係: テストが外部サービスの可用性と正常な機能に依存するようになります。
これらの課題に対処するため、Goでは主に以下の戦略が用いられます。
- モック/フェイク: 外部ネットワークとのやり取りを抽象化するインターフェースを定義し、テスト時にはモックまたはフェイクの実装を提供します。
net/http/httptest
パッケージは、HTTPクライアントのテストにおいて、実際のネットワークに接続せずにローカルのHTTPサーバーを作成できるため非常に有用です。 - 実際の外部サービスの使用 (統合/エンドツーエンドテスト): ユニットテストでは避けるべきですが、実際の外部サービスとの統合をテストする必要がある場合もあります。この場合、専用のテストアカウントやサンドボックス環境を使用し、テスト後にデータをクリーンアップすることが重要です。また、
t.Skip()
を使用して、必要な環境変数が設定されていない場合や外部サービスが利用できない場合にテストをスキップすることで、メインのテストスイートの実行を高速に保つことができます。
このコミットでは、後者の「実際の外部サービスの使用」の範疇で、より安定した外部サービスを選択することでテストの信頼性を高めるアプローチが取られています。
技術的詳細
このコミットは、Go言語のnet
パッケージにおけるDNS CNAMEルックアップのテストロジックを改善しています。
-
テストファイルの変更:
src/pkg/net/dialgoogle_test.go
からTestLookupCNAME
関数が削除されました。このファイルは元々Google関連のネットワークテストをまとめたものだったようです。src/pkg/net/lookup_test.go
にTestLookupIANACNAME
関数が追加されました。このファイルは一般的なDNSルックアップテストをまとめる役割を担っています。この変更は、テストの関心事をより適切に分離し、コードの保守性を向上させます。
-
テスト対象の変更:
- 旧テスト:
LookupCNAME("www.google.com")
- 新テスト:
LookupCNAME("www.iana.org")
www.google.com
は、その大規模なインフラストラクチャとCDNの利用により、CNAMEレコードが頻繁に変動したり、地域によって異なる結果を返したりする可能性があります。これは、テストの再現性と安定性を損なう要因となります。 一方、www.iana.org
は、インターネットの基盤を管理する組織のウェブサイトであり、そのDNSレコードは非常に安定していると期待されます。IANAはDNSルート、IPアドレス、プロトコルパラメータのグローバルな調整を担当しており、そのウェブサイトのDNS設定は、テストの信頼性を確保する上で理想的な選択肢となります。 - 旧テスト:
-
期待されるCNAMEの変更:
- 旧テストでは、
www.google.com
のCNAMEが.l.google.com.
で終わることを期待していました。これはGoogleのインフラストラクチャ(例えば、ロードバランシングやCDN)に関連するCNAMEパターンです。 - 新テストでは、
www.iana.org
のCNAMEが.icann.org.
で終わることを期待しています。IANAはICANN (Internet Corporation for Assigned Names and Numbers) の一部門であるため、このCNAMEパターンは妥当です。iana.org
のCNAMEレコード自体は、そのルートドメインでは存在しないことが一般的ですが、www.iana.org
のようなサブドメインでは、ICANNのインフラストラクチャに関連するCNAMEが設定されている可能性が高いです。このテストは、その特定のCNAMEのサフィックスを検証することで、CNAMEルックアップ機能が正しく動作していることを確認します。
- 旧テストでは、
-
テストのスキップ条件:
- 両方のテスト関数で、
testing.Short()
または!*testExternal
がtrue
の場合にテストをスキップするロジックは維持されています。これは、CI/CD環境での高速なテスト実行や、外部ネットワークへのアクセスが制限されている環境でのテスト実行を考慮したものです。これにより、開発者は必要に応じて外部ネットワークに依存するテストをスキップし、テストスイートの実行時間を最適化できます。
- 両方のテスト関数で、
この変更により、テストはより安定したDNSレコードを持つiana.org
を対象とすることで、GoogleのDNS設定変更に起因するテストの不安定性を回避できるようになります。これは、テストの信頼性と保守性を向上させるための重要な改善です。
コアとなるコードの変更箇所
src/pkg/net/dialgoogle_test.go
(削除)
--- a/src/pkg/net/dialgoogle_test.go
+++ b/src/pkg/net/dialgoogle_test.go
@@ -41,17 +41,6 @@ func doDial(t *testing.T, network, addr string) {
fd.Close()
}
-func TestLookupCNAME(t *testing.T) {
- if testing.Short() || !*testExternal {
- t.Logf("skipping test to avoid external network")
- return
- }
- cname, err := LookupCNAME("www.google.com")
- if !strings.HasSuffix(cname, ".l.google.com.") || err != nil {
- t.Errorf(`LookupCNAME("www.google.com.") = %q, %v, want "*.l.google.com.", nil`, cname, err)
- }
-}
-
var googleaddrsipv4 = []string{
"%d.%d.%d.%d:80",
"www.google.com:80",
src/pkg/net/lookup_test.go
(追加)
--- a/src/pkg/net/lookup_test.go
+++ b/src/pkg/net/lookup_test.go
@@ -9,6 +9,7 @@ package net
import (
"flag"
+ "strings"
"testing"
)
@@ -79,6 +80,17 @@ func TestGoogleDNSAddr(t *testing.T) {
}
}
+func TestLookupIANACNAME(t *testing.T) {
+ if testing.Short() || !*testExternal {
+ t.Logf("skipping test to avoid external network")
+ return
+ }
+ cname, err := LookupCNAME("www.iana.org")
+ if !strings.HasSuffix(cname, ".icann.org.") || err != nil {
+ t.Errorf(`LookupCNAME("www.iana.org.") = %q, %v, want "*.icann.org.", nil`, cname, err)
+ }
+}
+
var revAddrTests = []struct {
Addr string
Reverse string
コアとなるコードの解説
削除されたコード (src/pkg/net/dialgoogle_test.go
より)
TestLookupCNAME
関数は、www.google.com
のCNAMEレコードをルックアップし、その結果が.l.google.com.
で終わることを期待していました。このテストは、Googleの特定のDNS設定に依存しており、Google側のインフラ変更によってテストが不安定になる可能性がありました。テストの目的はCNAMEルックアップ機能自体の検証であり、特定の外部ドメインのCNAME構造に依存することは、テストの安定性を損なう要因となり得ます。
追加されたコード (src/pkg/net/lookup_test.go
より)
TestLookupIANACNAME
関数が新しく追加されました。この関数は以下の処理を行います。
-
テストスキップ条件の確認:
if testing.Short() || !*testExternal { t.Logf("skipping test to avoid external network") return }
これは、
go test -short
フラグが指定された場合、または外部ネットワークへのアクセスが許可されていない場合に、テストをスキップするための標準的なGoのテストパターンです。これにより、開発者がローカルで高速にテストを実行したり、ネットワーク接続がない環境でテストを実行したりする際に、外部依存のテストがボトルネックになるのを防ぎます。 -
CNAMEルックアップの実行:
cname, err := LookupCNAME("www.iana.org")
net.LookupCNAME
関数を使用して、www.iana.org
のCNAMEレコードをルックアップします。 -
結果の検証:
if !strings.HasSuffix(cname, ".icann.org.") || err != nil { t.Errorf(`LookupCNAME("www.iana.org.") = %q, %v, want "*.icann.org.", nil`, cname, err) }
ルックアップされたCNAME (
cname
) が.icann.org.
で終わることを検証します。また、エラーが発生していないことも確認します。iana.org
はICANNの管理下にあるため、そのCNAMEが.icann.org.
で終わることは非常に論理的であり、安定したテスト結果を期待できます。
この変更により、CNAMEルックアップ機能のテストは、より安定した外部ドメインに依存するようになり、テストの信頼性が向上しました。また、strings
パッケージが新しくインポートされている点も注目すべき変更です。これは、strings.HasSuffix
関数を使用するために必要です。
関連リンク
- Go言語の
net
パッケージドキュメント: https://pkg.go.dev/net - Go言語の
testing
パッケージドキュメント: https://pkg.go.dev/testing - IANA (Internet Assigned Numbers Authority) 公式サイト: https://www.iana.org/
- ICANN (Internet Corporation for Assigned Names and Numbers) 公式サイト: https://www.icann.org/
- CNAMEレコードに関するMDN Web Docs: https://developer.mozilla.org/ja/docs/Glossary/CNAME_record
参考にした情報源リンク
- Go言語のテストに関する公式ドキュメントやブログ記事
- DNS CNAMEレコードに関する一般的な技術情報
- IANAおよびICANNの役割に関する情報
- Go言語の
net
パッケージのソースコード(コミット時点のバージョン) - Go言語のコードレビューシステム (Gerrit) のCL (Change List) ページ: https://golang.org/cl/6499091 (これはコミットメッセージに記載されているリンクであり、当時のレビュープロセスを理解する上で有用です。)
- Google検索結果: "Go net package CNAME lookup", "IANA.org CNAME record", "Why use iana.org for DNS tests", "Go testing external network"