@@ -46,6 +46,19 @@ func TestResolver_PopulateClusterDefaults(t *testing.T) {
4646 CellTemplate : FallbackCellTemplate ,
4747 ShardTemplate : FallbackShardTemplate ,
4848 },
49+ // Expect Smart Defaulting: System Catalog
50+ Databases : []multigresv1alpha1.DatabaseConfig {
51+ {
52+ Name : DefaultSystemDatabaseName ,
53+ Default : true ,
54+ TableGroups : []multigresv1alpha1.TableGroupConfig {
55+ {
56+ Name : DefaultSystemTableGroupName ,
57+ Default : true ,
58+ },
59+ },
60+ },
61+ },
4962 },
5063 },
5164 },
@@ -65,6 +78,13 @@ func TestResolver_PopulateClusterDefaults(t *testing.T) {
6578 CellTemplate : "custom-cell" ,
6679 ShardTemplate : "custom-shard" ,
6780 },
81+ Databases : []multigresv1alpha1.DatabaseConfig {
82+ {
83+ Name : "existing-db" ,
84+ Default : true ,
85+ TableGroups : []multigresv1alpha1.TableGroupConfig {{Name : "tg1" }},
86+ },
87+ },
6888 },
6989 },
7090 want : & multigresv1alpha1.MultigresCluster {
@@ -82,6 +102,13 @@ func TestResolver_PopulateClusterDefaults(t *testing.T) {
82102 CellTemplate : "custom-cell" ,
83103 ShardTemplate : "custom-shard" ,
84104 },
105+ Databases : []multigresv1alpha1.DatabaseConfig {
106+ {
107+ Name : "existing-db" ,
108+ Default : true ,
109+ TableGroups : []multigresv1alpha1.TableGroupConfig {{Name : "tg1" }},
110+ },
111+ },
85112 },
86113 },
87114 },
@@ -111,6 +138,19 @@ func TestResolver_PopulateClusterDefaults(t *testing.T) {
111138 CellTemplate : FallbackCellTemplate ,
112139 ShardTemplate : FallbackShardTemplate ,
113140 },
141+ // Expect Smart Defaulting for DBs
142+ Databases : []multigresv1alpha1.DatabaseConfig {
143+ {
144+ Name : DefaultSystemDatabaseName ,
145+ Default : true ,
146+ TableGroups : []multigresv1alpha1.TableGroupConfig {
147+ {
148+ Name : DefaultSystemTableGroupName ,
149+ Default : true ,
150+ },
151+ },
152+ },
153+ },
114154 GlobalTopoServer : multigresv1alpha1.GlobalTopoServerSpec {
115155 Etcd : & multigresv1alpha1.EtcdSpec {
116156 Image : DefaultEtcdImage ,
@@ -156,6 +196,19 @@ func TestResolver_PopulateClusterDefaults(t *testing.T) {
156196 CellTemplate : FallbackCellTemplate ,
157197 ShardTemplate : FallbackShardTemplate ,
158198 },
199+ // Expect Smart Defaulting for DBs
200+ Databases : []multigresv1alpha1.DatabaseConfig {
201+ {
202+ Name : DefaultSystemDatabaseName ,
203+ Default : true ,
204+ TableGroups : []multigresv1alpha1.TableGroupConfig {
205+ {
206+ Name : DefaultSystemTableGroupName ,
207+ Default : true ,
208+ },
209+ },
210+ },
211+ },
159212 Cells : []multigresv1alpha1.CellConfig {
160213 {
161214 Name : "cell-1" ,
@@ -195,6 +248,19 @@ func TestResolver_PopulateClusterDefaults(t *testing.T) {
195248 CellTemplate : FallbackCellTemplate ,
196249 ShardTemplate : FallbackShardTemplate ,
197250 },
251+ // Expect Smart Defaulting for DBs
252+ Databases : []multigresv1alpha1.DatabaseConfig {
253+ {
254+ Name : DefaultSystemDatabaseName ,
255+ Default : true ,
256+ TableGroups : []multigresv1alpha1.TableGroupConfig {
257+ {
258+ Name : DefaultSystemTableGroupName ,
259+ Default : true ,
260+ },
261+ },
262+ },
263+ },
198264 GlobalTopoServer : multigresv1alpha1.GlobalTopoServerSpec {
199265 Etcd : & multigresv1alpha1.EtcdSpec {
200266 Image : "custom-etcd" ,
@@ -206,6 +272,44 @@ func TestResolver_PopulateClusterDefaults(t *testing.T) {
206272 },
207273 },
208274 },
275+ "Smart Defaulting: Inject TableGroup when DB exists" : {
276+ input : & multigresv1alpha1.MultigresCluster {
277+ Spec : multigresv1alpha1.MultigresClusterSpec {
278+ Databases : []multigresv1alpha1.DatabaseConfig {
279+ {Name : "postgres" , Default : true }, // No TableGroups
280+ },
281+ },
282+ },
283+ want : & multigresv1alpha1.MultigresCluster {
284+ Spec : multigresv1alpha1.MultigresClusterSpec {
285+ Images : multigresv1alpha1.ClusterImages {
286+ Postgres : DefaultPostgresImage ,
287+ MultiAdmin : DefaultMultiAdminImage ,
288+ MultiOrch : DefaultMultiOrchImage ,
289+ MultiPooler : DefaultMultiPoolerImage ,
290+ MultiGateway : DefaultMultiGatewayImage ,
291+ ImagePullPolicy : DefaultImagePullPolicy ,
292+ },
293+ TemplateDefaults : multigresv1alpha1.TemplateDefaults {
294+ CoreTemplate : FallbackCoreTemplate ,
295+ CellTemplate : FallbackCellTemplate ,
296+ ShardTemplate : FallbackShardTemplate ,
297+ },
298+ Databases : []multigresv1alpha1.DatabaseConfig {
299+ {
300+ Name : "postgres" ,
301+ Default : true ,
302+ TableGroups : []multigresv1alpha1.TableGroupConfig {
303+ {
304+ Name : DefaultSystemTableGroupName ,
305+ Default : true ,
306+ },
307+ },
308+ },
309+ },
310+ },
311+ },
312+ },
209313 }
210314
211315 for name , tc := range tests {
0 commit comments