github.com/wozhu6104/docker@v20.10.10+incompatible/integration-cli/docker_cli_sni_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "log" 7 "net/http" 8 "net/http/httptest" 9 "net/url" 10 "os/exec" 11 "strings" 12 "testing" 13 14 "gotest.tools/v3/assert" 15 ) 16 17 func (s *DockerSuite) TestClientSetsTLSServerName(c *testing.T) { 18 c.Skip("Flakey test") 19 // there may be more than one hit to the server for each registry request 20 var serverNameReceived []string 21 var serverName string 22 23 virtualHostServer := httptest.NewTLSServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 24 serverNameReceived = append(serverNameReceived, r.TLS.ServerName) 25 })) 26 defer virtualHostServer.Close() 27 // discard TLS handshake errors written by default to os.Stderr 28 virtualHostServer.Config.ErrorLog = log.New(ioutil.Discard, "", 0) 29 30 u, err := url.Parse(virtualHostServer.URL) 31 assert.NilError(c, err) 32 hostPort := u.Host 33 serverName = strings.Split(hostPort, ":")[0] 34 35 repoName := fmt.Sprintf("%v/dockercli/image:latest", hostPort) 36 cmd := exec.Command(dockerBinary, "pull", repoName) 37 cmd.Run() 38 39 // check that the fake server was hit at least once 40 assert.Assert(c, len(serverNameReceived) > 0) 41 // check that for each hit the right server name was received 42 for _, item := range serverNameReceived { 43 assert.Check(c, item == serverName) 44 } 45 }