Add tests for load balancer function logic
This commit is contained in:
parent
ced770a827
commit
8967a3be2c
|
|
@ -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