From 9fd8eaa95d231674933e7a43f59a9b6b847ffe4c Mon Sep 17 00:00:00 2001 From: Rob Murray Date: Thu, 24 Jul 2025 14:48:30 +0100 Subject: [PATCH] Delete TestRunDNSOptionsBasedOnHostResolvConf Because: - it's the last thing outside 'daemon/' that uses libnetwork's resolvconf package - there's better coverage of the host resolv.conf transformations in the resolvconf package's unit tests - there are integration tests that don't modify the test host's resolv.conf file in 'integration/networking/resolvconf_test.go' Signed-off-by: Rob Murray (cherry picked from commit 3003c56c57c2a6cb68d69f70302240f0d6e60138) Signed-off-by: Sebastiaan van Stijn --- integration-cli/docker_cli_run_test.go | 80 -------------------------- 1 file changed, 80 deletions(-) diff --git a/integration-cli/docker_cli_run_test.go b/integration-cli/docker_cli_run_test.go index 4aef4dacd4..aaa7bfbb6b 100644 --- a/integration-cli/docker_cli_run_test.go +++ b/integration-cli/docker_cli_run_test.go @@ -28,7 +28,6 @@ import ( "github.com/docker/docker/integration-cli/cli/build" "github.com/docker/docker/integration-cli/daemon" "github.com/docker/docker/internal/testutils/specialimage" - "github.com/docker/docker/libnetwork/resolvconf" "github.com/docker/docker/pkg/stringid" "github.com/docker/docker/runconfig" "github.com/docker/docker/testutil" @@ -1324,85 +1323,6 @@ func (s *DockerCLIRunSuite) TestRunDNSRepeatOptions(c *testing.T) { } } -func (s *DockerCLIRunSuite) TestRunDNSOptionsBasedOnHostResolvConf(c *testing.T) { - // Not applicable on Windows as testing Unix specific functionality - testRequires(c, testEnv.IsLocalDaemon, DaemonIsLinux) - - origResolvConf, err := os.ReadFile("/etc/resolv.conf") - if os.IsNotExist(err) { - c.Fatalf("/etc/resolv.conf does not exist") - } - - hostNameservers := resolvconf.GetNameservers(origResolvConf, resolvconf.IP) - hostSearch := resolvconf.GetSearchDomains(origResolvConf) - - out := cli.DockerCmd(c, "run", "--dns=127.0.0.1", "busybox", "cat", "/etc/resolv.conf").Combined() - - if actualNameservers := resolvconf.GetNameservers([]byte(out), resolvconf.IP); actualNameservers[0] != "127.0.0.1" { - c.Fatalf("expected '127.0.0.1', but says: %q", actualNameservers[0]) - } - - actualSearch := resolvconf.GetSearchDomains([]byte(out)) - if len(actualSearch) != len(hostSearch) { - c.Fatalf("expected %q search domain(s), but it has: %q", len(hostSearch), len(actualSearch)) - } - for i := range actualSearch { - if actualSearch[i] != hostSearch[i] { - c.Fatalf("expected %q domain, but says: %q", actualSearch[i], hostSearch[i]) - } - } - - out = cli.DockerCmd(c, "run", "--dns-search=mydomain", "busybox", "cat", "/etc/resolv.conf").Combined() - - actualNameservers := resolvconf.GetNameservers([]byte(out), resolvconf.IP) - if len(actualNameservers) != len(hostNameservers) { - c.Fatalf("expected %q nameserver(s), but it has: %q", len(hostNameservers), len(actualNameservers)) - } - for i := range actualNameservers { - if actualNameservers[i] != hostNameservers[i] { - c.Fatalf("expected %q nameserver, but says: %q", actualNameservers[i], hostNameservers[i]) - } - } - - if actualSearch = resolvconf.GetSearchDomains([]byte(out)); actualSearch[0] != "mydomain" { - c.Fatalf("expected 'mydomain', but says: %q", actualSearch[0]) - } - - // test with file - tmpResolvConf := []byte("search example.com\nnameserver 12.34.56.78\nnameserver 127.0.0.1") - if err := os.WriteFile("/etc/resolv.conf", tmpResolvConf, 0o644); err != nil { - c.Fatal(err) - } - // put the old resolvconf back - defer func() { - if err := os.WriteFile("/etc/resolv.conf", origResolvConf, 0o644); err != nil { - c.Fatal(err) - } - }() - - resolvConf, err := os.ReadFile("/etc/resolv.conf") - if os.IsNotExist(err) { - c.Fatalf("/etc/resolv.conf does not exist") - } - - hostSearch = resolvconf.GetSearchDomains(resolvConf) - - out = cli.DockerCmd(c, "run", "busybox", "cat", "/etc/resolv.conf").Combined() - if actualNameservers = resolvconf.GetNameservers([]byte(out), resolvconf.IP); actualNameservers[0] != "12.34.56.78" || len(actualNameservers) != 1 { - c.Fatalf("expected '12.34.56.78', but has: %v", actualNameservers) - } - - actualSearch = resolvconf.GetSearchDomains([]byte(out)) - if len(actualSearch) != len(hostSearch) { - c.Fatalf("expected %q search domain(s), but it has: %q", len(hostSearch), len(actualSearch)) - } - for i := range actualSearch { - if actualSearch[i] != hostSearch[i] { - c.Fatalf("expected %q domain, but says: %q", actualSearch[i], hostSearch[i]) - } - } -} - // Test to see if a non-root user can resolve a DNS name. Also // check if the container resolv.conf file has at least 0644 perm. func (s *DockerCLIRunSuite) TestRunNonRootUserResolvName(c *testing.T) {