From c6bfbaef237cc60388d607e80ba3f796d233b811 Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Thu, 13 Jul 2017 13:23:28 -0700 Subject: [PATCH] remove apimachinery's dependency on k8s.io/api --- .../src/k8s.io/apimachinery/pkg/test/BUILD | 2 +- .../pkg/test/api_meta_help_test.go | 46 ++++--------------- ...ntime_serializer_protobuf_protobuf_test.go | 18 +++----- .../src/k8s.io/apimachinery/pkg/test/util.go | 11 ++++- 4 files changed, 25 insertions(+), 52 deletions(-) diff --git a/staging/src/k8s.io/apimachinery/pkg/test/BUILD b/staging/src/k8s.io/apimachinery/pkg/test/BUILD index 2da418ae81e..d06e754d2c7 100644 --- a/staging/src/k8s.io/apimachinery/pkg/test/BUILD +++ b/staging/src/k8s.io/apimachinery/pkg/test/BUILD @@ -22,13 +22,13 @@ go_test( tags = ["automanaged"], deps = [ "//vendor/github.com/google/gofuzz:go_default_library", - "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/testing:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/testapigroup/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf:go_default_library", diff --git a/staging/src/k8s.io/apimachinery/pkg/test/api_meta_help_test.go b/staging/src/k8s.io/apimachinery/pkg/test/api_meta_help_test.go index ca20f9fe6fb..42b6013ae3c 100644 --- a/staging/src/k8s.io/apimachinery/pkg/test/api_meta_help_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/test/api_meta_help_test.go @@ -20,13 +20,13 @@ import ( "reflect" "testing" - "github.com/google/gofuzz" + fuzz "github.com/google/gofuzz" - "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/testapigroup" + "k8s.io/apimachinery/pkg/apis/testapigroup/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/util/diff" @@ -52,11 +52,11 @@ func TestExtractList(t *testing.T) { &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "2"}}, } - list2 := &v1.List{ + list2 := &ListV1{ Items: []runtime.RawExtension{ {Raw: []byte("foo")}, {Raw: []byte("bar")}, - {Object: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "other"}}}, + {Object: &v1.Carp{ObjectMeta: metav1.ObjectMeta{Name: "other"}}}, }, } list3 := &fakePtrValueList{ @@ -72,13 +72,6 @@ func TestExtractList(t *testing.T) { {ObjectMeta: metav1.ObjectMeta{Name: "3"}}, }, } - list5 := &v1.PodList{ - Items: []v1.Pod{ - {ObjectMeta: metav1.ObjectMeta{Name: "1"}}, - {ObjectMeta: metav1.ObjectMeta{Name: "2"}}, - {ObjectMeta: metav1.ObjectMeta{Name: "3"}}, - }, - } testCases := []struct { in runtime.Object @@ -90,11 +83,7 @@ func TestExtractList(t *testing.T) { out: []interface{}{}, }, { - in: &v1.List{}, - out: []interface{}{}, - }, - { - in: &v1.PodList{}, + in: &ListV1{}, out: []interface{}{}, }, { @@ -114,10 +103,6 @@ func TestExtractList(t *testing.T) { in: list4, out: []interface{}{&list4.Items[0], &list4.Items[1], &list4.Items[2]}, }, - { - in: list5, - out: []interface{}{&list5.Items[0], &list5.Items[1], &list5.Items[2]}, - }, } for i, test := range testCases { list, err := meta.ExtractList(test.in) @@ -145,11 +130,11 @@ func TestEachListItem(t *testing.T) { &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "1"}}, &testapigroup.Carp{ObjectMeta: metav1.ObjectMeta{Name: "2"}}, } - list2 := &v1.List{ + list2 := &ListV1{ Items: []runtime.RawExtension{ {Raw: []byte("foo")}, {Raw: []byte("bar")}, - {Object: &v1.Pod{ObjectMeta: metav1.ObjectMeta{Name: "other"}}}, + {Object: &v1.Carp{ObjectMeta: metav1.ObjectMeta{Name: "other"}}}, }, } list3 := &fakePtrValueList{ @@ -165,13 +150,6 @@ func TestEachListItem(t *testing.T) { {ObjectMeta: metav1.ObjectMeta{Name: "3"}}, }, } - list5 := &v1.PodList{ - Items: []v1.Pod{ - {ObjectMeta: metav1.ObjectMeta{Name: "1"}}, - {ObjectMeta: metav1.ObjectMeta{Name: "2"}}, - {ObjectMeta: metav1.ObjectMeta{Name: "3"}}, - }, - } testCases := []struct { in runtime.Object @@ -182,11 +160,7 @@ func TestEachListItem(t *testing.T) { out: []interface{}{}, }, { - in: &v1.List{}, - out: []interface{}{}, - }, - { - in: &v1.PodList{}, + in: &ListV1{}, out: []interface{}{}, }, { @@ -205,10 +179,6 @@ func TestEachListItem(t *testing.T) { in: list4, out: []interface{}{&list4.Items[0], &list4.Items[1], &list4.Items[2]}, }, - { - in: list5, - out: []interface{}{&list5.Items[0], &list5.Items[1], &list5.Items[2]}, - }, } for i, test := range testCases { list := []runtime.Object{} diff --git a/staging/src/k8s.io/apimachinery/pkg/test/runtime_serializer_protobuf_protobuf_test.go b/staging/src/k8s.io/apimachinery/pkg/test/runtime_serializer_protobuf_protobuf_test.go index b0561dd22a2..818d243a720 100644 --- a/staging/src/k8s.io/apimachinery/pkg/test/runtime_serializer_protobuf_protobuf_test.go +++ b/staging/src/k8s.io/apimachinery/pkg/test/runtime_serializer_protobuf_protobuf_test.go @@ -24,9 +24,9 @@ import ( "strings" "testing" - "k8s.io/api/core/v1" apiequality "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/apis/testapigroup/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/serializer/protobuf" @@ -272,16 +272,12 @@ func TestProtobufDecode(t *testing.T) { } func TestDecodeObjects(t *testing.T) { - obj1 := &v1.Pod{ + obj1 := &v1.Carp{ ObjectMeta: metav1.ObjectMeta{ Name: "cool", }, - Spec: v1.PodSpec{ - Containers: []v1.Container{ - { - Name: "test", - }, - }, + Spec: v1.CarpSpec{ + Hostname: "coolhost", }, } obj1wire, err := obj1.Marshal() @@ -290,7 +286,7 @@ func TestDecodeObjects(t *testing.T) { } wire1, err := (&runtime.Unknown{ - TypeMeta: runtime.TypeMeta{Kind: "Pod", APIVersion: "v1"}, + TypeMeta: runtime.TypeMeta{Kind: "Carp", APIVersion: "v1"}, Raw: obj1wire, }).Marshal() if err != nil { @@ -298,7 +294,7 @@ func TestDecodeObjects(t *testing.T) { } unk2 := &runtime.Unknown{ - TypeMeta: runtime.TypeMeta{Kind: "Pod", APIVersion: "v1"}, + TypeMeta: runtime.TypeMeta{Kind: "Carp", APIVersion: "v1"}, } wire2 := make([]byte, len(wire1)*2) n, err := unk2.NestedMarshalTo(wire2, obj1, uint64(obj1.Size())) @@ -323,7 +319,7 @@ func TestDecodeObjects(t *testing.T) { } scheme := runtime.NewScheme() for i, test := range testCases { - scheme.AddKnownTypes(schema.GroupVersion{Version: "v1"}, &v1.Pod{}) + scheme.AddKnownTypes(schema.GroupVersion{Version: "v1"}, &v1.Carp{}) v1.AddToScheme(scheme) s := protobuf.NewSerializer(scheme, scheme, "application/protobuf") obj, err := runtime.Decode(s, test.data) diff --git a/staging/src/k8s.io/apimachinery/pkg/test/util.go b/staging/src/k8s.io/apimachinery/pkg/test/util.go index 03f03c94cd3..721eff4ad16 100644 --- a/staging/src/k8s.io/apimachinery/pkg/test/util.go +++ b/staging/src/k8s.io/apimachinery/pkg/test/util.go @@ -25,15 +25,22 @@ import ( apiserializer "k8s.io/apimachinery/pkg/runtime/serializer" ) -// List holds a list of objects, which may not be known by the server. +// List and ListV1 should be kept in sync with k8s.io/kubernetes/pkg/api#List +// and k8s.io/api/core/v1#List. type List struct { metav1.TypeMeta - // +optional metav1.ListMeta Items []runtime.Object } +type ListV1 struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + Items []runtime.RawExtension `json:"items" protobuf:"bytes,2,rep,name=items"` +} + func TestScheme() (*runtime.Scheme, apiserializer.CodecFactory) { internalGV := schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal} externalGV := schema.GroupVersion{Group: "", Version: "v1"}