@@ -1778,6 +1778,9 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1778
1778
configCount , jobCount , pvcCount int
1779
1779
invalidSourceRepo , invalidSourceCluster , invalidOptions bool
1780
1780
expectedClusterCondition * metav1.Condition
1781
+ expectedEventMessage string
1782
+ expectedCommandPieces []string
1783
+ missingCommandPieces []string
1781
1784
}
1782
1785
1783
1786
for _ , dedicated := range []bool {true , false } {
@@ -1800,6 +1803,8 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1800
1803
configCount : 1 , jobCount : 1 , pvcCount : 1 ,
1801
1804
invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : false ,
1802
1805
expectedClusterCondition : nil ,
1806
+ expectedCommandPieces : []string {"--stanza=" , "--pg1-path=" , "--repo=" , "--delta" },
1807
+ missingCommandPieces : []string {"--target-action" },
1803
1808
},
1804
1809
}, {
1805
1810
desc : "invalid source cluster" ,
@@ -1813,6 +1818,7 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1813
1818
configCount : 0 , jobCount : 0 , pvcCount : 0 ,
1814
1819
invalidSourceRepo : false , invalidSourceCluster : true , invalidOptions : false ,
1815
1820
expectedClusterCondition : nil ,
1821
+ expectedEventMessage : "does not exist" ,
1816
1822
},
1817
1823
}, {
1818
1824
desc : "invalid source repo" ,
@@ -1826,6 +1832,7 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1826
1832
configCount : 1 , jobCount : 0 , pvcCount : 0 ,
1827
1833
invalidSourceRepo : true , invalidSourceCluster : false , invalidOptions : false ,
1828
1834
expectedClusterCondition : nil ,
1835
+ expectedEventMessage : "does not have a repo named" ,
1829
1836
},
1830
1837
}, {
1831
1838
desc : "invalid option: --repo=" ,
@@ -1840,6 +1847,7 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1840
1847
configCount : 1 , jobCount : 0 , pvcCount : 1 ,
1841
1848
invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : true ,
1842
1849
expectedClusterCondition : nil ,
1850
+ expectedEventMessage : "Option '--repo' is not allowed: please use the 'repoName' field instead." ,
1843
1851
},
1844
1852
}, {
1845
1853
desc : "invalid option: --repo " ,
@@ -1854,6 +1862,7 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1854
1862
configCount : 1 , jobCount : 0 , pvcCount : 1 ,
1855
1863
invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : true ,
1856
1864
expectedClusterCondition : nil ,
1865
+ expectedEventMessage : "Option '--repo' is not allowed: please use the 'repoName' field instead." ,
1857
1866
},
1858
1867
}, {
1859
1868
desc : "invalid option: stanza" ,
@@ -1868,6 +1877,7 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1868
1877
configCount : 1 , jobCount : 0 , pvcCount : 1 ,
1869
1878
invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : true ,
1870
1879
expectedClusterCondition : nil ,
1880
+ expectedEventMessage : "Option '--stanza' is not allowed: the operator will automatically set this option" ,
1871
1881
},
1872
1882
}, {
1873
1883
desc : "invalid option: pg1-path" ,
@@ -1882,6 +1892,68 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
1882
1892
configCount : 1 , jobCount : 0 , pvcCount : 1 ,
1883
1893
invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : true ,
1884
1894
expectedClusterCondition : nil ,
1895
+ expectedEventMessage : "Option '--pg1-path' is not allowed: the operator will automatically set this option" ,
1896
+ },
1897
+ }, {
1898
+ desc : "invalid option: target-action" ,
1899
+ dataSource : & v1beta1.DataSource {PostgresCluster : & v1beta1.PostgresClusterDataSource {
1900
+ ClusterName : "invalid-target-action-option" , RepoName : "repo1" ,
1901
+ Options : []string {"--target-action" },
1902
+ }},
1903
+ clusterBootstrapped : false ,
1904
+ sourceClusterName : "invalid-target-action-option" ,
1905
+ sourceClusterRepos : []v1beta1.PGBackRestRepo {{Name : "repo1" }},
1906
+ result : testResult {
1907
+ configCount : 1 , jobCount : 0 , pvcCount : 1 ,
1908
+ invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : true ,
1909
+ expectedClusterCondition : nil ,
1910
+ expectedEventMessage : "Option '--target-action' is not allowed: the operator will automatically set this option" ,
1911
+ },
1912
+ }, {
1913
+ desc : "invalid option: link-map" ,
1914
+ dataSource : & v1beta1.DataSource {PostgresCluster : & v1beta1.PostgresClusterDataSource {
1915
+ ClusterName : "invalid-link-map-option" , RepoName : "repo1" ,
1916
+ Options : []string {"--link-map" },
1917
+ }},
1918
+ clusterBootstrapped : false ,
1919
+ sourceClusterName : "invalid-link-map-option" ,
1920
+ sourceClusterRepos : []v1beta1.PGBackRestRepo {{Name : "repo1" }},
1921
+ result : testResult {
1922
+ configCount : 1 , jobCount : 0 , pvcCount : 1 ,
1923
+ invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : true ,
1924
+ expectedClusterCondition : nil ,
1925
+ expectedEventMessage : "Option '--link-map' is not allowed: the operator will automatically set this option" ,
1926
+ },
1927
+ }, {
1928
+ desc : "valid option: target-timeline" ,
1929
+ dataSource : & v1beta1.DataSource {PostgresCluster : & v1beta1.PostgresClusterDataSource {
1930
+ ClusterName : "valid-target-timeline-option" , RepoName : "repo1" ,
1931
+ Options : []string {"--target-timeline=1" },
1932
+ }},
1933
+ clusterBootstrapped : false ,
1934
+ sourceClusterName : "valid-target-timeline-option" ,
1935
+ sourceClusterRepos : []v1beta1.PGBackRestRepo {{Name : "repo1" }},
1936
+ result : testResult {
1937
+ configCount : 1 , jobCount : 1 , pvcCount : 1 ,
1938
+ invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : false ,
1939
+ expectedClusterCondition : nil ,
1940
+ expectedCommandPieces : []string {"--stanza=" , "--pg1-path=" , "--repo=" , "--delta" , "--target-timeline=1" },
1941
+ missingCommandPieces : []string {"--target=" , "--target-action=promote" },
1942
+ },
1943
+ }, {
1944
+ desc : "valid option: target" ,
1945
+ dataSource : & v1beta1.DataSource {PostgresCluster : & v1beta1.PostgresClusterDataSource {
1946
+ ClusterName : "valid-target-option" , RepoName : "repo1" ,
1947
+ Options : []string {"--target=some-date" },
1948
+ }},
1949
+ clusterBootstrapped : false ,
1950
+ sourceClusterName : "valid-target-option" ,
1951
+ sourceClusterRepos : []v1beta1.PGBackRestRepo {{Name : "repo1" }},
1952
+ result : testResult {
1953
+ configCount : 1 , jobCount : 1 , pvcCount : 1 ,
1954
+ invalidSourceRepo : false , invalidSourceCluster : false , invalidOptions : false ,
1955
+ expectedClusterCondition : nil ,
1956
+ expectedCommandPieces : []string {"--stanza=" , "--pg1-path=" , "--repo=" , "--delta" , "--target=some-date" , "--target-action=promote" },
1885
1957
},
1886
1958
}, {
1887
1959
desc : "cluster bootstrapped init condition missing" ,
@@ -2004,6 +2076,16 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
2004
2076
if len (restoreJobs .Items ) == 1 {
2005
2077
assert .Assert (t , restoreJobs .Items [0 ].Labels [naming .LabelStartupInstance ] != "" )
2006
2078
assert .Assert (t , restoreJobs .Items [0 ].Annotations [naming .PGBackRestConfigHash ] != "" )
2079
+ for _ , cmd := range tc .result .expectedCommandPieces {
2080
+ assert .Assert (t , cmp .Contains (
2081
+ strings .Join (restoreJobs .Items [0 ].Spec .Template .Spec .Containers [0 ].Command , " " ),
2082
+ cmd ))
2083
+ }
2084
+ for _ , cmd := range tc .result .missingCommandPieces {
2085
+ assert .Assert (t , ! strings .Contains (
2086
+ strings .Join (restoreJobs .Items [0 ].Spec .Template .Spec .Containers [0 ].Command , " " ),
2087
+ cmd ))
2088
+ }
2007
2089
}
2008
2090
2009
2091
dataPVCs := & corev1.PersistentVolumeClaimList {}
@@ -2041,7 +2123,11 @@ func TestReconcilePostgresClusterDataSource(t *testing.T) {
2041
2123
"involvedObject.namespace" : namespace ,
2042
2124
"reason" : "InvalidDataSource" ,
2043
2125
})
2044
- return len (events .Items ) == 1 , err
2126
+ eventExists := len (events .Items ) > 0
2127
+ if eventExists {
2128
+ assert .Assert (t , cmp .Contains (events .Items [0 ].Message , tc .result .expectedEventMessage ))
2129
+ }
2130
+ return eventExists , err
2045
2131
}))
2046
2132
}
2047
2133
})
0 commit comments