Add tests for load balancer function logic by Dmitrii Dolgov
This commit is contained in:
		
						commit
						edf710d772
					
				|  | @ -17,4 +17,4 @@ install: | |||
|   - make deps | ||||
| 
 | ||||
| script: | ||||
|   - travis_wait 20 goveralls -service=travis-ci -package ./pkg/... -package ./cmd/... -v | ||||
|   - travis_wait 20 goveralls -service=travis-ci -package ./pkg/... -v | ||||
|  |  | |||
|  | @ -6,6 +6,9 @@ pipeline: | |||
|         GOPATH: /root/go | ||||
|         OPERATOR_TOP_DIR: /root/go/src/github.com/zalando-incubator | ||||
|       commands: | ||||
|         - desc: 'Update' | ||||
|           cmd: | | ||||
|             apt-get update | ||||
|         - desc: 'Install required build software' | ||||
|           cmd: | | ||||
|             apt-get install -y make git apt-transport-https ca-certificates curl | ||||
|  |  | |||
|  | @ -0,0 +1,94 @@ | |||
| package cluster | ||||
| 
 | ||||
| import ( | ||||
| 	"github.com/zalando-incubator/postgres-operator/pkg/spec" | ||||
| 	"github.com/zalando-incubator/postgres-operator/pkg/util/config" | ||||
| 	"github.com/zalando-incubator/postgres-operator/pkg/util/k8sutil" | ||||
| 	"testing" | ||||
| ) | ||||
| 
 | ||||
| func True() *bool { | ||||
| 	b := true | ||||
| 	return &b | ||||
| } | ||||
| 
 | ||||
| func False() *bool { | ||||
| 	b := false | ||||
| 	return &b | ||||
| } | ||||
| 
 | ||||
| func TestCreateLoadBalancerLogic(t *testing.T) { | ||||
| 	var cluster = New( | ||||
| 		Config{ | ||||
| 			OpConfig: config.Config{ | ||||
| 				ProtectedRoles: []string{"admin"}, | ||||
| 				Auth: config.Auth{ | ||||
| 					SuperUsername:       superUserName, | ||||
| 					ReplicationUsername: replicationUserName, | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, k8sutil.KubernetesClient{}, spec.Postgresql{}, logger) | ||||
| 
 | ||||
| 	testName := "TestCreateLoadBalancerLogic" | ||||
| 	tests := []struct { | ||||
| 		subtest  string | ||||
| 		role     PostgresRole | ||||
| 		spec     *spec.PostgresSpec | ||||
| 		opConfig config.Config | ||||
| 		result   bool | ||||
| 	}{ | ||||
| 		{ | ||||
| 			subtest:  "new format, load balancer is enabled for replica", | ||||
| 			role:     Replica, | ||||
| 			spec:     &spec.PostgresSpec{EnableReplicaLoadBalancer: True()}, | ||||
| 			opConfig: config.Config{}, | ||||
| 			result:   true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			subtest:  "new format, load balancer is disabled for replica", | ||||
| 			role:     Replica, | ||||
| 			spec:     &spec.PostgresSpec{EnableReplicaLoadBalancer: False()}, | ||||
| 			opConfig: config.Config{}, | ||||
| 			result:   false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			subtest:  "new format, load balancer isn't specified for replica", | ||||
| 			role:     Replica, | ||||
| 			spec:     &spec.PostgresSpec{EnableReplicaLoadBalancer: nil}, | ||||
| 			opConfig: config.Config{EnableReplicaLoadBalancer: true}, | ||||
| 			result:   true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			subtest:  "new format, load balancer isn't specified for replica", | ||||
| 			role:     Replica, | ||||
| 			spec:     &spec.PostgresSpec{EnableReplicaLoadBalancer: nil}, | ||||
| 			opConfig: config.Config{EnableReplicaLoadBalancer: false}, | ||||
| 			result:   false, | ||||
| 		}, | ||||
| 		{ | ||||
| 			subtest:  "old format, load balancer is enabled for replica", | ||||
| 			role:     Replica, | ||||
| 			spec:     &spec.PostgresSpec{ReplicaLoadBalancer: True()}, | ||||
| 			opConfig: config.Config{}, | ||||
| 			result:   true, | ||||
| 		}, | ||||
| 		{ | ||||
| 			subtest: "old format has priority", | ||||
| 			role:    Replica, | ||||
| 			spec: &spec.PostgresSpec{ | ||||
| 				ReplicaLoadBalancer:       True(), | ||||
| 				EnableReplicaLoadBalancer: False(), | ||||
| 			}, | ||||
| 			opConfig: config.Config{}, | ||||
| 			result:   true, | ||||
| 		}, | ||||
| 	} | ||||
| 	for _, tt := range tests { | ||||
| 		cluster.OpConfig = tt.opConfig | ||||
| 		result := cluster.shouldCreateLoadBalancerForService(tt.role, tt.spec) | ||||
| 		if tt.result != result { | ||||
| 			t.Errorf("%s %s: Load balancer is %t, expect %t for role %#v and spec %#v", | ||||
| 				testName, tt.subtest, result, tt.result, tt.role, tt.spec) | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue