diff --git a/Gopkg.lock b/Gopkg.lock index 907e1ef20f9..1c3c5bd713c 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -929,15 +929,16 @@ revision = "b072ef59824b16023b0e12c94d0040d99059a961" [[projects]] - branch = "master" - digest = "1:0c967d0a07a1320a079e56154a912528728446295136ed8fc7595d8548445965" + digest = "1:1b357310eaf2f448295aa077aaf077b56170bda56d2425f1d5d097ee4ff1c1ac" name = "sigs.k8s.io/testing_frameworks" packages = [ "integration", + "integration/addr", "integration/internal", ] pruneopts = "NT" - revision = "5818a3a284a11812aaed11d5ca0bcadec2c50e83" + revision = "d348cb12705b516376e0c323bacca72b00a78425" + version = "v0.1.1" [solve-meta] analyzer-name = "dep" diff --git a/vendor/sigs.k8s.io/testing_frameworks/integration/addr/manager.go b/vendor/sigs.k8s.io/testing_frameworks/integration/addr/manager.go new file mode 100644 index 00000000000..7523ce860c3 --- /dev/null +++ b/vendor/sigs.k8s.io/testing_frameworks/integration/addr/manager.go @@ -0,0 +1,24 @@ +package addr + +import ( + "net" +) + +// Suggest suggests a address a process can listen on. It returns +// a tuple consisting of a free port and the hostname resolved to its IP. +func Suggest() (port int, resolvedHost string, err error) { + addr, err := net.ResolveTCPAddr("tcp", "localhost:0") + if err != nil { + return + } + l, err := net.ListenTCP("tcp", addr) + if err != nil { + return + } + port = l.Addr().(*net.TCPAddr).Port + defer func() { + err = l.Close() + }() + resolvedHost = addr.IP.String() + return +} diff --git a/vendor/sigs.k8s.io/testing_frameworks/integration/apiserver.go b/vendor/sigs.k8s.io/testing_frameworks/integration/apiserver.go index 9a59893410f..4f1e28267d1 100644 --- a/vendor/sigs.k8s.io/testing_frameworks/integration/apiserver.go +++ b/vendor/sigs.k8s.io/testing_frameworks/integration/apiserver.go @@ -6,6 +6,7 @@ import ( "net/url" "time" + "sigs.k8s.io/testing_frameworks/integration/addr" "sigs.k8s.io/testing_frameworks/integration/internal" ) @@ -16,6 +17,9 @@ type APIServer struct { // If this is not specified, we default to a random free port on localhost. URL *url.URL + // SecurePort is the additional secure port that the APIServer should listen on. + SecurePort int + // Path is the path to the apiserver binary. // // If this is left as the empty string, we will attempt to locate a binary, @@ -87,6 +91,14 @@ func (s *APIServer) Start() error { return err } + // Defaulting the secure port + if s.SecurePort == 0 { + s.SecurePort, _, err = addr.Suggest() + if err != nil { + return err + } + } + s.processState.HealthCheckEndpoint = "/healthz" s.URL = &s.processState.URL diff --git a/vendor/sigs.k8s.io/testing_frameworks/integration/internal/address_manager.go b/vendor/sigs.k8s.io/testing_frameworks/integration/internal/address_manager.go deleted file mode 100644 index 7ad4ab7eaad..00000000000 --- a/vendor/sigs.k8s.io/testing_frameworks/integration/internal/address_manager.go +++ /dev/null @@ -1,53 +0,0 @@ -package internal - -import ( - "fmt" - "net" -) - -// AddressManager allocates a new address (interface & port) a process -// can bind and keeps track of that. -type AddressManager struct { - port int - host string -} - -// Initialize returns a address a process can listen on. It returns -// a tuple consisting of a free port and the hostname resolved to its IP. -func (d *AddressManager) Initialize() (port int, resolvedHost string, err error) { - if d.port != 0 { - return 0, "", fmt.Errorf("this AddressManager is already initialized") - } - addr, err := net.ResolveTCPAddr("tcp", "localhost:0") - if err != nil { - return - } - l, err := net.ListenTCP("tcp", addr) - if err != nil { - return - } - d.port = l.Addr().(*net.TCPAddr).Port - defer func() { - err = l.Close() - }() - d.host = addr.IP.String() - return d.port, d.host, nil -} - -// Port returns the port that this AddressManager is managing. Port returns an -// error if this AddressManager has not yet been initialized. -func (d *AddressManager) Port() (int, error) { - if d.port == 0 { - return 0, fmt.Errorf("this AdressManager is not initialized yet") - } - return d.port, nil -} - -// Host returns the host that this AddressManager is managing. Host returns an -// error if this AddressManager has not yet been initialized. -func (d *AddressManager) Host() (string, error) { - if d.host == "" { - return "", fmt.Errorf("this AdressManager is not initialized yet") - } - return d.host, nil -} diff --git a/vendor/sigs.k8s.io/testing_frameworks/integration/internal/apiserver.go b/vendor/sigs.k8s.io/testing_frameworks/integration/internal/apiserver.go index a5256aee08e..68a54dc7515 100644 --- a/vendor/sigs.k8s.io/testing_frameworks/integration/internal/apiserver.go +++ b/vendor/sigs.k8s.io/testing_frameworks/integration/internal/apiserver.go @@ -5,7 +5,7 @@ var APIServerDefaultArgs = []string{ "--cert-dir={{ .CertDir }}", "--insecure-port={{ if .URL }}{{ .URL.Port }}{{ end }}", "--insecure-bind-address={{ if .URL }}{{ .URL.Hostname }}{{ end }}", - "--secure-port=0", + "--secure-port={{ if .SecurePort }}{{ .SecurePort }}{{ end }}", } func DoAPIServerArgDefaulting(args []string) []string { diff --git a/vendor/sigs.k8s.io/testing_frameworks/integration/internal/process.go b/vendor/sigs.k8s.io/testing_frameworks/integration/internal/process.go index 620c6a99c57..d7a0885668a 100644 --- a/vendor/sigs.k8s.io/testing_frameworks/integration/internal/process.go +++ b/vendor/sigs.k8s.io/testing_frameworks/integration/internal/process.go @@ -13,6 +13,8 @@ import ( "github.com/onsi/gomega/gbytes" "github.com/onsi/gomega/gexec" + + "sigs.k8s.io/testing_frameworks/integration/addr" ) type ProcessState struct { @@ -63,8 +65,7 @@ func DoDefaulting( } if listenUrl == nil { - am := &AddressManager{} - port, host, err := am.Initialize() + port, host, err := addr.Suggest() if err != nil { return DefaultedProcessInput{}, err }