Skip to content

Commit 781f6b9

Browse files
chore: use a license during e2e tests (#172)
* chore: use a license during e2e tests in order to capture problems with the embedded license we need to use a version of the embedded cluster binary with an embedded kots license. * chore: fix wrong e2e test name * chore: error out if message is not found * chore: remove surplus password confirmation * chore: bump admin console version
1 parent cd77654 commit 781f6b9

File tree

9 files changed

+75
-14
lines changed

9 files changed

+75
-14
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,5 @@ bundle
33
pkg/goods/bins
44
pkg/goods/images
55
*tgz
6-
license.yaml
6+
release.tar.gz
7+
release.o

Makefile

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ARCH := $(shell uname -m)
44
APP_NAME = embedded-cluster
55
ADMIN_CONSOLE_CHART_URL = oci://registry.replicated.com/library
66
ADMIN_CONSOLE_CHART_NAME = admin-console
7-
ADMIN_CONSOLE_CHART_VERSION = 1.104.0
7+
ADMIN_CONSOLE_CHART_VERSION = 1.104.0-build.1
88
EMBEDDED_OPERATOR_CHART_URL = oci://registry.replicated.com/library
99
EMBEDDED_OPERATOR_CHART_NAME = embedded-cluster-operator
1010
EMBEDDED_OPERATOR_CHART_VERSION = 0.2.0
@@ -92,12 +92,16 @@ pkg/goods/bins/embedded-cluster/kubectl-preflight:
9292
tar -xzf output/tmp/preflight/preflight.tar.gz -C output/tmp/preflight
9393
mv output/tmp/preflight/preflight pkg/goods/bins/embedded-cluster/kubectl-preflight
9494

95-
.PHONY: embed-license
96-
embed-license: embedded-cluster-linux-amd64 license.yaml
95+
release.tar.gz:
9796
mkdir -p output/tmp
98-
tar -czvf output/tmp/license.tar.gz license.yaml
99-
objcopy --input-target binary --output-target binary --rename-section .data=sec_bundle output/tmp/license.tar.gz output/tmp/license.tar.gz.o
100-
objcopy --add-section sec_bundle=output/tmp/license.tar.gz.o output/bin/embedded-cluster
97+
tar -czf release.tar.gz -C e2e/kots-release .
98+
99+
.PHONY: embedded-release
100+
embedded-release: embedded-cluster-linux-amd64 release.tar.gz
101+
objcopy --input-target binary --output-target binary --rename-section .data=sec_bundle release.tar.gz release.o
102+
@if ! objcopy --update-section sec_bundle=release.o output/bin/embedded-cluster ; then \
103+
objcopy --add-section sec_bundle=release.o output/bin/embedded-cluster ; \
104+
fi
101105

102106
.PHONY: static
103107
static: pkg/goods/bins/embedded-cluster/kubectl-preflight \
@@ -133,14 +137,14 @@ vet: static-linux-amd64 static
133137
go vet ./...
134138

135139
.PHONY: e2e-tests
136-
e2e-tests: embedded-cluster-linux-amd64
140+
e2e-tests: embedded-release
137141
mkdir -p output/tmp
138142
rm -rf output/tmp/id_rsa*
139143
ssh-keygen -t rsa -N "" -C "Integration Test Key" -f output/tmp/id_rsa
140144
go test -timeout 45m -parallel 1 -failfast -v ./e2e
141145

142146
.PHONY: e2e-test
143-
e2e-test: embedded-cluster-linux-amd64
147+
e2e-test: embedded-release
144148
mkdir -p output/tmp
145149
rm -rf output/tmp/id_rsa*
146150
ssh-keygen -t rsa -N "" -C "Integration Test Key" -f output/tmp/id_rsa

e2e/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,14 @@ TestSomething is the name of the test function you want to run.
5454

5555
To add more tests you just need to create one inside this directory
5656
and then add it to the `.github/workflows/e2e.yaml` file.
57+
58+
59+
### Kots test application
60+
61+
During end to end tests we embed a license for a smoke test kots app,
62+
this app can be found in:
63+
64+
https://vendor.replicated.com/apps/embedded-cluster-smoke-test-app
65+
66+
Make sure to update the application yaml files under kots-release
67+
directory if you create a new release of the remote application.

e2e/embed_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"github.com/replicatedhq/embedded-cluster/e2e/cluster"
77
)
88

9-
func AndInstall(t *testing.T) {
9+
func TestEmbedAndInstall(t *testing.T) {
1010
t.Parallel()
1111
tc := cluster.NewTestCluster(&cluster.Input{
1212
T: t,

e2e/kots-release/kots-app.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
apiVersion: kots.io/v1beta1
3+
kind: Application
4+
metadata:
5+
name: nginx
6+
spec:
7+
title: Embedded Cluster Smoke Test App
8+
icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/kubernetes/icon/color/kubernetes-icon-color.png
9+
statusInformers:
10+
- deployment/nginx
11+
ports:
12+
- serviceName: "nginx"
13+
servicePort: 80
14+
localPort: 8888
15+
applicationUrl: "http://nginx"

e2e/kots-release/license.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
apiVersion: kots.io/v1beta1
2+
kind: License
3+
metadata:
4+
name: embeddedclusterintegrationtests
5+
spec:
6+
appSlug: embedded-cluster-smoke-test-app
7+
channelID: 2Xt5IoImUY2W8eo5DWZEdtA5Yr1
8+
channelName: Stable
9+
customerName: Embedded Cluster Integration Tests
10+
endpoint: https://replicated.app
11+
entitlements:
12+
expires_at:
13+
description: License Expiration
14+
signature: {}
15+
title: Expiration
16+
value: ""
17+
valueType: String
18+
isGitOpsSupported: true
19+
isHelmVmDownloadEnabled: true
20+
isKotsInstallEnabled: true
21+
isNewKotsUiEnabled: true
22+
isSemverRequired: true
23+
isSnapshotSupported: true
24+
licenseID: 2Xt5q15MDpLvaO15UZ5XhKxBqB1
25+
licenseSequence: 1
26+
licenseType: prod
27+
signature: eyJsaWNlbnNlRGF0YSI6ImV5SmhjR2xXWlhKemFXOXVJam9pYTI5MGN5NXBieTkyTVdKbGRHRXhJaXdpYTJsdVpDSTZJa3hwWTJWdWMyVWlMQ0p0WlhSaFpHRjBZU0k2ZXlKdVlXMWxJam9pWlcxaVpXUmtaV1JqYkhWemRHVnlhVzUwWldkeVlYUnBiMjUwWlhOMGN5SjlMQ0p6Y0dWaklqcDdJbXhwWTJWdWMyVkpSQ0k2SWpKWWREVnhNVFZOUkhCTWRtRlBNVFZWV2pWWWFFdDRRbkZDTVNJc0lteHBZMlZ1YzJWVWVYQmxJam9pY0hKdlpDSXNJbU4xYzNSdmJXVnlUbUZ0WlNJNklrVnRZbVZrWkdWa0lFTnNkWE4wWlhJZ1NXNTBaV2R5WVhScGIyNGdWR1Z6ZEhNaUxDSmhjSEJUYkhWbklqb2laVzFpWldSa1pXUXRZMngxYzNSbGNpMXpiVzlyWlMxMFpYTjBMV0Z3Y0NJc0ltTm9ZVzV1Wld4SlJDSTZJakpZZERWSmIwbHRWVmt5VnpobGJ6VkVWMXBGWkhSQk5WbHlNU0lzSW1Ob1lXNXVaV3hPWVcxbElqb2lVM1JoWW14bElpd2liR2xqWlc1elpWTmxjWFZsYm1ObElqb3hMQ0psYm1Sd2IybHVkQ0k2SW1oMGRIQnpPaTh2Y21Wd2JHbGpZWFJsWkM1aGNIQWlMQ0psYm5ScGRHeGxiV1Z1ZEhNaU9uc2laWGh3YVhKbGMxOWhkQ0k2ZXlKMGFYUnNaU0k2SWtWNGNHbHlZWFJwYjI0aUxDSmtaWE5qY21sd2RHbHZiaUk2SWt4cFkyVnVjMlVnUlhod2FYSmhkR2x2YmlJc0luWmhiSFZsSWpvaUlpd2lkbUZzZFdWVWVYQmxJam9pVTNSeWFXNW5JaXdpYzJsbmJtRjBkWEpsSWpwN2ZYMTlMQ0pwYzBkcGRFOXdjMU4xY0hCdmNuUmxaQ0k2ZEhKMVpTd2lhWE5UYm1Gd2MyaHZkRk4xY0hCdmNuUmxaQ0k2ZEhKMVpTd2lhWE5PWlhkTGIzUnpWV2xGYm1GaWJHVmtJanAwY25WbExDSnBjMGhsYkcxV2JVUnZkMjVzYjJGa1JXNWhZbXhsWkNJNmRISjFaU3dpYVhOTGIzUnpTVzV6ZEdGc2JFVnVZV0pzWldRaU9uUnlkV1VzSW1selUyVnRkbVZ5VW1WeGRXbHlaV1FpT25SeWRXVjlmUT09IiwiaW5uZXJTaWduYXR1cmUiOiJleUpzYVdObGJuTmxVMmxuYm1GMGRYSmxJam9pVTNGNWJHbHBUM1YyZUhGSWNIRjJOMVl5YkV4eGNFUkhOMnB0VWtwbVZVbDJaR016Wld0RFNuTjZSeXRLTWxSdVdXSjFZMUoyV0UxTmRHMXBTR1J1WlU1NGRFSldaMHB5U0dKMEsxVTFPRXc1TTJZME1XRjBRbnBKWW1KVGIwWkpPR0ZzVUhadFYwYzRVa1JyU1VOVFlWTmxNSGRpWWpKaFR6Um9kMlp1UkZKaFVHRTJaRFJEVEZRclJISXhSazl2Y21SaGIwbGhSVlZLUjBkME9Xd3ZXVlZFWWpKcFlXSkdiVzVYTWxnclNrWXJNVm93U0dJM1EwSndhSEUzVDNSTGIwTlBNRzFWYVc0eWVtdE1ZbFk1ZUV0cmFUSmlUemxIZVhRNU4xRjRiMDVKWlhwRGVqWm1ZWGt3YkZsWkwwRkZVMjV3YWl0aUsxbEtNelJCWTFWSVkxTlZRbFIwVmpKMFVtTjJhQ3RxTDBWTUsxUlRPVkF4WjNkaVZFMHdlbnA1UmxSWlNtNVhZbFZpZFRkbWJtNTBUV2N5VlVsRlZFUmliMFV5U0VaM1ozUk9MMmN5VVNzNFVrYzVhVmwyV0c0eVVUUlhNMUZCUFQwaUxDSndkV0pzYVdOTFpYa2lPaUl0TFMwdExVSkZSMGxPSUZCVlFreEpReUJMUlZrdExTMHRMVnh1VFVsSlFrbHFRVTVDWjJ0eGFHdHBSemwzTUVKQlVVVkdRVUZQUTBGUk9FRk5TVWxDUTJkTFEwRlJSVUY2UVdGNGRWZDNjREF2UVdkd05VOTZjVzUzVTF4dVVUWXlSVE5sZFhVclVWVmpXRk1yYTFOTVZDOHhLMjU1TUdGMU9FRXhVVVZWUkV3eFMzWmlkV0l5TVZGaFZqaFNhbWhyTUVGS1QyaERPRkF5TjNJdlJGeHVXSGh4V25oWWRVbDNhRUZyTVUxMWNIVmhWSEpzYldKMFduVkpjV1ZCYUZsbmFqbGhOM0JHTTFFd1VreEVWbWhJYVdkWmFXeHZjRlpNY2pGeVVIUXJjRnh1WVhsdFdYYzRaVFp5YjFGaFUyVTBTbHB1VWxWdlNEVkVNVWh2ZEhobFUwNUZiQzlaYWxoNFdXZDFNVWhrV1ZsaGNHSldObFp4VjBaSlZXSnpOMk5PYlZ4dU1VOXBPSHB2ZHpCdFVqQnlMM0JGUkdsd1VHVndabVJLU3paa2VGbzNUazUzY1VoWVQxVmFiRkZuWjFoRFVYSklTVWRzZDBwd1ZIQlNjbU5pWm0wNFdGeHVRVGxyY1hGeFZEbHNSWEVyUkVaUVJrdFBaMVJEV25OM2RFNVlZbFJ5UkhkcU5uTnRNV2RpVlhsS2IyNXJVVk5GVm5CcmFUQlhNblpQVDBOWlpESXllRnh1VEZGSlJFRlJRVUpjYmkwdExTMHRSVTVFSUZCVlFreEpReUJMUlZrdExTMHRMVnh1SWl3aWEyVjVVMmxuYm1GMGRYSmxJam9pWlhsS2VtRlhaSFZaV0ZJeFkyMVZhVTlwU2sxVWJFWk9ZMVpzVTAxdFVrNWpNbFkxVDFkME1XRlVVa1JPVmxaUFlqSnNZVTVVUWs1aU1YQjJXakpLUjJWdGNHRk5SRUp3VERCT1YyUllSa1JOYVhSS1dsaGtiVkZXYTNoTU1qaDVWa1pvY1ZWSVVrZFRSbFp4VGpOc1VsWXpRakJaZWxKMVZXMDFWR1ZyVmtaWlZscFdZVlV4VEU5SWNHaGxSM2d4Vmxac2FXVkdUVFJqVlZaTFVUSndjVnBIVm5SYVJXaHpVVlZrYkZOWGQzWmliV3h6WkdwS2VGUlVaSEZhYWxKVVYxaHNiMVl4YkROTlNGcFJaVlYzY21GcldubFBSa3BKVTBNNWEySkhjRkJQVTNSclRtdGFiRlJJVGxsVmJXeElUVVprYUZWc1JtMVBXRW8xVkc1U05sbHVaREJPTTNCRFZubDBkRTFIVGtWVFIwNHdZMGh3TTJKdFNteFZla3BKV1ROa2JXUkZhSFpWVm1zelYxUlpNRlpFVmxCTlJuQlFUMVpTYm1OcGRHdGFTRXBQVGxaa1JVOVhOVnBoVjFaSlltNUdSR05zVmxOV2JrSm9aREJvVjAxcGRFUlJhMFp0VDBSQmVWb3dXbFJPU0ZKR1V6SlNTbUpHVWtkU1ZrWnZWbFpTUkdOclJscFZNbEp4WkRKS1IxSXdZekJQUnpGb1RXNUdNbVJyZEhoVFIwNXdWakZ3Y2xORk1IaE9NVlpLVEROYWRrNHlTbkZYVkZwUlV6SldjRll5ZUZKU1ZuQnVXakpaTVZkSVVraFpWMHBaVWtSTmNsUkhZemxRVTBselNXMWtjMkl5U21oaVJYUnNaVlZzYTBscWIybFpiVkpzV2xSVk1rNVVXWGRaTWxwcFRrUk9hazlYU1hsUFIwcHRUMVJvYkZsWFRtaGFiVVV5VGtSWmFXWlJQVDBpZlE9PSJ9

e2e/scripts/embedded-preflight.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ embed_preflight() {
121121
objcopy --input-target binary --output-target binary --rename-section .data=sec_bundle /root/preflight.tar.gz /root/preflight.o
122122
rm -rf /usr/local/bin/embedded-cluster
123123
cp -Rfp /usr/local/bin/embedded-cluster-copy /usr/local/bin/embedded-cluster
124-
objcopy --add-section sec_bundle=/root/preflight.o /usr/local/bin/embedded-cluster
124+
objcopy --update-section sec_bundle=/root/preflight.o /usr/local/bin/embedded-cluster
125125
}
126126

127127
has_applied_host_preflight() {

e2e/scripts/interactive-multi-node-install.exp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,7 @@ expect -re "Add another node?.*:" { send "n\r" }
2121
set timeout 600
2222
expect "Enter a new Admin Console password:" { send "password\r" }
2323
expect "Confirm password:" { send "password\r" }
24-
expect "Admin Console is ready!"
24+
expect {
25+
"Admin Console is ready!" { exit 0 }
26+
eof { exit 1 }
27+
}

pkg/kubeutils/kubeutils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ func WaitForDeployment(ctx context.Context, cli client.Client, ns, name string)
2929
if err := wait.ExponentialBackoff(backoff, func() (bool, error) {
3030
ready, err := IsDeploymentReady(ctx, cli, ns, name)
3131
if err != nil {
32-
lasterr = fmt.Errorf("error checking status of kotsadm: %v", err)
32+
lasterr = fmt.Errorf("unable to get deploy %s status: %v", name, err)
3333
return false, nil
3434
}
3535
return ready, nil
3636
}); err != nil {
37-
return fmt.Errorf("timed out waiting for admin console: %v", lasterr)
37+
return fmt.Errorf("timed out waiting for deploy %s: %v", name, lasterr)
3838
}
3939
return nil
4040
}

0 commit comments

Comments
 (0)