mirror of
https://github.com/kubernetes/sample-controller.git
synced 2026-05-01 00:00:03 +08:00
Merge pull request #53944 from gregory-m/sample-controller-tests
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Sample controller tests **What this PR does / why we need it**: This PR adds unit tests to sample-controller. **Special notes for your reviewer**: This is currently based on the munnerz:sample-controller branch. Please don't merged it until #52753 is merged. Kubernetes-commit: dc20badcd49e5fd2ab41d4320c9c70a50d30343c
This commit is contained in:
+5
-4
@@ -19,6 +19,7 @@ package net
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"context"
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"io"
|
||||
@@ -90,8 +91,8 @@ func SetOldTransportDefaults(t *http.Transport) *http.Transport {
|
||||
// ProxierWithNoProxyCIDR allows CIDR rules in NO_PROXY
|
||||
t.Proxy = NewProxierWithNoProxyCIDR(http.ProxyFromEnvironment)
|
||||
}
|
||||
if t.Dial == nil {
|
||||
t.Dial = defaultTransport.Dial
|
||||
if t.DialContext == nil {
|
||||
t.DialContext = defaultTransport.DialContext
|
||||
}
|
||||
if t.TLSHandshakeTimeout == 0 {
|
||||
t.TLSHandshakeTimeout = defaultTransport.TLSHandshakeTimeout
|
||||
@@ -119,7 +120,7 @@ type RoundTripperWrapper interface {
|
||||
WrappedRoundTripper() http.RoundTripper
|
||||
}
|
||||
|
||||
type DialFunc func(net, addr string) (net.Conn, error)
|
||||
type DialFunc func(ctx context.Context, net, addr string) (net.Conn, error)
|
||||
|
||||
func DialerFor(transport http.RoundTripper) (DialFunc, error) {
|
||||
if transport == nil {
|
||||
@@ -128,7 +129,7 @@ func DialerFor(transport http.RoundTripper) (DialFunc, error) {
|
||||
|
||||
switch transport := transport.(type) {
|
||||
case *http.Transport:
|
||||
return transport.Dial, nil
|
||||
return transport.DialContext, nil
|
||||
case RoundTripperWrapper:
|
||||
return DialerFor(transport.WrappedRoundTripper())
|
||||
default:
|
||||
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
Copyright 2018 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package version
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type versionType int
|
||||
|
||||
const (
|
||||
// Bigger the version type number, higher priority it is
|
||||
versionTypeAlpha versionType = iota
|
||||
versionTypeBeta
|
||||
versionTypeGA
|
||||
)
|
||||
|
||||
var kubeVersionRegex = regexp.MustCompile("^v([\\d]+)(?:(alpha|beta)([\\d]+))?$")
|
||||
|
||||
func parseKubeVersion(v string) (majorVersion int, vType versionType, minorVersion int, ok bool) {
|
||||
var err error
|
||||
submatches := kubeVersionRegex.FindStringSubmatch(v)
|
||||
if len(submatches) != 4 {
|
||||
return 0, 0, 0, false
|
||||
}
|
||||
switch submatches[2] {
|
||||
case "alpha":
|
||||
vType = versionTypeAlpha
|
||||
case "beta":
|
||||
vType = versionTypeBeta
|
||||
case "":
|
||||
vType = versionTypeGA
|
||||
default:
|
||||
return 0, 0, 0, false
|
||||
}
|
||||
if majorVersion, err = strconv.Atoi(submatches[1]); err != nil {
|
||||
return 0, 0, 0, false
|
||||
}
|
||||
if vType != versionTypeGA {
|
||||
if minorVersion, err = strconv.Atoi(submatches[3]); err != nil {
|
||||
return 0, 0, 0, false
|
||||
}
|
||||
}
|
||||
return majorVersion, vType, minorVersion, true
|
||||
}
|
||||
|
||||
// CompareKubeAwareVersionStrings compares two kube-like version strings.
|
||||
// Kube-like version strings are starting with a v, followed by a major version, optional "alpha" or "beta" strings
|
||||
// followed by a minor version (e.g. v1, v2beta1). Versions will be sorted based on GA/alpha/beta first and then major
|
||||
// and minor versions. e.g. v2, v1, v1beta2, v1beta1, v1alpha1.
|
||||
func CompareKubeAwareVersionStrings(v1, v2 string) int {
|
||||
if v1 == v2 {
|
||||
return 0
|
||||
}
|
||||
v1major, v1type, v1minor, ok1 := parseKubeVersion(v1)
|
||||
v2major, v2type, v2minor, ok2 := parseKubeVersion(v2)
|
||||
switch {
|
||||
case !ok1 && !ok2:
|
||||
return strings.Compare(v2, v1)
|
||||
case !ok1 && ok2:
|
||||
return -1
|
||||
case ok1 && !ok2:
|
||||
return 1
|
||||
}
|
||||
if v1type != v2type {
|
||||
return int(v1type) - int(v2type)
|
||||
}
|
||||
if v1major != v2major {
|
||||
return v1major - v2major
|
||||
}
|
||||
return v1minor - v2minor
|
||||
}
|
||||
Reference in New Issue
Block a user