From 5416c3133d9ad05598872a4f5d3ec941e6b0ae19 Mon Sep 17 00:00:00 2001 From: "yarntime@163.com" Date: Fri, 4 Nov 2016 15:21:14 +0800 Subject: [PATCH] add defaults test --- hack/.linted_packages | 1 + pkg/apis/autoscaling/v1/BUILD | 13 ++++ pkg/apis/autoscaling/v1/defaults_test.go | 91 ++++++++++++++++++++++++ test/test_owners.csv | 1 + 4 files changed, 106 insertions(+) create mode 100644 pkg/apis/autoscaling/v1/defaults_test.go diff --git a/hack/.linted_packages b/hack/.linted_packages index 25c05101720..6f9073b9b6a 100644 --- a/hack/.linted_packages +++ b/hack/.linted_packages @@ -71,6 +71,7 @@ pkg/apis/authentication.k8s.io/install pkg/apis/authentication/install pkg/apis/authorization/install pkg/apis/autoscaling/install +pkg/apis/autoscaling/v1 pkg/apis/batch/install pkg/apis/batch/v1 pkg/apis/batch/v2alpha1 diff --git a/pkg/apis/autoscaling/v1/BUILD b/pkg/apis/autoscaling/v1/BUILD index baad5554dd6..04ef35ab65e 100644 --- a/pkg/apis/autoscaling/v1/BUILD +++ b/pkg/apis/autoscaling/v1/BUILD @@ -37,3 +37,16 @@ go_library( "//vendor:github.com/ugorji/go/codec", ], ) + +go_test( + name = "go_default_xtest", + srcs = ["defaults_test.go"], + tags = ["automanaged"], + deps = [ + "//pkg/api:go_default_library", + "//pkg/api/install:go_default_library", + "//pkg/apis/autoscaling/install:go_default_library", + "//pkg/apis/autoscaling/v1:go_default_library", + "//pkg/runtime:go_default_library", + ], +) diff --git a/pkg/apis/autoscaling/v1/defaults_test.go b/pkg/apis/autoscaling/v1/defaults_test.go new file mode 100644 index 00000000000..4f94a4c1ad3 --- /dev/null +++ b/pkg/apis/autoscaling/v1/defaults_test.go @@ -0,0 +1,91 @@ +/* +Copyright 2016 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 v1_test + +import ( + "reflect" + "testing" + + "k8s.io/kubernetes/pkg/api" + _ "k8s.io/kubernetes/pkg/api/install" + _ "k8s.io/kubernetes/pkg/apis/autoscaling/install" + . "k8s.io/kubernetes/pkg/apis/autoscaling/v1" + "k8s.io/kubernetes/pkg/runtime" +) + +func TestSetDefaultHPA(t *testing.T) { + tests := []struct { + hpa HorizontalPodAutoscaler + expectReplicas int32 + test string + }{ + { + hpa: HorizontalPodAutoscaler{}, + expectReplicas: 1, + test: "unspecified min replicas, use the default value", + }, + { + hpa: HorizontalPodAutoscaler{ + Spec: HorizontalPodAutoscalerSpec{ + MinReplicas: newInt32(3), + }, + }, + expectReplicas: 3, + test: "set min replicas to 3", + }, + } + + for _, test := range tests { + hpa := &test.hpa + obj2 := roundTrip(t, runtime.Object(hpa)) + hpa2, ok := obj2.(*HorizontalPodAutoscaler) + if !ok { + t.Fatalf("unexpected object: %v", obj2) + } + if hpa2.Spec.MinReplicas == nil { + t.Errorf("unexpected nil MinReplicas") + } else if test.expectReplicas != *hpa2.Spec.MinReplicas { + t.Errorf("expected: %d MinReplicas, got: %d", test.expectReplicas, *hpa2.Spec.MinReplicas) + } + } +} + +func roundTrip(t *testing.T, obj runtime.Object) runtime.Object { + data, err := runtime.Encode(api.Codecs.LegacyCodec(SchemeGroupVersion), obj) + if err != nil { + t.Errorf("%v\n %#v", err, obj) + return nil + } + obj2, err := runtime.Decode(api.Codecs.UniversalDecoder(), data) + if err != nil { + t.Errorf("%v\nData: %s\nSource: %#v", err, string(data), obj) + return nil + } + obj3 := reflect.New(reflect.TypeOf(obj).Elem()).Interface().(runtime.Object) + err = api.Scheme.Convert(obj2, obj3, nil) + if err != nil { + t.Errorf("%v\nSource: %#v", err, obj2) + return nil + } + return obj3 +} + +func newInt32(val int32) *int32 { + p := new(int32) + *p = val + return p +} diff --git a/test/test_owners.csv b/test/test_owners.csv index 11a376fc0d7..f693222063c 100644 --- a/test/test_owners.csv +++ b/test/test_owners.csv @@ -513,6 +513,7 @@ k8s.io/kubernetes/pkg/apimachinery/registered,jlowdermilk,1 k8s.io/kubernetes/pkg/apis/abac/v0,liggitt,0 k8s.io/kubernetes/pkg/apis/apps/validation,derekwaynecarr,1 k8s.io/kubernetes/pkg/apis/authorization/validation,erictune,0 +k8s.io/kubernetes/pkg/apis/autoscaling/v1,yarntime,0 k8s.io/kubernetes/pkg/apis/autoscaling/validation,mtaufen,1 k8s.io/kubernetes/pkg/apis/batch/v1,vishh,1 k8s.io/kubernetes/pkg/apis/batch/v2alpha1,jlowdermilk,1