bump kind and use k8s = self.k8s in every test (#1640)
This commit is contained in:
		
							parent
							
								
									d0d7a32d52
								
							
						
					
					
						commit
						f7b221de25
					
				|  | @ -47,7 +47,7 @@ tools: | ||||||
| 	# install pinned version of 'kind' | 	# install pinned version of 'kind' | ||||||
| 	# go get must run outside of a dir with a (module-based) Go project ! | 	# go get must run outside of a dir with a (module-based) Go project ! | ||||||
| 	# otherwise go get updates project's dependencies and/or behaves differently | 	# otherwise go get updates project's dependencies and/or behaves differently | ||||||
| 	cd "/tmp" && GO111MODULE=on go get sigs.k8s.io/kind@v0.9.0 | 	cd "/tmp" && GO111MODULE=on go get sigs.k8s.io/kind@v0.11.1 | ||||||
| 
 | 
 | ||||||
| e2etest: tools copy clean | e2etest: tools copy clean | ||||||
| 	./run.sh main | 	./run.sh main | ||||||
|  |  | ||||||
|  | @ -161,6 +161,7 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|         ''' |         ''' | ||||||
|            Extend postgres container capabilities |            Extend postgres container capabilities | ||||||
|         ''' |         ''' | ||||||
|  |         k8s = self.k8s | ||||||
|         cluster_label = 'application=spilo,cluster-name=acid-minimal-cluster' |         cluster_label = 'application=spilo,cluster-name=acid-minimal-cluster' | ||||||
|         capabilities = ["SYS_NICE","CHOWN"] |         capabilities = ["SYS_NICE","CHOWN"] | ||||||
|         patch_capabilities = { |         patch_capabilities = { | ||||||
|  | @ -170,18 +171,18 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         # get node and replica (expected target of new master) |         # get node and replica (expected target of new master) | ||||||
|         _, replica_nodes = self.k8s.get_pg_nodes(cluster_label) |         _, replica_nodes = k8s.get_pg_nodes(cluster_label) | ||||||
| 
 | 
 | ||||||
|         try: |         try: | ||||||
|             self.k8s.update_config(patch_capabilities) |             k8s.update_config(patch_capabilities) | ||||||
|             self.eventuallyEqual(lambda: self.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") | ||||||
| 
 | 
 | ||||||
|             # changed security context of postrges container should trigger a rolling update |             # changed security context of postrges container should trigger a rolling update | ||||||
|             self.k8s.wait_for_pod_failover(replica_nodes, 'spilo-role=master,' + cluster_label) |             k8s.wait_for_pod_failover(replica_nodes, 'spilo-role=master,' + cluster_label) | ||||||
|             self.k8s.wait_for_pod_start('spilo-role=replica,' + cluster_label) |             k8s.wait_for_pod_start('spilo-role=replica,' + cluster_label) | ||||||
| 
 | 
 | ||||||
|             self.eventuallyEqual(lambda: self.k8s.count_pods_with_container_capabilities(capabilities, cluster_label), |             self.eventuallyEqual(lambda: k8s.count_pods_with_container_capabilities(capabilities, cluster_label), | ||||||
|                                 2, "Container capabilities not updated") |                                 2, "Container capabilities not updated") | ||||||
| 
 | 
 | ||||||
|         except timeout_decorator.TimeoutError: |         except timeout_decorator.TimeoutError: | ||||||
|  | @ -193,6 +194,8 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|         ''' |         ''' | ||||||
|            Test PostgresTeam CRD with extra teams and members |            Test PostgresTeam CRD with extra teams and members | ||||||
|         ''' |         ''' | ||||||
|  |         k8s = self.k8s | ||||||
|  | 
 | ||||||
|         # enable PostgresTeam CRD and lower resync |         # enable PostgresTeam CRD and lower resync | ||||||
|         enable_postgres_team_crd = { |         enable_postgres_team_crd = { | ||||||
|             "data": { |             "data": { | ||||||
|  | @ -202,11 +205,11 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|                 "resync_period": "15s" |                 "resync_period": "15s" | ||||||
|             }, |             }, | ||||||
|         } |         } | ||||||
|         self.k8s.update_config(enable_postgres_team_crd) |         k8s.update_config(enable_postgres_team_crd) | ||||||
|         self.eventuallyEqual(lambda: self.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.k8s.api.custom_objects_api.patch_namespaced_custom_object( |         k8s.api.custom_objects_api.patch_namespaced_custom_object( | ||||||
|         'acid.zalan.do', 'v1', 'default', |         'acid.zalan.do', 'v1', 'default', | ||||||
|         'postgresteams', 'custom-team-membership', |         'postgresteams', 'custom-team-membership', | ||||||
|         { |         { | ||||||
|  | @ -224,7 +227,7 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|             } |             } | ||||||
|         }) |         }) | ||||||
| 
 | 
 | ||||||
|         leader = self.k8s.get_cluster_leader_pod() |         leader = k8s.get_cluster_leader_pod() | ||||||
|         user_query = """ |         user_query = """ | ||||||
|             SELECT rolname |             SELECT rolname | ||||||
|               FROM pg_catalog.pg_roles |               FROM pg_catalog.pg_roles | ||||||
|  | @ -234,7 +237,7 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|             "Not all additional users found in database", 10, 5) |             "Not all additional users found in database", 10, 5) | ||||||
| 
 | 
 | ||||||
|         # replace additional member and check if the removed member's role is renamed |         # replace additional member and check if the removed member's role is renamed | ||||||
|         self.k8s.api.custom_objects_api.patch_namespaced_custom_object( |         k8s.api.custom_objects_api.patch_namespaced_custom_object( | ||||||
|         'acid.zalan.do', 'v1', 'default', |         'acid.zalan.do', 'v1', 'default', | ||||||
|         'postgresteams', 'custom-team-membership', |         'postgresteams', 'custom-team-membership', | ||||||
|         { |         { | ||||||
|  | @ -257,7 +260,7 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|             "Database role of replaced member in PostgresTeam not renamed", 10, 5) |             "Database role of replaced member in PostgresTeam not renamed", 10, 5) | ||||||
| 
 | 
 | ||||||
|         # re-add additional member and check if the role is renamed back |         # re-add additional member and check if the role is renamed back | ||||||
|         self.k8s.api.custom_objects_api.patch_namespaced_custom_object( |         k8s.api.custom_objects_api.patch_namespaced_custom_object( | ||||||
|         'acid.zalan.do', 'v1', 'default', |         'acid.zalan.do', 'v1', 'default', | ||||||
|         'postgresteams', 'custom-team-membership', |         'postgresteams', 'custom-team-membership', | ||||||
|         { |         { | ||||||
|  | @ -285,8 +288,8 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|                 "resync_period": "30m", |                 "resync_period": "30m", | ||||||
|             }, |             }, | ||||||
|         } |         } | ||||||
|         self.k8s.update_config(revert_resync) |         k8s.update_config(revert_resync) | ||||||
|         self.eventuallyEqual(lambda: self.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") | ||||||
| 
 | 
 | ||||||
|     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) |     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) | ||||||
|  | @ -302,13 +305,13 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|                 "enable_cross_namespace_secret": "true" |                 "enable_cross_namespace_secret": "true" | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         self.k8s.update_config(patch_cross_namespace_secret, |         k8s.update_config(patch_cross_namespace_secret, | ||||||
|                           step="cross namespace secrets enabled") |                           step="cross namespace secrets enabled") | ||||||
|         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") | ||||||
| 
 | 
 | ||||||
|         # create secret in test namespace |         # create secret in test namespace | ||||||
|         self.k8s.api.custom_objects_api.patch_namespaced_custom_object( |         k8s.api.custom_objects_api.patch_namespaced_custom_object( | ||||||
|             'acid.zalan.do', 'v1', 'default', |             'acid.zalan.do', 'v1', 'default', | ||||||
|             'postgresqls', 'acid-minimal-cluster', |             'postgresqls', 'acid-minimal-cluster', | ||||||
|             { |             { | ||||||
|  | @ -321,7 +324,7 @@ 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: self.k8s.count_secrets_with_label("cluster-name=acid-minimal-cluster,application=spilo", self.test_namespace), |         self.eventuallyEqual(lambda: k8s.count_secrets_with_label("cluster-name=acid-minimal-cluster,application=spilo", self.test_namespace), | ||||||
|                              1, "Secret not created for user in namespace") |                              1, "Secret not created for user in namespace") | ||||||
| 
 | 
 | ||||||
|     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) |     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) | ||||||
|  | @ -928,7 +931,7 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|                 plural="postgresqls", |                 plural="postgresqls", | ||||||
|                 name="acid-minimal-cluster", |                 name="acid-minimal-cluster", | ||||||
|                 body=patch_node_affinity_config) |                 body=patch_node_affinity_config) | ||||||
|             self.eventuallyEqual(lambda: self.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") | ||||||
| 
 | 
 | ||||||
|             # node affinity change should cause replica to relocate from replica node to master node due to node affinity requirement |             # node affinity change should cause replica to relocate from replica node to master node due to node affinity requirement | ||||||
|             k8s.wait_for_pod_failover(master_node, 'spilo-role=replica,' + cluster_label) |             k8s.wait_for_pod_failover(master_node, 'spilo-role=replica,' + cluster_label) | ||||||
|  | @ -960,7 +963,7 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|                 plural="postgresqls", |                 plural="postgresqls", | ||||||
|                 name="acid-minimal-cluster", |                 name="acid-minimal-cluster", | ||||||
|                 body=patch_node_remove_affinity_config) |                 body=patch_node_remove_affinity_config) | ||||||
|             self.eventuallyEqual(lambda: self.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(), 2, "No 2 pods running") |             self.eventuallyEqual(lambda: k8s.count_running_pods(), 2, "No 2 pods running") | ||||||
|             self.eventuallyEqual(lambda: len(k8s.get_patroni_running_members("acid-minimal-cluster-0")), 2, "Postgres status did not enter running") |             self.eventuallyEqual(lambda: len(k8s.get_patroni_running_members("acid-minimal-cluster-0")), 2, "Postgres status did not enter running") | ||||||
|  | @ -1024,12 +1027,13 @@ 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): | ||||||
|         self.k8s.create_with_kubectl("manifests/minimal-fake-pooler-deployment.yaml") |         k8s = self.k8s | ||||||
|         self.eventuallyEqual(lambda: self.k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync") |         k8s.create_with_kubectl("manifests/minimal-fake-pooler-deployment.yaml") | ||||||
|         self.eventuallyEqual(lambda: self.k8s.get_deployment_replica_count(name="acid-minimal-cluster-pooler"), 1, |         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, | ||||||
|                              "Initial broken deployment not rolled out") |                              "Initial broken deployment not rolled out") | ||||||
| 
 | 
 | ||||||
|         self.k8s.api.custom_objects_api.patch_namespaced_custom_object( |         k8s.api.custom_objects_api.patch_namespaced_custom_object( | ||||||
|         'acid.zalan.do', 'v1', 'default', |         'acid.zalan.do', 'v1', 'default', | ||||||
|         'postgresqls', 'acid-minimal-cluster', |         'postgresqls', 'acid-minimal-cluster', | ||||||
|         { |         { | ||||||
|  | @ -1038,11 +1042,11 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|             } |             } | ||||||
|         }) |         }) | ||||||
| 
 | 
 | ||||||
|         self.eventuallyEqual(lambda: self.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: self.k8s.get_deployment_replica_count(name="acid-minimal-cluster-pooler"), 2, |         self.eventuallyEqual(lambda: k8s.get_deployment_replica_count(name="acid-minimal-cluster-pooler"), 2, | ||||||
|                              "Operator did not succeed in overwriting labels") |                              "Operator did not succeed in overwriting labels") | ||||||
| 
 | 
 | ||||||
|         self.k8s.api.custom_objects_api.patch_namespaced_custom_object( |         k8s.api.custom_objects_api.patch_namespaced_custom_object( | ||||||
|         'acid.zalan.do', 'v1', 'default', |         'acid.zalan.do', 'v1', 'default', | ||||||
|         'postgresqls', 'acid-minimal-cluster', |         'postgresqls', 'acid-minimal-cluster', | ||||||
|         { |         { | ||||||
|  | @ -1051,8 +1055,8 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|             } |             } | ||||||
|         }) |         }) | ||||||
| 
 | 
 | ||||||
|         self.eventuallyEqual(lambda: self.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: self.k8s.count_running_pods("connection-pooler=acid-minimal-cluster-pooler"), |         self.eventuallyEqual(lambda: k8s.count_running_pods("connection-pooler=acid-minimal-cluster-pooler"), | ||||||
|                              0, "Pooler pods not scaled down") |                              0, "Pooler pods not scaled down") | ||||||
| 
 | 
 | ||||||
|     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) |     @timeout_decorator.timeout(TEST_TIMEOUT_SEC) | ||||||
|  | @ -1094,7 +1098,7 @@ class EndToEndTestCase(unittest.TestCase): | ||||||
|             k8s.api.custom_objects_api.patch_namespaced_custom_object( |             k8s.api.custom_objects_api.patch_namespaced_custom_object( | ||||||
|                 "acid.zalan.do", "v1", "default", "postgresqls", "acid-minimal-cluster", pg_patch_config) |                 "acid.zalan.do", "v1", "default", "postgresqls", "acid-minimal-cluster", pg_patch_config) | ||||||
|              |              | ||||||
|             self.eventuallyEqual(lambda: self.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") | ||||||
| 
 | 
 | ||||||
|             def compare_config(): |             def compare_config(): | ||||||
|                 effective_config = k8s.patroni_rest(masterPod.metadata.name, "config") |                 effective_config = k8s.patroni_rest(masterPod.metadata.name, "config") | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue