github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/cli/cmd/migration/describe_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 migration 21 22 import ( 23 "time" 24 25 . "github.com/onsi/ginkgo/v2" 26 . "github.com/onsi/gomega" 27 28 appv1 "k8s.io/api/apps/v1" 29 corev1 "k8s.io/api/core/v1" 30 v1 "k8s.io/apimachinery/pkg/apis/meta/v1" 31 "k8s.io/cli-runtime/pkg/genericiooptions" 32 cmdtesting "k8s.io/kubectl/pkg/cmd/testing" 33 ) 34 35 var _ = Describe("describe", func() { 36 37 var ( 38 streams genericiooptions.IOStreams 39 tf *cmdtesting.TestFactory 40 ) 41 42 It("command build", func() { 43 cmd := NewMigrationDescribeCmd(tf, streams) 44 Expect(cmd).ShouldNot(BeNil()) 45 }) 46 47 It("func test", func() { 48 sts := appv1.StatefulSet{ 49 Status: appv1.StatefulSetStatus{ 50 Replicas: 1, 51 }, 52 } 53 pod := corev1.Pod{} 54 55 sts.Status.AvailableReplicas = 0 56 pod.Status.Phase = corev1.PodFailed 57 Expect(getCdcStatus(&sts, &pod)).Should(Equal(corev1.PodFailed)) 58 59 sts.Status.AvailableReplicas = 1 60 pod.Status.Phase = corev1.PodPending 61 Expect(getCdcStatus(&sts, &pod)).Should(Equal(corev1.PodPending)) 62 63 sts.Status.AvailableReplicas = 1 64 pod.Status.Phase = corev1.PodRunning 65 Expect(getCdcStatus(&sts, &pod)).Should(Equal(corev1.PodRunning)) 66 67 sts.Status.AvailableReplicas = 0 68 t1, _ := time.ParseDuration("-30m") 69 sts.CreationTimestamp = v1.NewTime(time.Now().Add(t1)) 70 pod.Status.Phase = corev1.PodRunning 71 Expect(getCdcStatus(&sts, &pod)).Should(Equal(corev1.PodFailed)) 72 73 sts.Status.AvailableReplicas = 0 74 sts.CreationTimestamp = v1.NewTime(time.Now()) 75 pod.Status.Phase = corev1.PodRunning 76 Expect(getCdcStatus(&sts, &pod)).Should(Equal(corev1.PodPending)) 77 }) 78 79 })