Merge pull request #20598 from mikedanese/serialization-tests

Auto commit by PR queue bot
pull/6/head
k8s-merge-robot 2016-02-03 19:46:28 -08:00
commit f3429776c2
3 changed files with 36 additions and 28 deletions

View File

@ -32,8 +32,6 @@ import (
apitesting "k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/v1"
_ "k8s.io/kubernetes/pkg/apis/extensions"
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util/sets"
@ -61,7 +59,7 @@ func fuzzInternalObject(t *testing.T, forVersion unversioned.GroupVersion, item
}
func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
t.Logf("codec: %#v", codec)
//t.Logf("codec: %#v", codec)
printer := spew.ConfigState{DisableMethods: true}
@ -94,12 +92,12 @@ func roundTrip(t *testing.T, codec runtime.Codec, item runtime.Object) {
}
// roundTripSame verifies the same source object is tested in all API versions.
func roundTripSame(t *testing.T, item runtime.Object, except ...string) {
func roundTripSame(t *testing.T, group testapi.TestGroup, item runtime.Object, except ...string) {
set := sets.NewString(except...)
seed := rand.Int63()
fuzzInternalObject(t, testapi.Default.InternalGroupVersion(), item, seed)
fuzzInternalObject(t, group.InternalGroupVersion(), item, seed)
version := *testapi.Default.GroupVersion()
version := *group.GroupVersion()
codecs := []runtime.Codec{}
for _, fn := range codecsToTest {
codec, err := fn(version, item)
@ -123,9 +121,9 @@ func TestSpecificKind(t *testing.T) {
// api.Scheme.Log(t)
// defer api.Scheme.Log(nil)
kind := "List"
kind := "DaemonSet"
for i := 0; i < *fuzzIters; i++ {
doRoundTripTest(kind, t)
doRoundTripTest(testapi.Groups["extensions"], kind, t)
if t.Failed() {
break
}
@ -142,7 +140,7 @@ func TestList(t *testing.T) {
t.Errorf("Couldn't make a %v? %v", kind, err)
return
}
roundTripSame(t, item)
roundTripSame(t, testapi.Default, item)
}
var nonRoundTrippableTypes = sets.NewString("ExportOptions")
@ -154,34 +152,36 @@ func TestRoundTripTypes(t *testing.T) {
// api.Scheme.Log(t)
// defer api.Scheme.Log(nil)
for kind := range api.Scheme.KnownTypes(testapi.Default.InternalGroupVersion()) {
t.Logf("working on %v in %v", kind, testapi.Default.InternalGroupVersion())
for groupKey, group := range testapi.Groups {
for kind := range api.Scheme.KnownTypes(group.InternalGroupVersion()) {
t.Logf("working on %v in %v", kind, groupKey)
if nonRoundTrippableTypes.Has(kind) {
continue
}
// Try a few times, since runTest uses random values.
for i := 0; i < *fuzzIters; i++ {
doRoundTripTest(kind, t)
doRoundTripTest(group, kind, t)
if t.Failed() {
break
}
}
}
}
}
func doRoundTripTest(kind string, t *testing.T) {
item, err := api.Scheme.New(testapi.Default.InternalGroupVersion().WithKind(kind))
func doRoundTripTest(group testapi.TestGroup, kind string, t *testing.T) {
item, err := api.Scheme.New(group.InternalGroupVersion().WithKind(kind))
if err != nil {
t.Fatalf("Couldn't make a %v? %v", kind, err)
}
if _, err := meta.TypeAccessor(item); err != nil {
t.Fatalf("%q is not a TypeMeta and cannot be tested - add it to nonRoundTrippableTypes: %v", kind, err)
}
if api.Scheme.Recognizes(testapi.Default.GroupVersion().WithKind(kind)) {
roundTripSame(t, item, nonRoundTrippableTypesByVersion[kind]...)
if api.Scheme.Recognizes(group.GroupVersion().WithKind(kind)) {
roundTripSame(t, group, item, nonRoundTrippableTypesByVersion[kind]...)
}
if !nonInternalRoundTrippableTypes.Has(kind) {
roundTrip(t, testapi.Default.Codec(), fuzzInternalObject(t, testapi.Default.InternalGroupVersion(), item, rand.Int63()))
roundTrip(t, group.Codec(), fuzzInternalObject(t, group.InternalGroupVersion(), item, rand.Int63()))
}
}

View File

@ -23,15 +23,16 @@ import (
"strings"
"k8s.io/kubernetes/pkg/api"
_ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
_ "k8s.io/kubernetes/pkg/apis/metrics/install"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/apis/extensions"
"k8s.io/kubernetes/pkg/runtime"
_ "k8s.io/kubernetes/pkg/api/install"
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
_ "k8s.io/kubernetes/pkg/apis/metrics/install"
)
var (

View File

@ -397,6 +397,13 @@ func FuzzerFor(t *testing.T, version unversioned.GroupVersion, src rand.Source)
s.MinReplicas = &minReplicas
s.CPUUtilization = &extensions.CPUTargetUtilization{TargetPercentage: int(int32(c.RandUint64()))}
},
func(s *extensions.DaemonSetUpdateStrategy, c fuzz.Continue) {
c.FuzzNoCustom(s)
s.Type = extensions.RollingUpdateDaemonSetStrategyType
s.RollingUpdate = &extensions.RollingUpdateDaemonSet{
MaxUnavailable: intstr.FromInt(10),
}
},
)
return f
}