Skip to content
This repository was archived by the owner on Apr 25, 2023. It is now read-only.

Commit 194f711

Browse files
committed
test: add upgrade test
Signed-off-by: Hector Fernandez <[email protected]>
1 parent ce0b03e commit 194f711

File tree

3 files changed

+50
-22
lines changed

3 files changed

+50
-22
lines changed

scripts/deploy-kubefed.sh

-21
Original file line numberDiff line numberDiff line change
@@ -92,27 +92,6 @@ function kubefed-admission-webhook-ready() {
9292
[[ "${readyReplicas}" -ge "1" ]]
9393
}
9494

95-
function deployment-image-as-expected() {
96-
local namespace="${1}"
97-
local deployment="${2}"
98-
local container="${3}"
99-
local expected_image="${4}"
100-
101-
local deployed_image
102-
deployed_image="$(kubectl -n "${namespace}" get deployment "${deployment}" -o jsonpath='{.spec.template.spec.containers[?(@.name=="'"${container}"'")].image}')"
103-
[[ "${deployed_image}" == "${expected_image}" ]]
104-
}
105-
106-
function check-command-installed() {
107-
local cmdName="${1}"
108-
109-
command -v "${cmdName}" >/dev/null 2>&1 ||
110-
{
111-
echo "${cmdName} command not found. Please download dependencies using ${BASH_SOURCE%/*}/download-binaries.sh and install it in your PATH." >&2
112-
exit 1
113-
}
114-
}
115-
11695
NS="${KUBEFED_NAMESPACE:-kube-federation-system}"
11796
IMAGE_NAME="${1:-}"
11897
NAMESPACED="${NAMESPACED:-}"

scripts/pre-commit.sh

+29-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ E2E_TEST_CMD="${TEMP_DIR}/e2e-${PLATFORM} ${COMMON_TEST_ARGS}"
3838
# given control plane scope.
3939
IN_MEMORY_E2E_TEST_CMD="go test -v -timeout 900s -race ./test/e2e -args ${COMMON_TEST_ARGS} -in-memory-controllers=true -limited-scope-in-memory-controllers=false"
4040

41+
KUBEFED_UPGRADE_TEST_NS="upgrade-test"
42+
KUBEFED_UPGRADE_TEST_VERSION="v0.5.0"
43+
4144
function build-binaries() {
4245
${MAKE_CMD} hyperfed
4346
${MAKE_CMD} controller
@@ -62,6 +65,25 @@ function run-e2e-tests() {
6265
${E2E_TEST_CMD}
6366
}
6467

68+
function run-e2e-upgrade-test() {
69+
check-command-installed kubectl
70+
check-command-installed helm
71+
72+
HOST_CLUSTER="$(kubectl config current-context)"
73+
74+
echo "Installing an older kubefed version ${KUBEFED_UPGRADE_TEST_VERSION}"
75+
helm install kubefed kubefed-charts/kubefed --namespace ${KUBEFED_UPGRADE_TEST_NS} --version=${KUBEFED_UPGRADE_TEST_VERSION} --create-namespace
76+
77+
deployment-image-as-expected "${KUBEFED_UPGRADE_TEST_NS}" kubefed-admission-webhook admission-webhook "quay.io/kubernetes-multicluster/kubefed:${KUBEFED_UPGRADE_TEST_VERSION}"
78+
deployment-image-as-expected "${KUBEFED_UPGRADE_TEST_NS}" kubefed-controller-manager controller-manager "quay.io/kubernetes-multicluster/kubefed:${KUBEFED_UPGRADE_TEST_VERSION}"
79+
80+
echo "Upgrading kubefed to current version"
81+
KUBEFED_NAMESPACE=$KUBEFED_UPGRADE_TEST_NS KIND_CLUSTER_NAME=${HOST_CLUSTER} KIND_LOAD_IMAGE=y ./scripts/deploy-kubefed.sh local/kubefed:e2e "${join_cluster_list[@]-}"
82+
83+
deployment-image-as-expected "${KUBEFED_UPGRADE_TEST_NS}" kubefed-admission-webhook admission-webhook "local/kubefed:e2e"
84+
deployment-image-as-expected "${KUBEFED_UPGRADE_TEST_NS}" kubefed-controller-manager controller-manager "local/kubefed:e2e"
85+
}
86+
6587
function run-e2e-tests-with-in-memory-controllers() {
6688
${IN_MEMORY_E2E_TEST_CMD}
6789
}
@@ -138,7 +160,7 @@ echo "Downloading e2e test dependencies"
138160

139161
KIND_TAG="v1.19.4@sha256:796d09e217d93bed01ecf8502633e48fd806fe42f9d02fdd468b81cd4e3bd40b" ./scripts/create-clusters.sh
140162

141-
declare -a join_cluster_list=()
163+
declare -a join_cluster_list=()
142164
if [[ -z "${JOIN_CLUSTERS}" ]]; then
143165
for i in $(seq 2 "${NUM_CLUSTERS}"); do
144166
join_cluster_list+=("cluster${i}")
@@ -178,3 +200,9 @@ run-namespaced-e2e-tests
178200

179201
echo "Deleting namespace-scoped kubefed"
180202
KUBEFED_NAMESPACE=foo NAMESPACED=y DELETE_CLUSTER_RESOURCE=y ./scripts/delete-kubefed.sh
203+
204+
echo "Running e2e upgrade test"
205+
run-e2e-upgrade-test
206+
207+
echo "Deleting kubefed"
208+
KUBEFED_NAMESPACE=${KUBEFED_UPGRADE_TEST_NS} DELETE_CLUSTER_RESOURCE=y ./scripts/delete-kubefed.sh

scripts/util.sh

+21
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,24 @@ function util::wait-for-condition() {
9898
fi
9999
}
100100
readonly -f util::wait-for-condition
101+
102+
function deployment-image-as-expected() {
103+
local namespace="${1}"
104+
local deployment="${2}"
105+
local container="${3}"
106+
local expected_image="${4}"
107+
108+
local deployed_image
109+
deployed_image="$(kubectl -n "${namespace}" get deployment "${deployment}" -o jsonpath='{.spec.template.spec.containers[?(@.name=="'"${container}"'")].image}')"
110+
[[ "${deployed_image}" == "${expected_image}" ]]
111+
}
112+
113+
function check-command-installed() {
114+
local cmdName="${1}"
115+
116+
command -v "${cmdName}" >/dev/null 2>&1 ||
117+
{
118+
echo "${cmdName} command not found. Please download dependencies using ${BASH_SOURCE%/*}/download-binaries.sh and install it in your PATH." >&2
119+
exit 1
120+
}
121+
}

0 commit comments

Comments
 (0)