mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 03:11:40 +00:00
Merge pull request #82927 from obitech/kube_proxy_strict_serializer
Enable strict serializer in kube-proxy
This commit is contained in:
commit
0ff761b14f
@ -167,6 +167,7 @@ go_test(
|
|||||||
"//pkg/proxy/apis/config:go_default_library",
|
"//pkg/proxy/apis/config:go_default_library",
|
||||||
"//pkg/util/configz:go_default_library",
|
"//pkg/util/configz:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||||
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
"//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library",
|
||||||
"//staging/src/k8s.io/component-base/config:go_default_library",
|
"//staging/src/k8s.io/component-base/config:go_default_library",
|
||||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
|
@ -30,12 +30,14 @@ import (
|
|||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
utilpointer "k8s.io/utils/pointer"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
kuberuntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
componentbaseconfig "k8s.io/component-base/config"
|
componentbaseconfig "k8s.io/component-base/config"
|
||||||
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
|
kubeproxyconfig "k8s.io/kubernetes/pkg/proxy/apis/config"
|
||||||
"k8s.io/kubernetes/pkg/util/configz"
|
"k8s.io/kubernetes/pkg/util/configz"
|
||||||
utilpointer "k8s.io/utils/pointer"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// This test verifies that NewProxyServer does not crash when CleanupAndExit is true.
|
// This test verifies that NewProxyServer does not crash when CleanupAndExit is true.
|
||||||
@ -279,10 +281,16 @@ nodePortAddresses:
|
|||||||
|
|
||||||
// TestLoadConfigFailures tests failure modes for loadConfig()
|
// TestLoadConfigFailures tests failure modes for loadConfig()
|
||||||
func TestLoadConfigFailures(t *testing.T) {
|
func TestLoadConfigFailures(t *testing.T) {
|
||||||
|
yamlTemplate := `bindAddress: 0.0.0.0
|
||||||
|
clusterCIDR: "1.2.3.0/24"
|
||||||
|
configSyncPeriod: 15s
|
||||||
|
kind: KubeProxyConfiguration`
|
||||||
|
|
||||||
testCases := []struct {
|
testCases := []struct {
|
||||||
name string
|
name string
|
||||||
config string
|
config string
|
||||||
expErr string
|
expErr string
|
||||||
|
checkFn func(err error) bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "Decode error test",
|
name: "Decode error test",
|
||||||
@ -299,15 +307,34 @@ func TestLoadConfigFailures(t *testing.T) {
|
|||||||
config: "bindAddress: ::",
|
config: "bindAddress: ::",
|
||||||
expErr: "mapping values are not allowed in this context",
|
expErr: "mapping values are not allowed in this context",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "Duplicate fields",
|
||||||
|
config: fmt.Sprintf("%s\nbindAddess: 1.2.3.4", yamlTemplate),
|
||||||
|
checkFn: kuberuntime.IsStrictDecodingError,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Unknown field",
|
||||||
|
config: fmt.Sprintf("%s\nfoo: bar", yamlTemplate),
|
||||||
|
checkFn: kuberuntime.IsStrictDecodingError,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
version := "apiVersion: kubeproxy.config.k8s.io/v1alpha1"
|
version := "apiVersion: kubeproxy.config.k8s.io/v1alpha1"
|
||||||
for _, tc := range testCases {
|
for _, tc := range testCases {
|
||||||
options := NewOptions()
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
config := fmt.Sprintf("%s\n%s", version, tc.config)
|
options := NewOptions()
|
||||||
_, err := options.loadConfig([]byte(config))
|
config := fmt.Sprintf("%s\n%s", version, tc.config)
|
||||||
if assert.Error(t, err, tc.name) {
|
_, err := options.loadConfig([]byte(config))
|
||||||
assert.Contains(t, err.Error(), tc.expErr, tc.name)
|
|
||||||
}
|
if assert.Error(t, err, tc.name) {
|
||||||
|
if tc.expErr != "" {
|
||||||
|
assert.Contains(t, err.Error(), tc.expErr)
|
||||||
|
}
|
||||||
|
if tc.checkFn != nil {
|
||||||
|
assert.True(t, tc.checkFn(err), tc.name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ var (
|
|||||||
Scheme = runtime.NewScheme()
|
Scheme = runtime.NewScheme()
|
||||||
// Codecs provides methods for retrieving codecs and serializers for specific
|
// Codecs provides methods for retrieving codecs and serializers for specific
|
||||||
// versions and content types.
|
// versions and content types.
|
||||||
Codecs = serializer.NewCodecFactory(Scheme)
|
Codecs = serializer.NewCodecFactory(Scheme, serializer.EnableStrict)
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
Loading…
Reference in New Issue
Block a user