You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by tu...@apache.org on 2022/11/30 06:17:39 UTC

[shardingsphere-on-cloud] branch main updated: chore: add unit test for reconcile ConstructCascadingService

This is an automated email from the ASF dual-hosted git repository.

tuichenchuxin pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/shardingsphere-on-cloud.git


The following commit(s) were added to refs/heads/main by this push:
     new ac0343f  chore: add unit test for reconcile ConstructCascadingService
     new 8407647  Merge pull request #123 from mlycore/add-ut
ac0343f is described below

commit ac0343fc6757ea857f5b7b426051b2dc9223fcc5
Author: mlycore <ma...@126.com>
AuthorDate: Wed Nov 30 14:10:00 2022 +0800

    chore: add unit test for reconcile ConstructCascadingService
    
    Signed-off-by: mlycore <ma...@126.com>
---
 .../pkg/reconcile/reconcile_test.go                | 61 ++++++++++++++++++++++
 shardingsphere-operator/pkg/reconcile/resource.go  |  3 ++
 2 files changed, 64 insertions(+)

diff --git a/shardingsphere-operator/pkg/reconcile/reconcile_test.go b/shardingsphere-operator/pkg/reconcile/reconcile_test.go
index ab6dd55..6dbad0d 100644
--- a/shardingsphere-operator/pkg/reconcile/reconcile_test.go
+++ b/shardingsphere-operator/pkg/reconcile/reconcile_test.go
@@ -463,7 +463,68 @@ func Test_ConstructCascadingDeployment(t *testing.T) {
 }
 
 func Test_ConstructCascadingService(t *testing.T) {
+	cases := []struct {
+		proxy   *v1alpha1.ShardingSphereProxy
+		exp     *v1.Service
+		message string
+	}{
+		{
+			exp:     &v1.Service{},
+			message: "Nil ShardingSphereProxy definition should lead to empty Service",
+		},
+		{
+			proxy:   &v1alpha1.ShardingSphereProxy{},
+			exp:     &v1.Service{},
+			message: "Empty ShardingSphereProxy definition should lead to empty Service",
+		},
+		{
+			proxy: &v1alpha1.ShardingSphereProxy{
+				ObjectMeta: metav1.ObjectMeta{
+					Name:      "testname",
+					Namespace: "testnamespace",
+				},
+				Spec: v1alpha1.ProxySpec{
+					ServiceType: v1alpha1.ServiceType{
+						Type:     v1.ServiceTypeNodePort,
+						NodePort: 33007,
+					},
+					Port: 3307,
+				},
+			},
+			exp: &v1.Service{
+				ObjectMeta: metav1.ObjectMeta{
+					Name:      "testname",
+					Namespace: "testnamespace",
+				},
+				Spec: v1.ServiceSpec{
+					Selector: map[string]string{
+						"apps": "testname",
+					},
+					Type: v1.ServiceTypeNodePort,
+					Ports: []v1.ServicePort{
+						{
+							Name:       "proxy-port",
+							TargetPort: fromInt32(3307),
+							Port:       3307,
+							NodePort:   33007,
+						},
+					},
+				},
+			},
+			message: "Normal ShardingSphereProxy definition should lead to normal Service",
+		},
+	}
 
+	for _, c := range cases {
+		act := ConstructCascadingService(c.proxy)
+		assert.Equal(t, c.exp.ObjectMeta.Name, act.ObjectMeta.Name, c.message)
+		assert.Equal(t, c.exp.ObjectMeta.Namespace, act.ObjectMeta.Namespace, c.message)
+		if c.proxy != nil {
+			assert.EqualValues(t, c.exp.Spec.Selector, act.Spec.Selector, c.message)
+			assert.Equal(t, c.exp.Spec.Type, act.Spec.Type, c.message)
+			assert.Equal(t, c.exp.Spec.Ports, act.Spec.Ports, c.message)
+		}
+	}
 }
 
 func Test_addInitContaienr(t *testing.T) {
diff --git a/shardingsphere-operator/pkg/reconcile/resource.go b/shardingsphere-operator/pkg/reconcile/resource.go
index 66f0be0..3ace3d5 100644
--- a/shardingsphere-operator/pkg/reconcile/resource.go
+++ b/shardingsphere-operator/pkg/reconcile/resource.go
@@ -159,6 +159,9 @@ func ConstructCascadingDeployment(proxy *v1alpha1.ShardingSphereProxy) *appsv1.D
 }
 
 func ConstructCascadingService(proxy *v1alpha1.ShardingSphereProxy) *v1.Service {
+	if proxy == nil || reflect.DeepEqual(proxy, &v1alpha1.ShardingSphereProxy{}) {
+		return &v1.Service{}
+	}
 
 	svc := v1.Service{
 		ObjectMeta: metav1.ObjectMeta{