enhance pooler e2e test
This commit is contained in:
parent
43f275c89c
commit
e805f60b77
|
|
@ -468,6 +468,8 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
'''
|
'''
|
||||||
k8s = self.k8s
|
k8s = self.k8s
|
||||||
pooler_label = 'application=db-connection-pooler,cluster-name=acid-minimal-cluster'
|
pooler_label = 'application=db-connection-pooler,cluster-name=acid-minimal-cluster'
|
||||||
|
master_pooler_label = 'connection-pooler=acid-minimal-cluster-pooler'
|
||||||
|
replica_pooler_label = master_pooler_label + '-repl'
|
||||||
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
|
|
||||||
k8s.api.custom_objects_api.patch_namespaced_custom_object(
|
k8s.api.custom_objects_api.patch_namespaced_custom_object(
|
||||||
|
|
@ -477,27 +479,31 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
'spec': {
|
'spec': {
|
||||||
'enableConnectionPooler': True,
|
'enableConnectionPooler': True,
|
||||||
'enableReplicaConnectionPooler': True,
|
'enableReplicaConnectionPooler': True,
|
||||||
|
}
|
||||||
|
})
|
||||||
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
|
|
||||||
|
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(), 2, "Deployment replicas is 2 default")
|
||||||
|
self.eventuallyEqual(lambda: k8s.count_running_pods(master_pooler_label), 2, "No pooler pods found")
|
||||||
|
self.eventuallyEqual(lambda: k8s.count_running_pods(replica_pooler_label), 2, "No pooler replica pods found")
|
||||||
|
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label), 2, "No pooler service found")
|
||||||
|
self.eventuallyEqual(lambda: k8s.count_secrets_with_label(pooler_label), 1, "Pooler secret not created")
|
||||||
|
|
||||||
|
k8s.api.custom_objects_api.patch_namespaced_custom_object(
|
||||||
|
'acid.zalan.do', 'v1', 'default',
|
||||||
|
'postgresqls', 'acid-minimal-cluster',
|
||||||
|
{
|
||||||
|
'spec': {
|
||||||
'enableMasterPoolerLoadBalancer': True,
|
'enableMasterPoolerLoadBalancer': True,
|
||||||
'enableReplicaPoolerLoadBalancer': True,
|
'enableReplicaPoolerLoadBalancer': True,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(), 2,
|
self.eventuallyEqual(lambda: k8s.get_service_type(master_pooler_label+","+pooler_label),
|
||||||
"Deployment replicas is 2 default")
|
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods(
|
|
||||||
"connection-pooler=acid-minimal-cluster-pooler"),
|
|
||||||
2, "No pooler pods found")
|
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods(
|
|
||||||
"connection-pooler=acid-minimal-cluster-pooler-repl"),
|
|
||||||
2, "No pooler replica pods found")
|
|
||||||
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label),
|
|
||||||
2, "No pooler service found")
|
|
||||||
self.eventuallyEqual(lambda: k8s.count_secrets_with_label(pooler_label),
|
|
||||||
1, "Pooler secret not created")
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_service_type("spilo-role=master,"+pooler_label),
|
|
||||||
'LoadBalancer',
|
'LoadBalancer',
|
||||||
"Expected LoadBalancer service type for master pooler pod, found {}")
|
"Expected LoadBalancer service type for master pooler pod, found {}")
|
||||||
self.eventuallyEqual(lambda: k8s.get_service_type("spilo-role=replica,"+pooler_label),
|
self.eventuallyEqual(lambda: k8s.get_service_type(replica_pooler_label+","+pooler_label),
|
||||||
'LoadBalancer',
|
'LoadBalancer',
|
||||||
"Expected LoadBalancer service type for replica pooler pod, found {}")
|
"Expected LoadBalancer service type for replica pooler pod, found {}")
|
||||||
|
|
||||||
|
|
@ -512,15 +518,13 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"},
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
"Operator does not get in sync")
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(name="acid-minimal-cluster-pooler-repl"), 2,
|
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(name="acid-minimal-cluster-pooler-repl"), 2,
|
||||||
"Deployment replicas is 2 default")
|
"Deployment replicas is 2 default")
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods(
|
self.eventuallyEqual(lambda: k8s.count_running_pods(master_pooler_label),
|
||||||
"connection-pooler=acid-minimal-cluster-pooler"),
|
|
||||||
0, "Master pooler pods not deleted")
|
0, "Master pooler pods not deleted")
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods(
|
self.eventuallyEqual(lambda: k8s.count_running_pods(replica_pooler_label),
|
||||||
"connection-pooler=acid-minimal-cluster-pooler-repl"),
|
|
||||||
2, "Pooler replica pods not found")
|
2, "Pooler replica pods not found")
|
||||||
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label),
|
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label),
|
||||||
1, "No pooler service found")
|
1, "No pooler service found")
|
||||||
|
|
@ -539,17 +543,17 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"},
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
"Operator does not get in sync")
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(), 2,
|
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(), 2,
|
||||||
"Deployment replicas is 2 default")
|
"Deployment replicas is 2 default")
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods("connection-pooler=acid-minimal-cluster-pooler"),
|
self.eventuallyEqual(lambda: k8s.count_running_pods(master_pooler_label),
|
||||||
2, "Master pooler pods not found")
|
2, "Master pooler pods not found")
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods("connection-pooler=acid-minimal-cluster-pooler-repl"),
|
self.eventuallyEqual(lambda: k8s.count_running_pods(replica_pooler_label),
|
||||||
0, "Pooler replica pods not deleted")
|
0, "Pooler replica pods not deleted")
|
||||||
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label),
|
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label),
|
||||||
1, "No pooler service found")
|
1, "No pooler service found")
|
||||||
self.eventuallyEqual(lambda: k8s.get_service_type("spilo-role=master,"+pooler_label),
|
self.eventuallyEqual(lambda: k8s.get_service_type(master_pooler_label+","+pooler_label),
|
||||||
'ClusterIP',
|
'ClusterIP',
|
||||||
"Expected LoadBalancer service type for master, found {}")
|
"Expected LoadBalancer service type for master, found {}")
|
||||||
self.eventuallyEqual(lambda: k8s.count_secrets_with_label(pooler_label),
|
self.eventuallyEqual(lambda: k8s.count_secrets_with_label(pooler_label),
|
||||||
|
|
@ -569,7 +573,7 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(), 3,
|
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(), 3,
|
||||||
"Deployment replicas is scaled to 3")
|
"Deployment replicas is scaled to 3")
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods("connection-pooler=acid-minimal-cluster-pooler"),
|
self.eventuallyEqual(lambda: k8s.count_running_pods(master_pooler_label),
|
||||||
3, "Scale up of pooler pods does not work")
|
3, "Scale up of pooler pods does not work")
|
||||||
|
|
||||||
# turn it off, keeping config should be overwritten by false
|
# turn it off, keeping config should be overwritten by false
|
||||||
|
|
@ -583,7 +587,7 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods("connection-pooler=acid-minimal-cluster-pooler"),
|
self.eventuallyEqual(lambda: k8s.count_running_pods(master_pooler_label),
|
||||||
0, "Pooler pods not scaled down")
|
0, "Pooler pods not scaled down")
|
||||||
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label),
|
self.eventuallyEqual(lambda: k8s.count_services_with_label(pooler_label),
|
||||||
0, "Pooler service not removed")
|
0, "Pooler service not removed")
|
||||||
|
|
@ -1188,10 +1192,11 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
|
|
||||||
@timeout_decorator.timeout(TEST_TIMEOUT_SEC)
|
@timeout_decorator.timeout(TEST_TIMEOUT_SEC)
|
||||||
def test_overwrite_pooler_deployment(self):
|
def test_overwrite_pooler_deployment(self):
|
||||||
|
pooler_name = 'acid-minimal-cluster-pooler'
|
||||||
k8s = self.k8s
|
k8s = self.k8s
|
||||||
k8s.create_with_kubectl("manifests/minimal-fake-pooler-deployment.yaml")
|
k8s.create_with_kubectl("manifests/minimal-fake-pooler-deployment.yaml")
|
||||||
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(name="acid-minimal-cluster-pooler"), 1,
|
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(name=pooler_name), 1,
|
||||||
"Initial broken deployment not rolled out")
|
"Initial broken deployment not rolled out")
|
||||||
|
|
||||||
k8s.api.custom_objects_api.patch_namespaced_custom_object(
|
k8s.api.custom_objects_api.patch_namespaced_custom_object(
|
||||||
|
|
@ -1204,7 +1209,7 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
})
|
})
|
||||||
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(name="acid-minimal-cluster-pooler"), 2,
|
self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(name=pooler_name), 2,
|
||||||
"Operator did not succeed in overwriting labels")
|
"Operator did not succeed in overwriting labels")
|
||||||
|
|
||||||
k8s.api.custom_objects_api.patch_namespaced_custom_object(
|
k8s.api.custom_objects_api.patch_namespaced_custom_object(
|
||||||
|
|
@ -1217,7 +1222,7 @@ class EndToEndTestCase(unittest.TestCase):
|
||||||
})
|
})
|
||||||
|
|
||||||
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync")
|
||||||
self.eventuallyEqual(lambda: k8s.count_running_pods("connection-pooler=acid-minimal-cluster-pooler"),
|
self.eventuallyEqual(lambda: k8s.count_running_pods("connection-pooler="+pooler_name),
|
||||||
0, "Pooler pods not scaled down")
|
0, "Pooler pods not scaled down")
|
||||||
|
|
||||||
@timeout_decorator.timeout(TEST_TIMEOUT_SEC)
|
@timeout_decorator.timeout(TEST_TIMEOUT_SEC)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue