From 3475c3e95551952bd5a5a6f1a93cf2db9b5a78f5 Mon Sep 17 00:00:00 2001 From: carlory Date: Wed, 15 Nov 2023 15:19:31 +0800 Subject: [PATCH] daemonset registry: add unit test for UpdateStatus --- .../apps/daemonset/storage/storage_test.go | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/pkg/registry/apps/daemonset/storage/storage_test.go b/pkg/registry/apps/daemonset/storage/storage_test.go index eaf15ffcdae..57cc368e8ca 100644 --- a/pkg/registry/apps/daemonset/storage/storage_test.go +++ b/pkg/registry/apps/daemonset/storage/storage_test.go @@ -19,12 +19,16 @@ package storage import ( "testing" + "github.com/google/go-cmp/cmp" + apiequality "k8s.io/apimachinery/pkg/api/equality" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" + genericapirequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/registry/generic" genericregistrytest "k8s.io/apiserver/pkg/registry/generic/testing" + "k8s.io/apiserver/pkg/registry/rest" etcd3testing "k8s.io/apiserver/pkg/storage/etcd3/testing" "k8s.io/kubernetes/pkg/apis/apps" api "k8s.io/kubernetes/pkg/apis/core" @@ -189,6 +193,36 @@ func TestWatch(t *testing.T) { ) } +func TestUpdateStatus(t *testing.T) { + storage, statusStorage, server := newStorage(t) + defer server.Terminate(t) + defer storage.Store.DestroyFunc() + + dsStart := newValidDaemonSet() + ctx := genericapirequest.WithNamespace(genericapirequest.NewDefaultContext(), dsStart.Namespace) + key, _ := storage.KeyFunc(ctx, dsStart.Name) + err := storage.Storage.Create(ctx, key, dsStart, nil, 0, false) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + + ds := dsStart.DeepCopy() + ds.Status.ObservedGeneration = 1 + _, _, err = statusStorage.Update(ctx, ds.Name, rest.DefaultUpdatedObjectInfo(ds), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false, &metav1.UpdateOptions{}) + if err != nil { + t.Fatalf("Unexpected error: %v", err) + } + obj, err := storage.Get(ctx, ds.Name, &metav1.GetOptions{}) + if err != nil { + t.Errorf("unexpected error: %v", err) + } + dsOut := obj.(*apps.DaemonSet) + // only compare relevant changes b/c of difference in metadata + if !apiequality.Semantic.DeepEqual(ds.Status, dsOut.Status) { + t.Errorf("unexpected object: %s", cmp.Diff(ds.Status, dsOut.Status)) + } +} + func TestShortNames(t *testing.T) { storage, _, server := newStorage(t) defer server.Terminate(t) @@ -196,5 +230,3 @@ func TestShortNames(t *testing.T) { expected := []string{"ds"} registrytest.AssertShortNames(t, storage, expected) } - -// TODO TestUpdateStatus