github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/controller/rsm/transformer_init_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 "github.com/1aal/kubeblocks/pkg/controller/builder" 27 "github.com/1aal/kubeblocks/pkg/controller/graph" 28 "github.com/1aal/kubeblocks/pkg/controller/model" 29 ) 30 31 var _ = Describe("init transformer test.", func() { 32 BeforeEach(func() { 33 rsm = builder.NewReplicatedStateMachineBuilder(namespace, name). 34 SetUID(uid). 35 SetReplicas(3). 36 GetObject() 37 38 transCtx = &rsmTransformContext{ 39 Context: ctx, 40 Client: graphCli, 41 EventRecorder: nil, 42 Logger: logger, 43 } 44 45 dag = graph.NewDAG() 46 transformer = &initTransformer{ReplicatedStateMachine: rsm} 47 }) 48 49 Context("dag init", func() { 50 It("should work well", func() { 51 Expect(transformer.Transform(transCtx, dag)).Should(Succeed()) 52 dagExpected := graph.NewDAG() 53 root := &model.ObjectVertex{ 54 Obj: rsm, 55 OriObj: rsm.DeepCopy(), 56 Action: model.ActionStatusPtr(), 57 } 58 dagExpected.AddVertex(root) 59 Expect(dag.Equals(dagExpected, less)).Should(BeTrue()) 60 }) 61 }) 62 63 Context("paused test", func() { 64 It("should work well", func() { 65 rsm.Spec.Paused = true 66 Expect(transformer.Transform(transCtx, dag)).Should(Equal(graph.ErrPrematureStop)) 67 dagExpected := graph.NewDAG() 68 root := &model.ObjectVertex{ 69 Obj: rsm, 70 OriObj: rsm.DeepCopy(), 71 Action: model.ActionNoopPtr(), 72 } 73 dagExpected.AddVertex(root) 74 Expect(dag.Equals(dagExpected, less)).Should(BeTrue()) 75 }) 76 }) 77 })