@@ -1851,11 +1851,12 @@ func TestMultiNodeAirgapUpgradePreviousStable(t *testing.T) {
18511851// for them to report ready. Runs additional high availability validations afterwards.
18521852func TestMultiNodeHAInstallation (t * testing.T ) {
18531853 tc := docker .NewCluster (& docker.ClusterInput {
1854- T : t ,
1855- Nodes : 4 ,
1856- Distro : "debian-bookworm" ,
1857- LicensePath : "license.yaml" ,
1858- ECBinaryPath : "../output/bin/embedded-cluster" ,
1854+ T : t ,
1855+ Nodes : 4 ,
1856+ Distro : "debian-bookworm" ,
1857+ LicensePath : "license.yaml" ,
1858+ ECBinaryPath : "../output/bin/embedded-cluster" ,
1859+ SupportBundleNodeIndex : 2 ,
18591860 })
18601861 defer tc .Cleanup ()
18611862
@@ -1943,24 +1944,30 @@ func TestMultiNodeHAInstallation(t *testing.T) {
19431944 }
19441945
19451946 bin := strings .Split (command , " " )[0 ]
1946- t .Logf ("%s: resetting controller node 2 " , time .Now ().Format (time .RFC3339 ))
1947- stdout , stderr , err = tc .RunCommandOnNode (2 , []string {bin , "reset" , "--yes" })
1947+ t .Logf ("%s: resetting controller node 0 " , time .Now ().Format (time .RFC3339 ))
1948+ stdout , stderr , err = tc .RunCommandOnNode (0 , []string {bin , "reset" , "--yes" })
19481949 if err != nil {
1949- t .Fatalf ("fail to remove controller node 2 : %v: %s: %s" , err , stdout , stderr )
1950+ t .Fatalf ("fail to remove controller node 0 : %v: %s: %s" , err , stdout , stderr )
19501951 }
19511952 if ! strings .Contains (stdout , "High-availability clusters must maintain at least three controller nodes" ) {
19521953 t .Errorf ("reset output does not contain the ha warning" )
19531954 t .Logf ("stdout: %s\n stderr: %s" , stdout , stderr )
19541955 }
19551956
1956- stdout , stderr , err = tc .RunCommandOnNode (0 , []string {"check-nodes-removed.sh" , "3" })
1957+ stdout , stderr , err = tc .RunCommandOnNode (2 , []string {"check-nodes-removed.sh" , "3" })
19571958 if err != nil {
1958- t .Fatalf ("fail to remove worker node 0: %v: %s: %s" , err , stdout , stderr )
1959+ t .Fatalf ("fail to check nodes removed: %v: %s: %s" , err , stdout , stderr )
1960+ }
1961+
1962+ t .Logf ("%s: checking nllb" , time .Now ().Format (time .RFC3339 ))
1963+ line = []string {"check-nllb.sh" }
1964+ if stdout , stderr , err := tc .RunCommandOnNode (2 , line ); err != nil {
1965+ t .Fatalf ("fail to check nllb: %v: %s: %s" , err , stdout , stderr )
19591966 }
19601967
19611968 t .Logf ("%s: checking installation state after upgrade" , time .Now ().Format (time .RFC3339 ))
19621969 line = []string {"check-postupgrade-state.sh" , k8sVersion (), ecUpgradeTargetVersion ()}
1963- if stdout , stderr , err := tc .RunCommandOnNode (0 , line ); err != nil {
1970+ if stdout , stderr , err := tc .RunCommandOnNode (2 , line ); err != nil {
19641971 t .Fatalf ("fail to check postupgrade state: %v: %s: %s" , err , stdout , stderr )
19651972 }
19661973
@@ -1993,6 +2000,7 @@ func TestMultiNodeAirgapHAInstallation(t *testing.T) {
19932000 WithProxy : true ,
19942001 AirgapInstallBundlePath : airgapInstallBundlePath ,
19952002 AirgapUpgradeBundlePath : airgapUpgradeBundlePath ,
2003+ SupportBundleNodeIndex : 2 ,
19962004 })
19972005 defer tc .Cleanup ()
19982006
@@ -2023,10 +2031,7 @@ func TestMultiNodeAirgapHAInstallation(t *testing.T) {
20232031 if _ , _ , err := tc .RunCommandOnNode (0 , line ); err != nil {
20242032 t .Fatalf ("fail to remove airgap bundle on node %s: %v" , tc .Nodes [0 ], err )
20252033 }
2026- line = []string {"rm" , "/usr/local/bin/embedded-cluster" }
2027- if _ , _ , err := tc .RunCommandOnNode (0 , line ); err != nil {
2028- t .Fatalf ("fail to remove embedded-cluster binary on node %s: %v" , tc .Nodes [0 ], err )
2029- }
2034+ // do not remove the embedded-cluster binary as it is used for reset
20302035
20312036 if _ , _ , err := tc .SetupPlaywrightAndRunTest ("deploy-app" ); err != nil {
20322037 t .Fatalf ("fail to run playwright test deploy-app: %v" , err )
@@ -2054,8 +2059,8 @@ func TestMultiNodeAirgapHAInstallation(t *testing.T) {
20542059 t .Fatalf ("fail to prepare airgap files on node 1: %v" , err )
20552060 }
20562061 t .Logf ("%s: joining node 1 to the cluster as a worker" , time .Now ().Format (time .RFC3339 ))
2057- if _ , _ , err := tc .RunCommandOnNode (1 , strings .Split (command , " " )); err != nil {
2058- t .Fatalf ("fail to join node 1 to the cluster as a worker: %v" , err )
2062+ if stdout , stderr , err := tc .RunCommandOnNode (1 , strings .Split (command , " " )); err != nil {
2063+ t .Fatalf ("fail to join node 1 to the cluster as a worker: %v: %s: %s " , err , stdout , stderr )
20592064 }
20602065 // remove the airgap bundle and binary after joining
20612066 line = []string {"rm" , "/assets/release.airgap" }
@@ -2091,7 +2096,10 @@ func TestMultiNodeAirgapHAInstallation(t *testing.T) {
20912096 if _ , _ , err := tc .RunCommandOnNode (2 , line ); err != nil {
20922097 t .Fatalf ("fail to remove airgap bundle on node 2: %v" , err )
20932098 }
2094- // don't remove the embedded-cluster binary as it is used for reset
2099+ line = []string {"rm" , "/usr/local/bin/embedded-cluster" }
2100+ if _ , _ , err := tc .RunCommandOnNode (2 , line ); err != nil {
2101+ t .Fatalf ("fail to remove embedded-cluster binary on node 2: %v" , err )
2102+ }
20952103
20962104 // join another controller in HA mode
20972105 stdout , stderr , err = tc .RunPlaywrightTest ("get-join-controller-command" )
@@ -2163,27 +2171,32 @@ func TestMultiNodeAirgapHAInstallation(t *testing.T) {
21632171 }
21642172
21652173 bin := strings .Split (command , " " )[0 ]
2166- t .Logf ("%s: resetting controller node 2 with bin %q" , time .Now ().Format (time .RFC3339 ), bin )
2167- stdout , stderr , err = tc .RunCommandOnNode (2 , []string {bin , "reset" , "--yes" })
2174+ t .Logf ("%s: resetting controller node 0 with bin %q" , time .Now ().Format (time .RFC3339 ), bin )
2175+ stdout , stderr , err = tc .RunCommandOnNode (0 , []string {bin , "reset" , "--yes" })
21682176 if err != nil {
21692177 t .Logf ("stdout: %s\n stderr: %s" , stdout , stderr )
2170- t .Fatalf ("fail to remove controller node %s:" , err )
2178+ t .Fatalf ("fail to remove controller node 0 %s:" , err )
21712179 }
21722180 if ! strings .Contains (stdout , "High-availability clusters must maintain at least three controller nodes" ) {
21732181 t .Errorf ("reset output does not contain the ha warning" )
21742182 t .Logf ("stdout: %s\n stderr: %s" , stdout , stderr )
21752183 }
21762184
2177- stdout , _ , err = tc .RunCommandOnNode (0 , []string {"check-nodes-removed.sh" , "3" })
2185+ stdout , _ , err = tc .RunCommandOnNode (2 , []string {"check-nodes-removed.sh" , "3" })
21782186 if err != nil {
2179- t .Log (stdout )
2180- t .Fatalf ("fail to remove worker node %s:" , err )
2187+ t .Fatalf ("fail to check nodes removed: %v: %s: %s" , err , stdout , stderr )
2188+ }
2189+
2190+ t .Logf ("%s: checking nllb" , time .Now ().Format (time .RFC3339 ))
2191+ line = []string {"check-nllb.sh" }
2192+ if stdout , stderr , err := tc .RunCommandOnNode (2 , line ); err != nil {
2193+ t .Fatalf ("fail to check nllb: %v: %s: %s" , err , stdout , stderr )
21812194 }
21822195
21832196 t .Logf ("%s: checking installation state after upgrade" , time .Now ().Format (time .RFC3339 ))
21842197 line = []string {"check-postupgrade-state.sh" , k8sVersion (), ecUpgradeTargetVersion ()}
2185- if _ , _ , err := tc .RunCommandOnNode (0 , line ); err != nil {
2186- t .Fatalf ("fail to check postupgrade state: %v" , err )
2198+ if stdout , stderr , err := tc .RunCommandOnNode (2 , line ); err != nil {
2199+ t .Fatalf ("fail to check postupgrade state: %v: %s: %s " , err , stdout , stderr )
21872200 }
21882201
21892202 t .Logf ("%s: test complete" , time .Now ().Format (time .RFC3339 ))
0 commit comments