diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD b/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD index ae2ae0efe57..655dbc3573c 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/BUILD @@ -26,6 +26,7 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/k8s.io/apiserver/pkg/server:go_default_library", + "//vendor/k8s.io/apiserver/pkg/server/options:go_default_library", "//vendor/k8s.io/apiserver/pkg/storage/names:go_default_library", "//vendor/k8s.io/client-go/dynamic:go_default_library", ], diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go index 32dd6d9659e..35c844fafb7 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/testserver/start.go @@ -20,7 +20,6 @@ import ( "fmt" "net" "os" - "strconv" "time" "github.com/pborman/uuid" @@ -31,11 +30,12 @@ import ( "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/util/wait" genericapiserver "k8s.io/apiserver/pkg/server" + genericapiserveroptions "k8s.io/apiserver/pkg/server/options" "k8s.io/client-go/dynamic" ) func DefaultServerConfig() (*extensionsapiserver.Config, error) { - port, err := FindFreeLocalPort() + listener, port, err := genericapiserveroptions.CreateListener("tcp", "127.0.0.1:0") if err != nil { return nil, err } @@ -47,6 +47,7 @@ func DefaultServerConfig() (*extensionsapiserver.Config, error) { options.RecommendedOptions.Authorization = nil // disable options.RecommendedOptions.Admission = nil // disable options.RecommendedOptions.SecureServing.BindAddress = net.ParseIP("127.0.0.1") + options.RecommendedOptions.SecureServing.Listener = listener etcdURL, ok := os.LookupEnv("KUBE_INTEGRATION_ETCD_URL") if !ok { etcdURL = "http://127.0.0.1:2379" @@ -145,25 +146,3 @@ func StartDefaultServer() (chan struct{}, clientset.Interface, dynamic.ClientPoo return StartServer(config) } - -// FindFreeLocalPort returns the number of an available port number on -// the loopback interface. Useful for determining the port to launch -// a server on. Error handling required - there is a non-zero chance -// that the returned port number will be bound by another process -// after this function returns. -func FindFreeLocalPort() (int, error) { - l, err := net.Listen("tcp", ":0") - if err != nil { - return 0, err - } - defer l.Close() - _, portStr, err := net.SplitHostPort(l.Addr().String()) - if err != nil { - return 0, err - } - port, err := strconv.Atoi(portStr) - if err != nil { - return 0, err - } - return port, nil -}