github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/pkg/testutil/apps/cluster_stateless_test_util.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 apps
    21  
    22  import (
    23  	appsv1 "k8s.io/api/apps/v1"
    24  	corev1 "k8s.io/api/core/v1"
    25  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    26  
    27  	"github.com/1aal/kubeblocks/pkg/constant"
    28  	"github.com/1aal/kubeblocks/pkg/testutil"
    29  )
    30  
    31  // MockStatelessComponentDeploy mocks a deployment workload of the stateless component.
    32  func MockStatelessComponentDeploy(testCtx *testutil.TestContext, clusterName, componentName string) *appsv1.Deployment {
    33  	deployName := clusterName + "-" + componentName
    34  	return NewDeploymentFactory(testCtx.DefaultNamespace, deployName, clusterName, componentName).SetMinReadySeconds(int32(10)).SetReplicas(int32(2)).
    35  		AddContainer(corev1.Container{Name: DefaultNginxContainerName, Image: NginxImage}).Create(testCtx).GetObject()
    36  }
    37  
    38  // MockStatelessPod mocks the pods of the deployment workload.
    39  func MockStatelessPod(testCtx *testutil.TestContext, deploy *appsv1.Deployment, clusterName, componentName, podName string) *corev1.Pod {
    40  	var newRs *appsv1.ReplicaSet
    41  	if deploy != nil {
    42  		newRs = &appsv1.ReplicaSet{
    43  			ObjectMeta: metav1.ObjectMeta{
    44  				UID:  "ss-456",
    45  				Name: deploy.Name + "-5847cb795c",
    46  			},
    47  		}
    48  	}
    49  	return NewPodFactory(testCtx.DefaultNamespace, podName).
    50  		SetOwnerReferences("apps/v1", constant.ReplicaSetKind, newRs).
    51  		AddAppInstanceLabel(clusterName).
    52  		AddAppComponentLabel(componentName).
    53  		AddAppManagedByLabel().
    54  		AddContainer(corev1.Container{Name: DefaultNginxContainerName, Image: NginxImage}).
    55  		Create(testCtx).GetObject()
    56  }