github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/controller/rsm/transformer_fix_meta_test.go (about) 1 /* 2 Copyright (C) 2022-2023 ApeCloud Co., Ltd 3 4 This file is part of KubeBlocks project 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU Affero General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU Affero General Public License for more details. 15 16 You should have received a copy of the GNU Affero General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 package rsm 21 22 import ( 23 . "github.com/onsi/ginkgo/v2" 24 . "github.com/onsi/gomega" 25 26 "k8s.io/utils/strings/slices" 27 28 workloads "github.com/1aal/kubeblocks/apis/workloads/v1alpha1" 29 "github.com/1aal/kubeblocks/pkg/controller/builder" 30 "github.com/1aal/kubeblocks/pkg/controller/graph" 31 "github.com/1aal/kubeblocks/pkg/controller/model" 32 ) 33 34 var _ = Describe("fix meta transformer test.", func() { 35 BeforeEach(func() { 36 rsm = builder.NewReplicatedStateMachineBuilder(namespace, name). 37 SetUID(uid). 38 SetReplicas(3). 39 GetObject() 40 41 transCtx = &rsmTransformContext{ 42 Context: ctx, 43 Client: graphCli, 44 EventRecorder: nil, 45 Logger: logger, 46 rsmOrig: rsm.DeepCopy(), 47 rsm: rsm, 48 } 49 50 dag = mockDAG() 51 transformer = &FixMetaTransformer{} 52 }) 53 54 Context("fix meta", func() { 55 It("should work well", func() { 56 Expect(transformer.Transform(transCtx, dag)).Should(Equal(graph.ErrPrematureStop)) 57 dagExpected := graph.NewDAG() 58 root := &model.ObjectVertex{ 59 Obj: transCtx.rsm, 60 OriObj: transCtx.rsmOrig, 61 Action: model.ActionUpdatePtr(), 62 } 63 dagExpected.AddVertex(root) 64 Expect(dag.Equals(dagExpected, less)).Should(BeTrue()) 65 root, err := model.FindRootVertex(dag) 66 Expect(err).Should(BeNil()) 67 rsmNew, ok := root.Obj.(*workloads.ReplicatedStateMachine) 68 Expect(ok).Should(BeTrue()) 69 Expect(rsmNew.Finalizers).ShouldNot(BeNil()) 70 Expect(slices.Contains(rsmNew.Finalizers, getFinalizer(rsmNew))).Should(BeTrue()) 71 }) 72 }) 73 })