Skip to content

Commit e850198

Browse files
authored
Fix tests to use new join commands (#2135)
1 parent 7bed706 commit e850198

File tree

17 files changed

+175
-218
lines changed

17 files changed

+175
-218
lines changed

e2e/install_test.go

Lines changed: 38 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -454,8 +454,8 @@ func TestSingleNodeUpgradePreviousStable(t *testing.T) {
454454
version: initialVersion,
455455
})
456456

457-
if stdout, stderr, err := tc.SetupPlaywrightAndRunTest("deploy-app"); err != nil {
458-
t.Fatalf("fail to run playwright test deploy-app: %v: %s: %s", err, stdout, stderr)
457+
if stdout, stderr, err := tc.SetupPlaywrightAndRunTest("deploy-ec23-app"); err != nil {
458+
t.Fatalf("fail to run playwright test deploy-ec23-app: %v: %s: %s", err, stdout, stderr)
459459
}
460460

461461
checkInstallationStateWithOptions(t, tc, installationStateOptions{
@@ -468,7 +468,7 @@ func TestSingleNodeUpgradePreviousStable(t *testing.T) {
468468

469469
t.Logf("%s: upgrading cluster", time.Now().Format(time.RFC3339))
470470
if stdout, stderr, err := tc.RunPlaywrightTest("deploy-upgrade", testArgs...); err != nil {
471-
t.Fatalf("fail to run playwright test deploy-app: %v: %s: %s", err, stdout, stderr)
471+
t.Fatalf("fail to run playwright test deploy-upgrade: %v: %s: %s", err, stdout, stderr)
472472
}
473473

474474
t.Logf("%s: re-installing kots cli on node 0", time.Now().Format(time.RFC3339))
@@ -486,7 +486,7 @@ func TestSingleNodeUpgradePreviousStable(t *testing.T) {
486486

487487
t.Logf("%s: upgrading cluster a second time", time.Now().Format(time.RFC3339))
488488
if stdout, stderr, err := tc.RunPlaywrightTest("deploy-upgrade", testArgs...); err != nil {
489-
t.Fatalf("fail to run playwright test deploy-app: %v: %s: %s", err, stdout, stderr)
489+
t.Fatalf("fail to run playwright test deploy-upgrade: %v: %s: %s", err, stdout, stderr)
490490
}
491491

492492
t.Logf("%s: checking installation state after second upgrade", time.Now().Format(time.RFC3339))
@@ -585,8 +585,8 @@ func TestUpgradeEC18FromReplicatedApp(t *testing.T) {
585585
if err := tc.SetupPlaywright(withEnv); err != nil {
586586
t.Fatalf("fail to setup playwright: %v", err)
587587
}
588-
if stdout, stderr, err := tc.RunPlaywrightTest("deploy-ec18-app-version"); err != nil {
589-
t.Fatalf("fail to run playwright test deploy-ec18-app-version: %v: %s: %s", err, stdout, stderr)
588+
if stdout, stderr, err := tc.RunPlaywrightTest("deploy-ec18-app"); err != nil {
589+
t.Fatalf("fail to run playwright test deploy-ec18-app: %v: %s: %s", err, stdout, stderr)
590590
}
591591

592592
t.Logf("%s: generating a new worker token command", time.Now().Format(time.RFC3339))
@@ -1138,8 +1138,8 @@ func TestAirgapUpgradeFromEC18(t *testing.T) {
11381138
if err := tc.SetupPlaywright(withEnv); err != nil {
11391139
t.Fatalf("fail to setup playwright: %v", err)
11401140
}
1141-
if _, _, err := tc.RunPlaywrightTest("deploy-ec18-app-version"); err != nil {
1142-
t.Fatalf("fail to run playwright test deploy-ec18-app-version: %v", err)
1141+
if _, _, err := tc.RunPlaywrightTest("deploy-ec18-app"); err != nil {
1142+
t.Fatalf("fail to run playwright test deploy-ec18-app: %v", err)
11431143
}
11441144

11451145
// generate worker node join command.
@@ -1336,58 +1336,16 @@ func TestMultiNodeAirgapUpgradeSameK0s(t *testing.T) {
13361336
if _, _, err := tc.RunCommandOnNode(0, line); err != nil {
13371337
t.Fatalf("fail to remove embedded-cluster binary on node %s: %v", tc.Nodes[0], err)
13381338
}
1339-
line = []string{"rm", "/var/lib/embedded-cluster/bin/embedded-cluster"}
1340-
if _, _, err := tc.RunCommandOnNode(0, line); err != nil {
1341-
t.Fatalf("fail to remove embedded-cluster binary on node %s: %v", tc.Nodes[0], err)
1342-
}
13431339

13441340
if _, _, err := tc.SetupPlaywrightAndRunTest("deploy-app"); err != nil {
13451341
t.Fatalf("fail to run playwright test deploy-app: %v", err)
13461342
}
13471343

1348-
// generate worker node join command.
1349-
t.Logf("%s: generating a new worker token command", time.Now().Format(time.RFC3339))
1350-
stdout, stderr, err := tc.RunPlaywrightTest("get-join-worker-command")
1351-
if err != nil {
1352-
t.Fatalf("fail to generate worker join token:\nstdout: %s\nstderr: %s", stdout, stderr)
1353-
}
1354-
workerCommand, err := findJoinCommandInOutput(stdout)
1355-
if err != nil {
1356-
t.Fatalf("fail to find the join command in the output: %v", err)
1357-
}
1358-
t.Log("worker join token command:", workerCommand)
1359-
1360-
// join the worker node
1361-
t.Logf("%s: preparing embedded cluster airgap files on worker node", time.Now().Format(time.RFC3339))
1362-
line = []string{"airgap-prepare.sh"}
1363-
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1364-
t.Fatalf("fail to prepare airgap files on worker node: %v", err)
1365-
}
1366-
t.Logf("%s: joining worker node to the cluster", time.Now().Format(time.RFC3339))
1367-
if _, _, err := tc.RunCommandOnNode(1, strings.Split(workerCommand, " ")); err != nil {
1368-
t.Fatalf("fail to join worker node to the cluster: %v", err)
1369-
}
1370-
// remove artifacts after joining to save space
1371-
line = []string{"rm", "/assets/release.airgap"}
1372-
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1373-
t.Fatalf("fail to remove airgap bundle on worker node: %v", err)
1374-
}
1375-
line = []string{"rm", "/usr/local/bin/embedded-cluster"}
1376-
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1377-
t.Fatalf("fail to remove embedded-cluster binary on worker node: %v", err)
1378-
}
1379-
line = []string{"rm", "/var/lib/embedded-cluster/bin/embedded-cluster"}
1380-
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1381-
t.Fatalf("fail to remove embedded-cluster binary on node %s: %v", tc.Nodes[0], err)
1382-
}
1344+
// join a worker
1345+
joinWorkerNode(t, tc, 1)
13831346

13841347
// wait for the nodes to report as ready.
1385-
t.Logf("%s: all nodes joined, waiting for them to be ready", time.Now().Format(time.RFC3339))
1386-
stdout, _, err = tc.RunCommandOnNode(0, []string{"wait-for-ready-nodes.sh", "2"})
1387-
if err != nil {
1388-
t.Log(stdout)
1389-
t.Fatalf("fail to wait for ready nodes: %v", err)
1390-
}
1348+
waitForNodes(t, tc, 2, nil)
13911349

13921350
t.Logf("%s: checking installation state after app deployment", time.Now().Format(time.RFC3339))
13931351
line = []string{"check-airgap-installation-state.sh", fmt.Sprintf("appver-%s", os.Getenv("SHORT_SHA")), k8sVersion()}
@@ -1496,45 +1454,11 @@ func TestMultiNodeAirgapUpgrade(t *testing.T) {
14961454
t.Fatalf("fail to run playwright test deploy-app: %v", err)
14971455
}
14981456

1499-
// generate worker node join command.
1500-
t.Logf("%s: generating a new worker token command", time.Now().Format(time.RFC3339))
1501-
stdout, stderr, err := tc.RunPlaywrightTest("get-join-worker-command")
1502-
if err != nil {
1503-
t.Fatalf("fail to generate worker join token:\nstdout: %s\nstderr: %s", stdout, stderr)
1504-
}
1505-
workerCommand, err := findJoinCommandInOutput(stdout)
1506-
if err != nil {
1507-
t.Fatalf("fail to find the join command in the output: %v", err)
1508-
}
1509-
t.Log("worker join token command:", workerCommand)
1510-
1511-
// join the worker node
1512-
t.Logf("%s: preparing embedded cluster airgap files on worker node", time.Now().Format(time.RFC3339))
1513-
line = []string{"airgap-prepare.sh"}
1514-
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1515-
t.Fatalf("fail to prepare airgap files on worker node: %v", err)
1516-
}
1517-
t.Logf("%s: joining worker node to the cluster", time.Now().Format(time.RFC3339))
1518-
if _, _, err := tc.RunCommandOnNode(1, strings.Split(workerCommand, " ")); err != nil {
1519-
t.Fatalf("fail to join worker node to the cluster: %v", err)
1520-
}
1521-
// remove the airgap bundle and binary after joining
1522-
line = []string{"rm", "/assets/release.airgap"}
1523-
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1524-
t.Fatalf("fail to remove airgap bundle on worker node: %v", err)
1525-
}
1526-
line = []string{"rm", "/usr/local/bin/embedded-cluster"}
1527-
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1528-
t.Fatalf("fail to remove embedded-cluster binary on worker node: %v", err)
1529-
}
1457+
// join a worker
1458+
joinWorkerNode(t, tc, 1)
15301459

15311460
// wait for the nodes to report as ready.
1532-
t.Logf("%s: all nodes joined, waiting for them to be ready", time.Now().Format(time.RFC3339))
1533-
stdout, _, err = tc.RunCommandOnNode(0, []string{"wait-for-ready-nodes.sh", "2"})
1534-
if err != nil {
1535-
t.Log(stdout)
1536-
t.Fatalf("fail to wait for ready nodes: %v", err)
1537-
}
1461+
waitForNodes(t, tc, 2, nil)
15381462

15391463
t.Logf("%s: checking installation state after app deployment", time.Now().Format(time.RFC3339))
15401464
line = []string{"check-airgap-installation-state.sh", initialVersion, k8sVersionPrevious()}
@@ -1655,13 +1579,13 @@ func TestMultiNodeAirgapUpgradePreviousStable(t *testing.T) {
16551579
if err := tc.SetupPlaywright(withEnv); err != nil {
16561580
t.Fatalf("fail to setup playwright: %v", err)
16571581
}
1658-
if _, _, err := tc.RunPlaywrightTest("deploy-app"); err != nil {
1659-
t.Fatalf("fail to run playwright test deploy-app: %v", err)
1582+
if _, _, err := tc.RunPlaywrightTest("deploy-ec23-app"); err != nil {
1583+
t.Fatalf("fail to run playwright test deploy-ec23-app: %v", err)
16601584
}
16611585

16621586
// generate worker node join command.
16631587
t.Logf("%s: generating a new worker token command", time.Now().Format(time.RFC3339))
1664-
stdout, stderr, err := tc.RunPlaywrightTest("get-join-worker-command")
1588+
stdout, stderr, err := tc.RunPlaywrightTest("get-ec23-join-worker-command")
16651589
if err != nil {
16661590
t.Fatalf("fail to generate worker join token:\nstdout: %s\nstderr: %s", stdout, stderr)
16671591
}
@@ -1681,7 +1605,7 @@ func TestMultiNodeAirgapUpgradePreviousStable(t *testing.T) {
16811605
if _, _, err := tc.RunCommandOnNode(1, strings.Split(workerCommand, " "), withEnv); err != nil {
16821606
t.Fatalf("fail to join worker node to the cluster: %v", err)
16831607
}
1684-
// remove the airgap bundle and binary after joining
1608+
// remove artifacts after joining to save space
16851609
line = []string{"rm", "/assets/release.airgap"}
16861610
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
16871611
t.Fatalf("fail to remove airgap bundle on worker node: %v", err)
@@ -1692,16 +1616,11 @@ func TestMultiNodeAirgapUpgradePreviousStable(t *testing.T) {
16921616
}
16931617
line = []string{"rm", "/var/lib/ec/bin/embedded-cluster"}
16941618
if _, _, err := tc.RunCommandOnNode(1, line); err != nil {
1695-
t.Fatalf("fail to remove embedded-cluster binary on node %s: %v", tc.Nodes[1], err)
1619+
t.Fatalf("fail to remove embedded-cluster binary on node %s: %v", tc.Nodes[0], err)
16961620
}
16971621

16981622
// wait for the nodes to report as ready.
1699-
t.Logf("%s: all nodes joined, waiting for them to be ready", time.Now().Format(time.RFC3339))
1700-
stdout, _, err = tc.RunCommandOnNode(0, []string{"wait-for-ready-nodes.sh", "2"}, withEnv)
1701-
if err != nil {
1702-
t.Log(stdout)
1703-
t.Fatalf("fail to wait for ready nodes: %v", err)
1704-
}
1623+
waitForNodes(t, tc, 2, withEnv)
17051624

17061625
t.Logf("%s: checking installation state after app deployment", time.Now().Format(time.RFC3339))
17071626
line = []string{"check-airgap-installation-state.sh", initialVersion, k8sVersionPreviousStable()}
@@ -1926,15 +1845,15 @@ func TestMultiNodeAirgapHAInstallation(t *testing.T) {
19261845
}
19271846

19281847
// join a worker
1929-
joinWorkerNodeWithOptions(t, tc, 1, joinOptions{isAirgap: true})
1848+
joinWorkerNode(t, tc, 1)
19301849
checkWorkerProfile(t, tc, 1)
19311850

19321851
// join a controller
1933-
joinControllerNodeWithOptions(t, tc, 2, joinOptions{isAirgap: true})
1852+
joinControllerNode(t, tc, 2)
19341853
checkWorkerProfile(t, tc, 2)
19351854

19361855
// join another controller in HA mode
1937-
joinControllerNodeWithOptions(t, tc, 3, joinOptions{isAirgap: true, isHA: true})
1856+
joinControllerNodeWithOptions(t, tc, 3, joinOptions{isHA: true})
19381857
checkWorkerProfile(t, tc, 3)
19391858

19401859
// wait for the nodes to report as ready.
@@ -2198,48 +2117,48 @@ func TestFiveNodesAirgapUpgrade(t *testing.T) {
21982117

21992118
// generate controller node join command.
22002119
t.Logf("%s: generating a new controller token command", time.Now().Format(time.RFC3339))
2201-
stdout, stderr, err := tc.RunPlaywrightTest("get-join-controller-command")
2120+
stdout, stderr, err := tc.RunPlaywrightTest("get-join-controller-commands")
22022121
if err != nil {
22032122
t.Fatalf("fail to generate controller join token:\nstdout: %s\nstderr: %s", stdout, stderr)
22042123
}
2205-
controllerCommand, err := findJoinCommandInOutput(stdout)
2124+
controllerCommands, err := findJoinCommandsInOutput(stdout)
22062125
if err != nil {
22072126
t.Fatalf("fail to find the join command in the output: %v", err)
22082127
}
2209-
t.Log("controller join token command:", controllerCommand)
2128+
t.Log("controller join commands:", controllerCommands)
22102129

22112130
// bypass ha prompt
2212-
controllerCommand = strings.Replace(controllerCommand, "join", "join --no-ha", 1)
2131+
for i := range controllerCommands {
2132+
controllerCommands[i] = strings.Replace(controllerCommands[i], "join", "join --no-ha", 1)
2133+
}
22132134

2214-
// join the controller nodes
2215-
joinCommandsSequence := [][]string{
2216-
{"rm", "/assets/ec-release-upgrade.tgz"},
2217-
{"airgap-prepare.sh"},
2218-
strings.Split(controllerCommand, " "),
2219-
{"rm", "/assets/release.airgap"},
2220-
{"rm", "/usr/local/bin/embedded-cluster"},
2135+
joinCommands := [][]string{}
2136+
for _, command := range controllerCommands {
2137+
joinCommands = append(joinCommands, []string{command})
22212138
}
2139+
2140+
// join the controller nodes
22222141
runInParallelOffset(t, time.Second*30,
22232142
func(t *testing.T) error {
2224-
err := tc.RunCommandsOnNode(1, joinCommandsSequence)
2143+
err := tc.RunCommandsOnNode(1, joinCommands)
22252144
if err != nil {
22262145
return fmt.Errorf("unable to join node 1: %w", err)
22272146
}
22282147
return nil
22292148
}, func(t *testing.T) error {
2230-
err := tc.RunCommandsOnNode(2, joinCommandsSequence)
2149+
err := tc.RunCommandsOnNode(2, joinCommands)
22312150
if err != nil {
22322151
return fmt.Errorf("unable to join node 2: %w", err)
22332152
}
22342153
return nil
22352154
}, func(t *testing.T) error {
2236-
err := tc.RunCommandsOnNode(3, joinCommandsSequence)
2155+
err := tc.RunCommandsOnNode(3, joinCommands)
22372156
if err != nil {
22382157
return fmt.Errorf("unable to join node 3: %w", err)
22392158
}
22402159
return nil
22412160
}, func(t *testing.T) error {
2242-
err := tc.RunCommandsOnNode(4, joinCommandsSequence)
2161+
err := tc.RunCommandsOnNode(4, joinCommands)
22432162
if err != nil {
22442163
return fmt.Errorf("unable to join node 4: %w", err)
22452164
}
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { test, expect } from '@playwright/test';
2-
import { login, deployEC18AppVersion } from '../shared';
2+
import { login, deployEC18App } from '../shared';
33

44
test('deploy ec18 app version', async ({ page }) => {
55
test.setTimeout(2 * 60 * 1000); // 2 minutes
66
await login(page);
7-
await deployEC18AppVersion(page, expect);
7+
await deployEC18App(page, expect);
88
});
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { test, expect } from '@playwright/test';
2+
import { login, deployEC23App } from '../shared';
3+
4+
test('deploy ec23 app', async ({ page }) => {
5+
test.setTimeout(2 * 60 * 1000); // 2 minutes
6+
await login(page);
7+
await deployEC23App(page, expect);
8+
});

e2e/playwright/tests/get-ec18-join-worker-command/test.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { test, expect } from '@playwright/test';
22
import { login } from '../shared';
33

4-
test('get join worker command', async ({ page }) => {
4+
test('get ec18 join worker command', async ({ page }) => {
55
await login(page);
66
await page.locator('.NavItem').getByText('Cluster Management', { exact: true }).click();
77
await page.getByRole('button', { name: 'Add node', exact: true }).click();

e2e/playwright/tests/get-join-worker-command/test.spec.ts renamed to e2e/playwright/tests/get-ec23-join-worker-command/test.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { test, expect } from '@playwright/test';
22
import { login } from '../shared';
33

4-
test('get join worker command', async ({ page }) => {
4+
test('get ec23 join worker command', async ({ page }) => {
55
await login(page);
66
await page.locator('.NavItem').getByText('Cluster Management', { exact: true }).click();
77
await page.getByRole('button', { name: 'Add node', exact: true }).click();
@@ -15,4 +15,4 @@ test('get join worker command', async ({ page }) => {
1515
await expect(page.locator('#controller-testNodeType')).not.toBeChecked();
1616
const joinCommand = await page.locator('.react-prism.language-bash').first().textContent();
1717
console.log(`{"command":"${joinCommand}"}`);
18-
});
18+
});
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
import { test, expect } from '@playwright/test';
22
import { login } from '../shared';
33

4-
test('get join controller command', async ({ page }) => {
4+
test('get join controller commands', async ({ page }) => {
55
await login(page);
66
await page.locator('.NavItem').getByText('Cluster Management', { exact: true }).click();
77
await page.getByRole('button', { name: 'Add node', exact: true }).click();
88
await expect(page.locator('.Modal-body')).toBeVisible();
99
await expect(page.getByRole('heading')).toContainText('Add a Node');
1010
await expect(page.getByText('Roles:')).toBeVisible();
1111
await expect(page.locator('#controller-testNodeType')).toBeChecked();
12-
const joinCommand = await page.locator('.react-prism.language-bash').first().textContent();
13-
console.log(`{"command":"${joinCommand}"}`);
12+
const joinCommand1 = await page.locator('.react-prism.language-bash').nth(0).textContent();
13+
const joinCommand2 = await page.locator('.react-prism.language-bash').nth(1).textContent();
14+
const joinCommand3 = await page.locator('.react-prism.language-bash').nth(2).textContent();
15+
console.log(JSON.stringify({commands: [joinCommand1, joinCommand2, joinCommand3]}));
1416
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { test, expect } from '@playwright/test';
2+
import { login } from '../shared';
3+
4+
test('get join worker commands', async ({ page }) => {
5+
await login(page);
6+
await page.locator('.NavItem').getByText('Cluster Management', { exact: true }).click();
7+
await page.getByRole('button', { name: 'Add node', exact: true }).click();
8+
await expect(page.locator('.Modal-body')).toBeVisible();
9+
await expect(page.getByRole('heading')).toContainText('Add a Node');
10+
await expect(page.getByText('Roles:')).toBeVisible();
11+
await expect(page.locator('#controller-testNodeType')).toBeChecked();
12+
await page.locator('.nodeType-selector').getByText('controller-test').click()
13+
await page.locator('.nodeType-selector').getByText('abc').click()
14+
await expect(page.locator('#abcNodeType')).toBeChecked();
15+
await expect(page.locator('#controller-testNodeType')).not.toBeChecked();
16+
const joinCommand1 = await page.locator('.react-prism.language-bash').nth(0).textContent();
17+
const joinCommand2 = await page.locator('.react-prism.language-bash').nth(1).textContent();
18+
const joinCommand3 = await page.locator('.react-prism.language-bash').nth(2).textContent();
19+
console.log(JSON.stringify({commands: [joinCommand1, joinCommand2, joinCommand3]}));
20+
});

e2e/playwright/tests/get-restore-join-controller-command/test.spec.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.

0 commit comments

Comments
 (0)