Add and update tests
This commit is contained in:
parent
1ee79887cf
commit
683cb15b0d
|
|
@ -46,6 +46,7 @@ func TestConnectionPoolerCreationAndDeletion(t *testing.T) {
|
||||||
|
|
||||||
cluster.Spec = acidv1.PostgresSpec{
|
cluster.Spec = acidv1.PostgresSpec{
|
||||||
ConnectionPooler: &acidv1.ConnectionPooler{},
|
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||||
|
EnableReplicaConnectionPooler: boolToPointer(true),
|
||||||
}
|
}
|
||||||
poolerResources, err := cluster.createConnectionPooler(mockInstallLookupFunction)
|
poolerResources, err := cluster.createConnectionPooler(mockInstallLookupFunction)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -912,9 +912,14 @@ func (c *Cluster) syncConnectionPooler(oldSpec,
|
||||||
otherRole = Master
|
otherRole = Master
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if c.ConnectionPooler != nil &&
|
||||||
|
(c.ConnectionPooler.Deployment[role] != nil ||
|
||||||
|
c.ConnectionPooler.Service[role] != nil) {
|
||||||
|
|
||||||
if err = c.deleteConnectionPooler(role); err != nil {
|
if err = c.deleteConnectionPooler(role); err != nil {
|
||||||
c.logger.Warningf("could not remove connection pooler: %v", err)
|
c.logger.Warningf("could not remove connection pooler: %v", err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if c.ConnectionPooler != nil && c.ConnectionPooler.Deployment[otherRole] == nil && c.ConnectionPooler.Service[otherRole] == nil {
|
if c.ConnectionPooler != nil && c.ConnectionPooler.Deployment[otherRole] == nil && c.ConnectionPooler.Service[otherRole] == nil {
|
||||||
c.ConnectionPooler = nil
|
c.ConnectionPooler = nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,8 +34,7 @@ func objectsAreSaved(cluster *Cluster, err error, reason SyncReason) error {
|
||||||
return fmt.Errorf("Connection pooler resources are empty")
|
return fmt.Errorf("Connection pooler resources are empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, role := range cluster.RolesConnectionPooler() {
|
for _, role := range []PostgresRole{Master, Replica} {
|
||||||
if role != "" {
|
|
||||||
if cluster.ConnectionPooler.Deployment[role] == nil {
|
if cluster.ConnectionPooler.Deployment[role] == nil {
|
||||||
return fmt.Errorf("Deployment was not saved %s", role)
|
return fmt.Errorf("Deployment was not saved %s", role)
|
||||||
}
|
}
|
||||||
|
|
@ -44,6 +43,37 @@ func objectsAreSaved(cluster *Cluster, err error, reason SyncReason) error {
|
||||||
return fmt.Errorf("Service was not saved %s", role)
|
return fmt.Errorf("Service was not saved %s", role)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func MasterobjectsAreSaved(cluster *Cluster, err error, reason SyncReason) error {
|
||||||
|
if cluster.ConnectionPooler == nil {
|
||||||
|
return fmt.Errorf("Connection pooler resources are empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
if cluster.ConnectionPooler.Deployment[Master] == nil {
|
||||||
|
return fmt.Errorf("Deployment was not saved")
|
||||||
|
}
|
||||||
|
|
||||||
|
if cluster.ConnectionPooler.Service[Master] == nil {
|
||||||
|
return fmt.Errorf("Service was not saved")
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func ReplicaobjectsAreSaved(cluster *Cluster, err error, reason SyncReason) error {
|
||||||
|
if cluster.ConnectionPooler == nil {
|
||||||
|
return fmt.Errorf("Connection pooler resources are empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
if cluster.ConnectionPooler.Deployment[Replica] == nil {
|
||||||
|
return fmt.Errorf("Deployment was not saved")
|
||||||
|
}
|
||||||
|
|
||||||
|
if cluster.ConnectionPooler.Service[Replica] == nil {
|
||||||
|
return fmt.Errorf("Service was not saved")
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -59,23 +89,19 @@ func objectsAreDeleted(cluster *Cluster, err error, reason SyncReason) error {
|
||||||
|
|
||||||
func OnlyMasterDeleted(cluster *Cluster, err error, reason SyncReason) error {
|
func OnlyMasterDeleted(cluster *Cluster, err error, reason SyncReason) error {
|
||||||
|
|
||||||
for _, role := range cluster.RolesConnectionPooler() {
|
|
||||||
if cluster.ConnectionPooler != nil &&
|
if cluster.ConnectionPooler != nil &&
|
||||||
(cluster.ConnectionPooler.Deployment[role] != nil && cluster.ConnectionPooler.Service[role] != nil) {
|
(cluster.ConnectionPooler.Deployment[Master] != nil || cluster.ConnectionPooler.Service[Master] != nil) {
|
||||||
return fmt.Errorf("Connection pooler master was not deleted")
|
return fmt.Errorf("Connection pooler master was not deleted")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func OnlyReplicaDeleted(cluster *Cluster, err error, reason SyncReason) error {
|
func OnlyReplicaDeleted(cluster *Cluster, err error, reason SyncReason) error {
|
||||||
|
|
||||||
for _, role := range cluster.RolesConnectionPooler() {
|
|
||||||
if cluster.ConnectionPooler != nil &&
|
if cluster.ConnectionPooler != nil &&
|
||||||
(cluster.ConnectionPooler.Deployment[role] != nil && cluster.ConnectionPooler.Service[role] != nil) {
|
(cluster.ConnectionPooler.Deployment[Replica] != nil || cluster.ConnectionPooler.Service[Replica] != nil) {
|
||||||
return fmt.Errorf("Connection pooler replica was not deleted")
|
return fmt.Errorf("Connection pooler replica was not deleted")
|
||||||
}
|
}
|
||||||
}
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,6 +167,7 @@ func TestConnectionPoolerSynchronization(t *testing.T) {
|
||||||
|
|
||||||
clusterDirtyMock.ConnectionPooler.Deployment[Replica] = &appsv1.Deployment{}
|
clusterDirtyMock.ConnectionPooler.Deployment[Replica] = &appsv1.Deployment{}
|
||||||
clusterDirtyMock.ConnectionPooler.Service[Replica] = &v1.Service{}
|
clusterDirtyMock.ConnectionPooler.Service[Replica] = &v1.Service{}
|
||||||
|
|
||||||
clusterNewDefaultsMock := newCluster()
|
clusterNewDefaultsMock := newCluster()
|
||||||
clusterNewDefaultsMock.KubeClient = k8sutil.NewMockKubernetesClient()
|
clusterNewDefaultsMock.KubeClient = k8sutil.NewMockKubernetesClient()
|
||||||
|
|
||||||
|
|
@ -168,7 +195,7 @@ func TestConnectionPoolerSynchronization(t *testing.T) {
|
||||||
cluster: clusterMissingObjects,
|
cluster: clusterMissingObjects,
|
||||||
defaultImage: "pooler:1.0",
|
defaultImage: "pooler:1.0",
|
||||||
defaultInstances: 1,
|
defaultInstances: 1,
|
||||||
check: objectsAreSaved,
|
check: MasterobjectsAreSaved,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
subTest: "create if doesn't exist with a flag",
|
subTest: "create if doesn't exist with a flag",
|
||||||
|
|
@ -183,7 +210,7 @@ func TestConnectionPoolerSynchronization(t *testing.T) {
|
||||||
cluster: clusterMissingObjects,
|
cluster: clusterMissingObjects,
|
||||||
defaultImage: "pooler:1.0",
|
defaultImage: "pooler:1.0",
|
||||||
defaultInstances: 1,
|
defaultInstances: 1,
|
||||||
check: objectsAreSaved,
|
check: MasterobjectsAreSaved,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
subTest: "create replica if doesn't exist with a flag",
|
subTest: "create replica if doesn't exist with a flag",
|
||||||
|
|
@ -192,13 +219,29 @@ func TestConnectionPoolerSynchronization(t *testing.T) {
|
||||||
},
|
},
|
||||||
newSpec: &acidv1.Postgresql{
|
newSpec: &acidv1.Postgresql{
|
||||||
Spec: acidv1.PostgresSpec{
|
Spec: acidv1.PostgresSpec{
|
||||||
|
ConnectionPooler: &acidv1.ConnectionPooler{},
|
||||||
EnableReplicaConnectionPooler: boolToPointer(true),
|
EnableReplicaConnectionPooler: boolToPointer(true),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
cluster: clusterReplicaDirtyMock,
|
cluster: clusterDirtyMock,
|
||||||
defaultImage: "pooler:1.0",
|
defaultImage: "pooler:1.0",
|
||||||
defaultInstances: 1,
|
defaultInstances: 1,
|
||||||
check: objectsAreSaved,
|
check: ReplicaobjectsAreSaved,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
subTest: "create no replica with flag",
|
||||||
|
oldSpec: &acidv1.Postgresql{
|
||||||
|
Spec: acidv1.PostgresSpec{},
|
||||||
|
},
|
||||||
|
newSpec: &acidv1.Postgresql{
|
||||||
|
Spec: acidv1.PostgresSpec{
|
||||||
|
EnableReplicaConnectionPooler: boolToPointer(false),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cluster: clusterDirtyMock,
|
||||||
|
defaultImage: "pooler:1.0",
|
||||||
|
defaultInstances: 1,
|
||||||
|
check: objectsAreDeleted,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
subTest: "create from scratch",
|
subTest: "create from scratch",
|
||||||
|
|
@ -213,7 +256,7 @@ func TestConnectionPoolerSynchronization(t *testing.T) {
|
||||||
cluster: clusterMissingObjects,
|
cluster: clusterMissingObjects,
|
||||||
defaultImage: "pooler:1.0",
|
defaultImage: "pooler:1.0",
|
||||||
defaultInstances: 1,
|
defaultInstances: 1,
|
||||||
check: objectsAreSaved,
|
check: MasterobjectsAreSaved,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
subTest: "create both master and replica",
|
subTest: "create both master and replica",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue