From 6a6ccbc45ca7986cdf4872e4875ca73c91eb5813 Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Wed, 17 Jun 2020 05:40:36 +0000 Subject: [PATCH 1/9] Add e2e test for get*APIGroupList endpoints --- test/e2e/apimachinery/get_apigroup_list.go | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 test/e2e/apimachinery/get_apigroup_list.go diff --git a/test/e2e/apimachinery/get_apigroup_list.go b/test/e2e/apimachinery/get_apigroup_list.go new file mode 100644 index 00000000000..fe55e67afcd --- /dev/null +++ b/test/e2e/apimachinery/get_apigroup_list.go @@ -0,0 +1,54 @@ +/* +Copyright 2019 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 apimachinery + +import ( + "context" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/kubernetes/test/e2e/framework" + + "github.com/onsi/ginkgo" +) + +var _ = SIGDescribe("get-apigroup-list", func() { + f := framework.NewDefaultFramework("get-apigroup-list") + ginkgo.It("should create pods, set the deletionTimestamp and deletionGracePeriodSeconds of the pod", func() { + + // TEST BEGINS HERE + ginkgo.By("[status] begin") + + // get list of APIGroup endpoints + list := &metav1.APIGroupList{} + err := f.ClientSet.Discovery().RESTClient().Get().AbsPath("/apis/").Do(context.TODO()).Into(list) + + framework.ExpectNoError(err, "Failed to find /apis/") + + for _, group := range list.Groups { + framework.Logf("Checking APIGroup:", group.Name) + + // hit APIGroup endpoint + checkGroup := &metav1.APIGroup{} + apiPath := "/apis/" + group.Name + "/" + err = f.ClientSet.Discovery().RESTClient().Get().AbsPath(apiPath).Do(context.TODO()).Into(checkGroup) + + framework.ExpectNoError(err, "Fail to access: %s", apiPath) + + // get PreferredVersion for endpoint + framework.Logf("PreferredVersion:", checkGroup.PreferredVersion) + } + }) +}) From a9cb510c7f1e712ba4e3718b698148dad84e809d Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Mon, 29 Jun 2020 21:29:26 +0000 Subject: [PATCH 2/9] Fix test name and log formatting --- test/e2e/apimachinery/get_apigroup_list.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/e2e/apimachinery/get_apigroup_list.go b/test/e2e/apimachinery/get_apigroup_list.go index fe55e67afcd..08af93ddae4 100644 --- a/test/e2e/apimachinery/get_apigroup_list.go +++ b/test/e2e/apimachinery/get_apigroup_list.go @@ -26,7 +26,7 @@ import ( var _ = SIGDescribe("get-apigroup-list", func() { f := framework.NewDefaultFramework("get-apigroup-list") - ginkgo.It("should create pods, set the deletionTimestamp and deletionGracePeriodSeconds of the pod", func() { + ginkgo.It("should locate PreferredVersion for each APIGroup", func() { // TEST BEGINS HERE ginkgo.By("[status] begin") @@ -38,7 +38,7 @@ var _ = SIGDescribe("get-apigroup-list", func() { framework.ExpectNoError(err, "Failed to find /apis/") for _, group := range list.Groups { - framework.Logf("Checking APIGroup:", group.Name) + framework.Logf("Checking APIGroup: %v", group.Name) // hit APIGroup endpoint checkGroup := &metav1.APIGroup{} @@ -48,7 +48,7 @@ var _ = SIGDescribe("get-apigroup-list", func() { framework.ExpectNoError(err, "Fail to access: %s", apiPath) // get PreferredVersion for endpoint - framework.Logf("PreferredVersion:", checkGroup.PreferredVersion) + framework.Logf("PreferredVersion: %v", checkGroup.PreferredVersion) } }) }) From dcf72dfd32ec1834b67bbd2f311dc133d433f80c Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Tue, 30 Jun 2020 01:30:03 +0000 Subject: [PATCH 3/9] Update bazel BUILD --- test/e2e/apimachinery/BUILD | 1 + 1 file changed, 1 insertion(+) diff --git a/test/e2e/apimachinery/BUILD b/test/e2e/apimachinery/BUILD index f57debecae8..03c344fe23e 100644 --- a/test/e2e/apimachinery/BUILD +++ b/test/e2e/apimachinery/BUILD @@ -21,6 +21,7 @@ go_library( "framework.go", "garbage_collector.go", "generated_clientset.go", + "get_apigroup_list.go", "namespace.go", "protocol.go", "resource_quota.go", From bc873c192c0bdbed46de0b54ee6377d22029b64c Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Thu, 2 Jul 2020 22:38:24 +0000 Subject: [PATCH 4/9] Fix naming for apigroup list --- test/e2e/apimachinery/BUILD | 2 +- .../apimachinery/{get_apigroup_list.go => apigroup_list.go} | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) rename test/e2e/apimachinery/{get_apigroup_list.go => apigroup_list.go} (91%) diff --git a/test/e2e/apimachinery/BUILD b/test/e2e/apimachinery/BUILD index 03c344fe23e..7bedbf2fffe 100644 --- a/test/e2e/apimachinery/BUILD +++ b/test/e2e/apimachinery/BUILD @@ -21,7 +21,7 @@ go_library( "framework.go", "garbage_collector.go", "generated_clientset.go", - "get_apigroup_list.go", + "apigroup_list.go", "namespace.go", "protocol.go", "resource_quota.go", diff --git a/test/e2e/apimachinery/get_apigroup_list.go b/test/e2e/apimachinery/apigroup_list.go similarity index 91% rename from test/e2e/apimachinery/get_apigroup_list.go rename to test/e2e/apimachinery/apigroup_list.go index 08af93ddae4..8f5d325e345 100644 --- a/test/e2e/apimachinery/get_apigroup_list.go +++ b/test/e2e/apimachinery/apigroup_list.go @@ -1,5 +1,5 @@ /* -Copyright 2019 The Kubernetes Authors. +Copyright 2020 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. @@ -24,8 +24,8 @@ import ( "github.com/onsi/ginkgo" ) -var _ = SIGDescribe("get-apigroup-list", func() { - f := framework.NewDefaultFramework("get-apigroup-list") +var _ = SIGDescribe("apigroup list", func() { + f := framework.NewDefaultFramework("apigroup-list") ginkgo.It("should locate PreferredVersion for each APIGroup", func() { // TEST BEGINS HERE From e81b6dce15b850b602807d954dfa8031c6d131ab Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Thu, 2 Jul 2020 23:21:27 +0000 Subject: [PATCH 5/9] Update BUILD --- test/e2e/apimachinery/BUILD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/apimachinery/BUILD b/test/e2e/apimachinery/BUILD index 7bedbf2fffe..56aa562b148 100644 --- a/test/e2e/apimachinery/BUILD +++ b/test/e2e/apimachinery/BUILD @@ -9,6 +9,7 @@ go_library( name = "go_default_library", srcs = [ "aggregator.go", + "apigroup_list.go", "certs.go", "chunking.go", "crd_conversion_webhook.go", @@ -21,7 +22,6 @@ go_library( "framework.go", "garbage_collector.go", "generated_clientset.go", - "apigroup_list.go", "namespace.go", "protocol.go", "resource_quota.go", From f886164491d1dadce8a19ab64fe188c47225806a Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Tue, 7 Jul 2020 03:38:47 +0000 Subject: [PATCH 6/9] Validate that PreferredVersion contains a valid option --- test/e2e/apimachinery/BUILD | 2 +- ..._list.go => apigroup_preferred_version.go} | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) rename test/e2e/apimachinery/{apigroup_list.go => apigroup_preferred_version.go} (71%) diff --git a/test/e2e/apimachinery/BUILD b/test/e2e/apimachinery/BUILD index 56aa562b148..a7984b3be96 100644 --- a/test/e2e/apimachinery/BUILD +++ b/test/e2e/apimachinery/BUILD @@ -9,7 +9,7 @@ go_library( name = "go_default_library", srcs = [ "aggregator.go", - "apigroup_list.go", + "apigroup_preferred_version.go", "certs.go", "chunking.go", "crd_conversion_webhook.go", diff --git a/test/e2e/apimachinery/apigroup_list.go b/test/e2e/apimachinery/apigroup_preferred_version.go similarity index 71% rename from test/e2e/apimachinery/apigroup_list.go rename to test/e2e/apimachinery/apigroup_preferred_version.go index 8f5d325e345..f87ceb28518 100644 --- a/test/e2e/apimachinery/apigroup_list.go +++ b/test/e2e/apimachinery/apigroup_preferred_version.go @@ -28,9 +28,6 @@ var _ = SIGDescribe("apigroup list", func() { f := framework.NewDefaultFramework("apigroup-list") ginkgo.It("should locate PreferredVersion for each APIGroup", func() { - // TEST BEGINS HERE - ginkgo.By("[status] begin") - // get list of APIGroup endpoints list := &metav1.APIGroupList{} err := f.ClientSet.Discovery().RESTClient().Get().AbsPath("/apis/").Do(context.TODO()).Into(list) @@ -44,11 +41,21 @@ var _ = SIGDescribe("apigroup list", func() { checkGroup := &metav1.APIGroup{} apiPath := "/apis/" + group.Name + "/" err = f.ClientSet.Discovery().RESTClient().Get().AbsPath(apiPath).Do(context.TODO()).Into(checkGroup) - framework.ExpectNoError(err, "Fail to access: %s", apiPath) - // get PreferredVersion for endpoint - framework.Logf("PreferredVersion: %v", checkGroup.PreferredVersion) + framework.Logf("PreferredVersion.GroupVersion: %s", checkGroup.PreferredVersion.GroupVersion) + framework.Logf("Versions found %v", checkGroup.Versions) + + // confirm that the PreferredVersion is a valid version + match := false + for _, version := range checkGroup.Versions { + if version.GroupVersion == checkGroup.PreferredVersion.GroupVersion { + framework.Logf("%s matches %s", version.GroupVersion, checkGroup.PreferredVersion.GroupVersion) + match = true + break + } + } + framework.ExpectEqual(true, match, "failed to find a valid version for PreferredVersion") } }) }) From a0410c878901995eebdef3dc1a2fe1de4e590d20 Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Tue, 7 Jul 2020 19:30:51 +0000 Subject: [PATCH 7/9] Claify the intention of the e2e test --- test/e2e/apimachinery/apigroup_preferred_version.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/e2e/apimachinery/apigroup_preferred_version.go b/test/e2e/apimachinery/apigroup_preferred_version.go index f87ceb28518..60fc65ef757 100644 --- a/test/e2e/apimachinery/apigroup_preferred_version.go +++ b/test/e2e/apimachinery/apigroup_preferred_version.go @@ -24,9 +24,9 @@ import ( "github.com/onsi/ginkgo" ) -var _ = SIGDescribe("apigroup list", func() { - f := framework.NewDefaultFramework("apigroup-list") - ginkgo.It("should locate PreferredVersion for each APIGroup", func() { +var _ = SIGDescribe("apigroup preferred version", func() { + f := framework.NewDefaultFramework("apigroup-preferred-version") + ginkgo.It("should validate PreferredVersion for each APIGroup", func() { // get list of APIGroup endpoints list := &metav1.APIGroupList{} @@ -37,7 +37,7 @@ var _ = SIGDescribe("apigroup list", func() { for _, group := range list.Groups { framework.Logf("Checking APIGroup: %v", group.Name) - // hit APIGroup endpoint + // locate APIGroup endpoint checkGroup := &metav1.APIGroup{} apiPath := "/apis/" + group.Name + "/" err = f.ClientSet.Discovery().RESTClient().Get().AbsPath(apiPath).Do(context.TODO()).Into(checkGroup) From 6e3919fae754b4c745cca70d665a1b707871adb3 Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Fri, 10 Jul 2020 03:26:09 +0000 Subject: [PATCH 8/9] Check that empty sets are passed through the test --- test/e2e/apimachinery/apigroup_preferred_version.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/e2e/apimachinery/apigroup_preferred_version.go b/test/e2e/apimachinery/apigroup_preferred_version.go index 60fc65ef757..bfdb83935f5 100644 --- a/test/e2e/apimachinery/apigroup_preferred_version.go +++ b/test/e2e/apimachinery/apigroup_preferred_version.go @@ -31,8 +31,8 @@ var _ = SIGDescribe("apigroup preferred version", func() { // get list of APIGroup endpoints list := &metav1.APIGroupList{} err := f.ClientSet.Discovery().RESTClient().Get().AbsPath("/apis/").Do(context.TODO()).Into(list) - framework.ExpectNoError(err, "Failed to find /apis/") + framework.ExpectNotEqual(len(list.Groups), 0, "Missing APIGroups") for _, group := range list.Groups { framework.Logf("Checking APIGroup: %v", group.Name) @@ -42,7 +42,7 @@ var _ = SIGDescribe("apigroup preferred version", func() { apiPath := "/apis/" + group.Name + "/" err = f.ClientSet.Discovery().RESTClient().Get().AbsPath(apiPath).Do(context.TODO()).Into(checkGroup) framework.ExpectNoError(err, "Fail to access: %s", apiPath) - + framework.ExpectNotEqual(len(checkGroup.Versions), 0, "No version found for %v", group.Name) framework.Logf("PreferredVersion.GroupVersion: %s", checkGroup.PreferredVersion.GroupVersion) framework.Logf("Versions found %v", checkGroup.Versions) From ca550a280acde11ed5ed5385ef5525e24a981f95 Mon Sep 17 00:00:00 2001 From: Stephen Heywood Date: Thu, 16 Jul 2020 21:13:55 +0000 Subject: [PATCH 9/9] Relocate preferred version e2e test to discovery.go --- test/e2e/apimachinery/BUILD | 1 - .../apigroup_preferred_version.go | 61 ------------------- test/e2e/apimachinery/discovery.go | 35 +++++++++++ 3 files changed, 35 insertions(+), 62 deletions(-) delete mode 100644 test/e2e/apimachinery/apigroup_preferred_version.go diff --git a/test/e2e/apimachinery/BUILD b/test/e2e/apimachinery/BUILD index a7984b3be96..f57debecae8 100644 --- a/test/e2e/apimachinery/BUILD +++ b/test/e2e/apimachinery/BUILD @@ -9,7 +9,6 @@ go_library( name = "go_default_library", srcs = [ "aggregator.go", - "apigroup_preferred_version.go", "certs.go", "chunking.go", "crd_conversion_webhook.go", diff --git a/test/e2e/apimachinery/apigroup_preferred_version.go b/test/e2e/apimachinery/apigroup_preferred_version.go deleted file mode 100644 index bfdb83935f5..00000000000 --- a/test/e2e/apimachinery/apigroup_preferred_version.go +++ /dev/null @@ -1,61 +0,0 @@ -/* -Copyright 2020 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 apimachinery - -import ( - "context" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/kubernetes/test/e2e/framework" - - "github.com/onsi/ginkgo" -) - -var _ = SIGDescribe("apigroup preferred version", func() { - f := framework.NewDefaultFramework("apigroup-preferred-version") - ginkgo.It("should validate PreferredVersion for each APIGroup", func() { - - // get list of APIGroup endpoints - list := &metav1.APIGroupList{} - err := f.ClientSet.Discovery().RESTClient().Get().AbsPath("/apis/").Do(context.TODO()).Into(list) - framework.ExpectNoError(err, "Failed to find /apis/") - framework.ExpectNotEqual(len(list.Groups), 0, "Missing APIGroups") - - for _, group := range list.Groups { - framework.Logf("Checking APIGroup: %v", group.Name) - - // locate APIGroup endpoint - checkGroup := &metav1.APIGroup{} - apiPath := "/apis/" + group.Name + "/" - err = f.ClientSet.Discovery().RESTClient().Get().AbsPath(apiPath).Do(context.TODO()).Into(checkGroup) - framework.ExpectNoError(err, "Fail to access: %s", apiPath) - framework.ExpectNotEqual(len(checkGroup.Versions), 0, "No version found for %v", group.Name) - framework.Logf("PreferredVersion.GroupVersion: %s", checkGroup.PreferredVersion.GroupVersion) - framework.Logf("Versions found %v", checkGroup.Versions) - - // confirm that the PreferredVersion is a valid version - match := false - for _, version := range checkGroup.Versions { - if version.GroupVersion == checkGroup.PreferredVersion.GroupVersion { - framework.Logf("%s matches %s", version.GroupVersion, checkGroup.PreferredVersion.GroupVersion) - match = true - break - } - } - framework.ExpectEqual(true, match, "failed to find a valid version for PreferredVersion") - } - }) -}) diff --git a/test/e2e/apimachinery/discovery.go b/test/e2e/apimachinery/discovery.go index ddc6ad3d2e9..6c30f317c29 100644 --- a/test/e2e/apimachinery/discovery.go +++ b/test/e2e/apimachinery/discovery.go @@ -17,6 +17,8 @@ limitations under the License. package apimachinery import ( + "context" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" utilversion "k8s.io/apimachinery/pkg/util/version" "k8s.io/apiserver/pkg/endpoints/discovery" "k8s.io/kubernetes/test/e2e/framework" @@ -77,4 +79,37 @@ var _ = SIGDescribe("Discovery", func() { framework.Failf("didn't find resource %s in the discovery doc", spec.Names.Plural) } }) + + ginkgo.It("should validate PreferredVersion for each APIGroup", func() { + + // get list of APIGroup endpoints + list := &metav1.APIGroupList{} + err := f.ClientSet.Discovery().RESTClient().Get().AbsPath("/apis/").Do(context.TODO()).Into(list) + framework.ExpectNoError(err, "Failed to find /apis/") + framework.ExpectNotEqual(len(list.Groups), 0, "Missing APIGroups") + + for _, group := range list.Groups { + framework.Logf("Checking APIGroup: %v", group.Name) + + // locate APIGroup endpoint + checkGroup := &metav1.APIGroup{} + apiPath := "/apis/" + group.Name + "/" + err = f.ClientSet.Discovery().RESTClient().Get().AbsPath(apiPath).Do(context.TODO()).Into(checkGroup) + framework.ExpectNoError(err, "Fail to access: %s", apiPath) + framework.ExpectNotEqual(len(checkGroup.Versions), 0, "No version found for %v", group.Name) + framework.Logf("PreferredVersion.GroupVersion: %s", checkGroup.PreferredVersion.GroupVersion) + framework.Logf("Versions found %v", checkGroup.Versions) + + // confirm that the PreferredVersion is a valid version + match := false + for _, version := range checkGroup.Versions { + if version.GroupVersion == checkGroup.PreferredVersion.GroupVersion { + framework.Logf("%s matches %s", version.GroupVersion, checkGroup.PreferredVersion.GroupVersion) + match = true + break + } + } + framework.ExpectEqual(true, match, "failed to find a valid version for PreferredVersion") + } + }) })