Remove kubectl column output test

This commit is contained in:
Jordan Liggitt 2020-03-09 10:12:52 -04:00
parent cb38560422
commit a35ca04dd6
2 changed files with 0 additions and 162 deletions

View File

@ -19,20 +19,15 @@ go_library(
"//staging/src/k8s.io/api/rbac/v1:go_default_library",
"//staging/src/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/net:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/registry/generic/registry:go_default_library",
"//staging/src/k8s.io/client-go/discovery:go_default_library",
"//staging/src/k8s.io/client-go/dynamic:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/kubectl/pkg/polymorphichelpers:go_default_library",
"//test/e2e/common:go_default_library",
@ -44,7 +39,6 @@ go_library(
"//test/e2e/framework/service:go_default_library",
"//test/e2e/framework/testfiles:go_default_library",
"//test/e2e/scheduling:go_default_library",
"//test/integration/etcd:go_default_library",
"//test/utils:go_default_library",
"//test/utils/crd:go_default_library",
"//test/utils/image:go_default_library",

View File

@ -48,20 +48,15 @@ import (
rbacv1 "k8s.io/api/rbac/v1"
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime/schema"
utilnet "k8s.io/apimachinery/pkg/util/net"
"k8s.io/apimachinery/pkg/util/rand"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/authentication/serviceaccount"
genericregistry "k8s.io/apiserver/pkg/registry/generic/registry"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/kubectl/pkg/polymorphichelpers"
"k8s.io/kubernetes/pkg/controller"
@ -74,7 +69,6 @@ import (
e2eservice "k8s.io/kubernetes/test/e2e/framework/service"
"k8s.io/kubernetes/test/e2e/framework/testfiles"
"k8s.io/kubernetes/test/e2e/scheduling"
"k8s.io/kubernetes/test/integration/etcd"
testutils "k8s.io/kubernetes/test/utils"
"k8s.io/kubernetes/test/utils/crd"
imageutils "k8s.io/kubernetes/test/utils/image"
@ -349,107 +343,6 @@ var _ = SIGDescribe("Kubectl client", func() {
})
})
ginkgo.Describe("kubectl get output", func() {
ginkgo.It("should contain custom columns for each resource", func() {
randString := rand.String(10)
ignoredResources := map[string]bool{
// ignored for intentionally using standard fields.
// This assumption is based on a lack of TableColumnDefinition
// in pkg/printers/internalversion/printers.go
"ClusterRole": true,
"Role": true,
"LimitRange": true,
"PodPreset": true,
// ignored for being disruptive in an e2e, and getting automatically deleted by a controller
"Node": true,
// ignored temporarily while waiting for bug fix.
"CustomResourceDefinition": true,
// ignored because no test data exists.
// Do not add anything to this list, instead add fixtures in
// the test/integration/etcd package.
"BackendConfig": true,
"ComponentStatus": true,
"NodeMetrics": true,
"PodMetrics": true,
"VolumeSnapshotClass": true,
"VolumeSnapshotContent": true,
"VolumeSnapshot": true,
}
apiGroups, err := c.Discovery().ServerPreferredResources()
if discovery.IsGroupDiscoveryFailedError(err) {
discoveryErr := err.(*discovery.ErrGroupDiscoveryFailed)
for gv := range discoveryErr.Groups {
if strings.Contains(gv.Group, ".") && !strings.HasSuffix(gv.Group, ".k8s.io") {
// tolerate discovery errors for non-k8s.io groups (like aggregated/crd groups)
continue
}
if gv.Group == "metrics.k8s.io" {
// tolerate discovery errors for known test k8s.io groups like aggregated/metrics groups
continue
}
// otherwise, fail
framework.ExpectNoError(err)
}
} else {
// fail immediately if this isn't a discovery error
framework.ExpectNoError(err)
}
testableResources := etcd.GetEtcdStorageDataForNamespace(f.Namespace.Name)
for _, group := range apiGroups {
// This limits the scope of this test to exclude CRDs. This
// assumes that CRDs will not have a .k8s.io group and will have
// a . in their name.
if !strings.Contains(group.GroupVersion, ".k8s.io") && strings.Contains(group.GroupVersion, ".") {
continue
}
for _, resource := range group.APIResources {
if !verbsContain(resource.Verbs, "get") || ignoredResources[resource.Kind] || strings.HasPrefix(resource.Name, "e2e-test") {
continue
}
// compute gvr
gv, err := schema.ParseGroupVersion(group.GroupVersion)
framework.ExpectNoError(err)
gvr := gv.WithResource(resource.Name)
// assert test data exists
testData := testableResources[gvr]
gomega.ExpectWithOffset(1, testData).ToNot(gomega.BeZero(), "No test data available for %s", gvr)
// create test resource
mapping := &meta.RESTMapping{
Resource: gvr,
GroupVersionKind: gv.WithKind(resource.Kind),
}
if resource.Namespaced {
mapping.Scope = meta.RESTScopeNamespace
} else {
mapping.Scope = meta.RESTScopeRoot
}
client, obj, err := etcd.JSONToUnstructured(testData.Stub, f.Namespace.Name, mapping, f.DynamicClient)
framework.ExpectNoError(err)
if resource.Kind != "APIService" && resource.Kind != "CustomResourceDefinition" {
obj.SetName(obj.GetName() + randString)
}
createObjValidateOutputAndCleanup(f.Namespace.Name, client, obj, resource)
}
}
})
})
ginkgo.Describe("Simple pod", func() {
var podYaml string
ginkgo.BeforeEach(func() {
@ -2224,52 +2117,3 @@ waitLoop:
// Reaching here means that one of more checks failed multiple times. Assuming its not a race condition, something is broken.
framework.Failf("Timed out after %v seconds waiting for %s pods to reach valid state", framework.PodStartTimeout.Seconds(), testname)
}
// verbsContain returns true if the provided list of verbs contain the provided
// verb string.
func verbsContain(verbs metav1.Verbs, str string) bool {
for _, v := range verbs {
if v == str {
return true
}
}
return false
}
// deleteObj deletes an Object with the provided client and name.
func deleteObj(client dynamic.ResourceInterface, name string) {
err := client.Delete(context.TODO(), name, metav1.DeleteOptions{})
framework.ExpectNoError(err)
}
// createObjValidateOutputAndCleanup creates an object using the provided client
// and then verifies that the kubectl get output provides custom columns. Once
// the test has completed, it deletes the object.
func createObjValidateOutputAndCleanup(namespace string, client dynamic.ResourceInterface, obj *unstructured.Unstructured, resource metav1.APIResource) {
_, err := client.Create(context.TODO(), obj, metav1.CreateOptions{})
framework.ExpectNoError(err)
defer deleteObj(client, obj.GetName())
// get test resource
output := framework.RunKubectlOrDie(namespace, "get", resource.Name, "--all-namespaces")
if output == "" {
framework.Failf("No stdout from kubectl get for %s (likely need to define test resources)", resource.Name)
}
splitOutput := strings.SplitN(output, "\n", 2)
fields := strings.Fields(splitOutput[0])
defaultColumns := [][]string{
// namespaced, server-side
{"NAMESPACE", "NAME", "CREATED", "AT"},
// namespaced, client-side
{"NAMESPACE", "NAME", "AGE"},
// cluster-scoped, server-side
{"NAME", "CREATED", "AT"},
// cluster-scoped, client-side
{"NAME", "AGE"},
}
for _, defaults := range defaultColumns {
framework.ExpectNotEqual(fields, defaults, fmt.Sprintf("expected non-default fields for resource: %s", resource.Name))
}
}