From 3b978b3cea4ee14696926028853aa37d3dd0fd12 Mon Sep 17 00:00:00 2001 From: stewart-yu Date: Tue, 9 Oct 2018 08:49:05 +0800 Subject: [PATCH 1/2] add kube-controller manager round trip test --- pkg/controller/apis/config/fuzzer/fuzzer.go | 48 +++++++++++++++++++ .../apis/config/scheme/scheme_test.go | 28 +++++++++++ 2 files changed, 76 insertions(+) create mode 100644 pkg/controller/apis/config/fuzzer/fuzzer.go create mode 100644 pkg/controller/apis/config/scheme/scheme_test.go diff --git a/pkg/controller/apis/config/fuzzer/fuzzer.go b/pkg/controller/apis/config/fuzzer/fuzzer.go new file mode 100644 index 00000000000..2aaecf6f3f5 --- /dev/null +++ b/pkg/controller/apis/config/fuzzer/fuzzer.go @@ -0,0 +1,48 @@ +/* +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 fuzzer + +import ( + "fmt" + + "github.com/google/gofuzz" + + runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer" + kubectrlmgrconfig "k8s.io/kubernetes/pkg/controller/apis/config" +) + +// Funcs returns the fuzzer functions for the kube-controller manager apis. +func Funcs(codecs runtimeserializer.CodecFactory) []interface{} { + return []interface{}{ + func(obj *kubectrlmgrconfig.KubeControllerManagerConfiguration, c fuzz.Continue) { + c.FuzzNoCustom(obj) + obj.Generic.Address = fmt.Sprintf("%d.%d.%d.%d", c.Intn(256), c.Intn(256), c.Intn(256), c.Intn(256)) + obj.Generic.ClientConnection.ContentType = fmt.Sprintf("%s/%s.%s.%s", c.RandString(), c.RandString(), c.RandString(), c.RandString()) + if obj.Generic.LeaderElection.ResourceLock == "" { + obj.Generic.LeaderElection.ResourceLock = "endpoints" + } + obj.Generic.Controllers = []string{fmt.Sprintf("%s", c.RandString())} + if obj.KubeCloudShared.ClusterName == "" { + obj.KubeCloudShared.ClusterName = "kubernetes" + } + obj.CSRSigningController.ClusterSigningCertFile = fmt.Sprintf("/%s", c.RandString()) + obj.CSRSigningController.ClusterSigningKeyFile = fmt.Sprintf("/%s", c.RandString()) + obj.PersistentVolumeBinderController.VolumeConfiguration.FlexVolumePluginDir = fmt.Sprintf("/%s", c.RandString()) + obj.TTLAfterFinishedController.ConcurrentTTLSyncs = c.Int31() + }, + } +} diff --git a/pkg/controller/apis/config/scheme/scheme_test.go b/pkg/controller/apis/config/scheme/scheme_test.go new file mode 100644 index 00000000000..4e951c2ce68 --- /dev/null +++ b/pkg/controller/apis/config/scheme/scheme_test.go @@ -0,0 +1,28 @@ +/* +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 scheme + +import ( + "testing" + + "k8s.io/apimachinery/pkg/api/apitesting/roundtrip" + "k8s.io/kubernetes/pkg/controller/apis/config/fuzzer" +) + +func TestRoundTripTypes(t *testing.T) { + roundtrip.RoundTripTestForScheme(t, Scheme, fuzzer.Funcs) +} From 7198d0ccb00a83b84ad8803b9cc41cbba425e995 Mon Sep 17 00:00:00 2001 From: stewart-yu Date: Wed, 10 Oct 2018 09:31:44 +0800 Subject: [PATCH 2/2] auto-generated file --- pkg/controller/apis/config/BUILD | 1 + pkg/controller/apis/config/fuzzer/BUILD | 27 +++++++++++++++++++++++++ pkg/controller/apis/config/scheme/BUILD | 12 ++++++++++- 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 pkg/controller/apis/config/fuzzer/BUILD diff --git a/pkg/controller/apis/config/BUILD b/pkg/controller/apis/config/BUILD index 928640e3bca..57c9f74fb15 100644 --- a/pkg/controller/apis/config/BUILD +++ b/pkg/controller/apis/config/BUILD @@ -30,6 +30,7 @@ filegroup( name = "all-srcs", srcs = [ ":package-srcs", + "//pkg/controller/apis/config/fuzzer:all-srcs", "//pkg/controller/apis/config/scheme:all-srcs", "//pkg/controller/apis/config/v1alpha1:all-srcs", ], diff --git a/pkg/controller/apis/config/fuzzer/BUILD b/pkg/controller/apis/config/fuzzer/BUILD new file mode 100644 index 00000000000..2219a63bca3 --- /dev/null +++ b/pkg/controller/apis/config/fuzzer/BUILD @@ -0,0 +1,27 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = ["fuzzer.go"], + importpath = "k8s.io/kubernetes/pkg/controller/apis/config/fuzzer", + visibility = ["//visibility:public"], + deps = [ + "//pkg/controller/apis/config:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library", + "//vendor/github.com/google/gofuzz:go_default_library", + ], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/pkg/controller/apis/config/scheme/BUILD b/pkg/controller/apis/config/scheme/BUILD index a5600c311a5..e39163350ab 100644 --- a/pkg/controller/apis/config/scheme/BUILD +++ b/pkg/controller/apis/config/scheme/BUILD @@ -1,4 +1,4 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", @@ -27,3 +27,13 @@ filegroup( tags = ["automanaged"], visibility = ["//visibility:public"], ) + +go_test( + name = "go_default_test", + srcs = ["scheme_test.go"], + embed = [":go_default_library"], + deps = [ + "//pkg/controller/apis/config/fuzzer:go_default_library", + "//staging/src/k8s.io/apimachinery/pkg/api/apitesting/roundtrip:go_default_library", + ], +)