From 1daa99029b2dce27737ef9d89bc6002d5fee08fd Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Fri, 15 Jun 2018 15:49:23 +0200 Subject: [PATCH 1/2] apiextensions: add update to testSimpleCRUD (again?) --- .../test/integration/basic_test.go | 82 +++++++++++++++++-- 1 file changed, 74 insertions(+), 8 deletions(-) diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go index a53c4ca94a2..0d6f7b792a5 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go @@ -25,6 +25,7 @@ import ( apiextensionsv1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" "k8s.io/apiextensions-apiserver/test/integration/testserver" + "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -196,6 +197,69 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta } } + // Update test + for version2, noxuResourceClient2 := range noxuResourceClients { + var gottenNoxuInstance *unstructured.Unstructured + if disabledVersions[version2] { + gottenNoxuInstance = &unstructured.Unstructured{} + gottenNoxuInstance.SetName("foo") + } else { + gottenNoxuInstance, err = noxuResourceClient2.Get("foo", metav1.GetOptions{}) + if err != nil { + t.Fatal(err) + } + } + + gottenNoxuInstance.Object["updated"] = version2 + updatedNoxuInstance, err := noxuResourceClient2.Update(gottenNoxuInstance) + if disabledVersions[version2] { + if !errors.IsNotFound(err) { + t.Errorf("expected the update operation fail with NotFound for disabled version %s, got error: %v", version2, err) + } + } else { + if err != nil { + t.Fatal(err) + } + + if updated, ok := updatedNoxuInstance.Object["updated"]; !ok { + t.Errorf("expected string 'updated' field") + } else if updated, ok := updated.(string); !ok || updated != version2 { + t.Errorf("expected string 'updated' field to equal %q, got %q of type %T", version2, updated, updated) + } + + if e, a := version2, updatedNoxuInstance.GroupVersionKind().Version; !reflect.DeepEqual(e, a) { + t.Errorf("expected %v, got %v", e, a) + } + + for _, noxuWatch := range noxuWatchs { + select { + case watchEvent := <-noxuWatch.ResultChan(): + eventMetadata, err := meta.Accessor(watchEvent.Object) + if err != nil { + t.Fatal(err) + } + + if watchEvent.Type != watch.Modified { + t.Errorf("expected modified event, got %v", watchEvent.Type) + break + } + + // it should have a UUID + createdMetadata, err := meta.Accessor(createdNoxuInstance) + if err != nil { + t.Fatal(err) + } + if e, a := createdMetadata.GetUID(), eventMetadata.GetUID(); e != a { + t.Errorf("expected equal UID for (expected) %v, and (actual) %v", createdNoxuInstance, watchEvent.Object) + } + + case <-time.After(5 * time.Second): + t.Errorf("missing watch event") + } + } + } + } + // Delete test if err := noxuResourceClient.Delete("foo", metav1.NewDeleteOptions(0)); err != nil { t.Fatal(err) @@ -212,20 +276,22 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta for _, noxuWatch := range noxuWatchs { select { case watchEvent := <-noxuWatch.ResultChan(): - if e, a := watch.Deleted, watchEvent.Type; e != a { - t.Errorf("expected %v, got %v", e, a) + eventMetadata, err := meta.Accessor(watchEvent.Object) + if err != nil { + t.Fatal(err) + } + + if watchEvent.Type != watch.Deleted { + t.Errorf("expected delete event, got %v", watchEvent.Type) break } - deletedObjectMeta, err := meta.Accessor(watchEvent.Object) - if err != nil { - t.Fatal(err) - } + // it should have a UUID - createdObjectMeta, err := meta.Accessor(createdNoxuInstance) + createdMetadata, err := meta.Accessor(createdNoxuInstance) if err != nil { t.Fatal(err) } - if e, a := createdObjectMeta.GetUID(), deletedObjectMeta.GetUID(); e != a { + if e, a := createdMetadata.GetUID(), eventMetadata.GetUID(); e != a { t.Errorf("expected equal UID for (expected) %v, and (actual) %v", createdNoxuInstance, watchEvent.Object) } From 927d1b1045aa1f69e2ef054db5cf28668c7e026d Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Mon, 18 Jun 2018 17:24:42 +0200 Subject: [PATCH 2/2] apiextensions: expect IsNotFound errors for disabled versions in testSimpleCRUD --- .../test/integration/basic_test.go | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go b/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go index 0d6f7b792a5..2a196bd63b1 100644 --- a/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go +++ b/staging/src/k8s.io/apiextensions-apiserver/test/integration/basic_test.go @@ -93,8 +93,8 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta noxuWatch, err := noxuResourceClients[v.Name].Watch(metav1.ListOptions{}) if disabledVersions[v.Name] { - if err == nil { - t.Errorf("expected the watch creation fail for disabled version %s", v.Name) + if !errors.IsNotFound(err) { + t.Errorf("expected the watch operation fail with NotFound for disabled version %s, got error: %v", v.Name, err) } } else { if err != nil { @@ -112,8 +112,8 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta for version, noxuResourceClient := range noxuResourceClients { createdNoxuInstance, err := instantiateVersionedCustomResource(t, testserver.NewVersionedNoxuInstance(ns, "foo", version), noxuResourceClient, noxuDefinition, version) if disabledVersions[version] { - if err == nil { - t.Errorf("expected the CR creation fail for disabled version %s", version) + if !errors.IsNotFound(err) { + t.Errorf("expected the CR creation fail with NotFound for disabled version %s, got error: %v", version, err) } continue } @@ -162,8 +162,9 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta gottenNoxuInstance, err := noxuResourceClient2.Get("foo", metav1.GetOptions{}) if disabledVersions[version2] { - if err == nil { - t.Errorf("expected the get operation fail for disabled version %s", version2) + if !errors.IsNotFound(err) { + t.Errorf("expected the get operation fail with NotFound for disabled version %s, got error: %v", version2, err) + } } else { if err != nil { @@ -178,8 +179,9 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta // List test listWithItem, err := noxuResourceClient2.List(metav1.ListOptions{}) if disabledVersions[version2] { - if err == nil { - t.Errorf("expected the list operation fail for disabled version %s", version2) + if !errors.IsNotFound(err) { + t.Errorf("expected the list operation fail with NotFound for disabled version %s, got error: %v", version2, err) + } } else { if err != nil {