@@ -31,62 +31,96 @@ def _test_elastic_clusters_mgmt(self, resource_group):
3131 location = self .postgres_location
3232 sku_name = 'Standard_D2ds_v4'
3333 tier = 'GeneralPurpose'
34- cluster_name = self .create_random_name (SERVER_NAME_PREFIX , SERVER_NAME_MAX_LENGTH )
35- cluster_size = 2
34+ non_cluster = self .create_random_name (SERVER_NAME_PREFIX , SERVER_NAME_MAX_LENGTH )
35+ cluster = self .create_random_name (SERVER_NAME_PREFIX , SERVER_NAME_MAX_LENGTH )
36+ cluster_restore = self .create_random_name (SERVER_NAME_PREFIX , SERVER_NAME_MAX_LENGTH )
37+ node_count = 2
38+ database = 'dbcluster'
39+
40+ # Try to create regular flexible server passing elastic cluster specific parameters to verify that they are not accepted for regular servers.
41+ self .cmd ('postgres flexible-server create -g {} -n {} --sku-name {} \
42+ --version {} --database-name {}'
43+ .format (resource_group , cluster , sku_name , version , database ),
44+ expect_failure = True )
45+
46+ # Create regular flexible server to verify that elastic cluster specific parameters are not accepted for update command as well.
47+ self .cmd ('postgres flexible-server create -g {} -n {} --sku-name {} \
48+ --version {} --public-access Enabled'
49+ .format (resource_group , non_cluster , sku_name , version ))
50+
51+ # Try to update regular flexible server with elastic cluster specific parameters to verify that they are not accepted for regular servers.
52+ self .cmd ('postgres flexible-server update -g {} -n {} --node-count {}'
53+ .format (resource_group , non_cluster , node_count ),
54+ expect_failure = True )
3655
3756 # Create elastic cluster
3857 self .cmd ('postgres flexible-server create -g {} -n {} --sku-name {} \
39- --version {} --cluster-option ElasticCluster --public-access Enabled'
40- .format (resource_group , cluster_name , sku_name , version ))
58+ --version {} --node-count {} --public-access Enabled'
59+ .format (resource_group , cluster , sku_name , version , node_count ))
4160
42- basic_info = self .cmd ('postgres flexible-server show -g {} -n {}' .format (resource_group , cluster_name )).get_output_in_json ()
43- self .assertEqual (basic_info ['name' ], cluster_name )
44- self .assertEqual (str (basic_info ['location' ]).replace (' ' , '' ).lower (), location )
45- self .assertEqual (basic_info ['resourceGroup' ], resource_group )
46- self .assertEqual (basic_info ['sku' ]['name' ], sku_name )
47- self .assertEqual (basic_info ['sku' ]['tier' ], tier )
48- self .assertEqual (basic_info ['version' ], version )
49- self .assertEqual (basic_info ['cluster' ]['clusterSize' ], cluster_size )
61+ basic_info = self .cmd ('postgres flexible-server show -g {} -n {}' .
62+ format (resource_group , cluster ),
63+ checks = [
64+ JMESPathCheck ('name' , cluster ),
65+ JMESPathCheck ('resourceGroup' , resource_group ),
66+ JMESPathCheck ('sku.name' , sku_name ),
67+ JMESPathCheck ('sku.tier' , tier ),
68+ JMESPathCheck ('version' , version ),
69+ JMESPathCheck ('cluster.clusterSize' , node_count )
70+ ]).get_output_in_json ()
71+ self .assertEqual (basic_info ['location' ].replace (' ' , '' ).lower (), location )
5072
5173 # Test failures
5274 self .cmd ('postgres flexible-server update -g {} -n {} --storage-auto-grow Enabled'
53- .format (resource_group , cluster_name ), expect_failure = True )
75+ .format (resource_group , cluster ),
76+ expect_failure = True )
77+
5478 # Backend silently ignores if the cluster size is smaller than current size, and does not return error.
5579 # Also, the cluster size remains unchanged. Hence the check is added to verify that cluster size is not updated.
5680 # When control plane adds support for scaling down cluster size, this test should be updated accordingly.
5781 self .cmd ('postgres flexible-server update -g {} -n {} --node-count {}'
58- .format (resource_group , cluster_name , cluster_size - 1 ),
82+ .format (resource_group , cluster , node_count - 1 ),
5983 checks = [
60- JMESPathCheck ('cluster.clusterSize' , cluster_size )])
84+ JMESPathCheck ('cluster.clusterSize' , node_count )])
85+
6186 # Same behavior with cluster size being set to 0, it doesn't return error, neither it changes the cluster size.
6287 self .cmd ('postgres flexible-server update -g {} -n {} --node-count {}'
63- .format (resource_group , cluster_name , 0 ),
88+ .format (resource_group , cluster , 0 ),
6489 checks = [
65- JMESPathCheck ('cluster.clusterSize' , cluster_size )])
90+ JMESPathCheck ('cluster.clusterSize' , node_count )])
91+
6692 # If the cluster size is larger than current supported maximum (20), it will return error.
6793 self .cmd ('postgres flexible-server update -g {} -n {} --node-count {}'
68- .format (resource_group , cluster_name , 21 ), expect_failure = True )
94+ .format (resource_group , cluster , 21 ),
95+ expect_failure = True )
96+
6997 self .cmd ('postgres flexible-server replica list -g {} -n {}'
70- .format (resource_group , cluster_name ), expect_failure = True )
98+ .format (resource_group , cluster ),
99+ expect_failure = True )
100+
71101 self .cmd ('postgres flexible-server db create -g {} -s {} -d dbclusterfail'
72- .format (resource_group , cluster_name ), expect_failure = True )
102+ .format (resource_group , cluster ),
103+ expect_failure = True )
73104
74- # Update cluster
75- update_cluster_size = 4
76- update_info = self .cmd ('postgres flexible-server update -g {} -n {} --node-count {}'
77- .format (resource_group , cluster_name , update_cluster_size )).get_output_in_json ()
78- self .assertEqual (update_info ['cluster' ]['clusterSize' ], update_cluster_size )
105+ # Grow cluster size and validate growth.
106+ update_node_count = 4
107+ self .cmd ('postgres flexible-server update -g {} -n {} --node-count {}'
108+ .format (resource_group , cluster , update_node_count ),
109+ checks = [
110+ JMESPathCheck ('cluster.clusterSize' , update_node_count )
111+ ])
79112
80113 # Wait until snapshot is created
81114 os .environ .get (ENV_LIVE_TEST , False ) and sleep (1800 )
82115
83- # Restore
84- cluster_restore_name = self .create_random_name (SERVER_NAME_PREFIX , SERVER_NAME_MAX_LENGTH )
85- restore_result = self .cmd ('postgres flexible-server restore -g {} --name {} --source-server {}'
86- .format (resource_group , cluster_restore_name , basic_info ['id' ])).get_output_in_json ()
87- self .assertEqual (restore_result ['name' ], cluster_restore_name )
88- self .assertEqual (restore_result ['cluster' ]['clusterSize' ], update_cluster_size )
116+ # Restore cluster and validate the restored cluster has the same cluster size as source cluster
117+ self .cmd ('postgres flexible-server restore -g {} --name {} --source-server {}'
118+ .format (resource_group , cluster_restore , basic_info ['id' ]),
119+ checks = [
120+ JMESPathCheck ('name' , cluster_restore ),
121+ JMESPathCheck ('cluster.clusterSize' , update_node_count )
122+ ])
89123
90124 # Clean up
91- self .cmd ('postgres flexible-server delete -g {} -n {} --yes' .format (resource_group , cluster_name ))
92- self .cmd ('postgres flexible-server delete -g {} -n {} --yes' .format (resource_group , cluster_restore_name ))
125+ self .cmd ('postgres flexible-server delete -g {} -n {} --yes' .format (resource_group , cluster ))
126+ self .cmd ('postgres flexible-server delete -g {} -n {} --yes' .format (resource_group , cluster_restore ))
0 commit comments