Skip to content

Commit 528d1f2

Browse files
authored
Merge pull request #398 from henrywang/more_checking
test: add rollback and bootc upgrade fetch timer test
2 parents 4769fe2 + e9db7c5 commit 528d1f2

File tree

3 files changed

+114
-4
lines changed

3 files changed

+114
-4
lines changed

tests/integration/install-upgrade.sh

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ function redprint {
1010
echo -e "\033[1;31m[$(date -Isecond)] ${1}\033[0m"
1111
}
1212

13+
function retry {
14+
n=0
15+
until [ "$n" -ge 3 ]
16+
do
17+
"$@" && break
18+
n=$((n+1))
19+
sleep 10
20+
done
21+
}
22+
1323
TEMPDIR=$(mktemp -d)
1424
trap 'rm -rf -- "$TEMPDIR"' EXIT
1525

@@ -92,10 +102,10 @@ greenprint "Login quay.io"
92102
podman login -u "${QUAY_USERNAME}" -p "${QUAY_PASSWORD}" quay.io
93103

94104
greenprint "Build $TEST_OS installation container image"
95-
podman build --tls-verify=false -t "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" -f "$INSTALL_CONTAINERFILE" .
105+
podman build --tls-verify=false --retry=5 --retry-delay=10 -t "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" -f "$INSTALL_CONTAINERFILE" .
96106

97107
greenprint "Push $TEST_OS installation container image"
98-
podman push "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" "$TEST_IMAGE_URL"
108+
retry podman push --tls-verify=false --quiet "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" "$TEST_IMAGE_URL"
99109

100110
greenprint "Prepare inventory file"
101111
tee -a "$INVENTORY_FILE" > /dev/null << EOF
@@ -146,9 +156,10 @@ RUN dnf -y install wget && \
146156
EOF
147157

148158
greenprint "Build $TEST_OS upgrade container image"
149-
podman build --tls-verify=false -t "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" -f "$UPGRADE_CONTAINERFILE" .
159+
podman build --tls-verify=false --retry=5 --retry-delay=10 -t "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" -f "$UPGRADE_CONTAINERFILE" .
160+
150161
greenprint "Push $TEST_OS upgrade container image"
151-
podman push "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" "$TEST_IMAGE_URL"
162+
retry podman push --tls-verify=false --quiet "${TEST_IMAGE_NAME}:${QUAY_REPO_TAG}" "$TEST_IMAGE_URL"
152163

153164
greenprint "Upgrade $TEST_OS system"
154165
ansible-playbook -v \
@@ -162,6 +173,11 @@ ansible-playbook -v \
162173
-e upgrade="true" \
163174
playbooks/check-system.yaml
164175

176+
greenprint "Rollback $TEST_OS system"
177+
ansible-playbook -v \
178+
-i "$INVENTORY_FILE" \
179+
playbooks/rollback.yaml
180+
165181
greenprint "Remove $PLATFORM instance"
166182
ansible-playbook -v \
167183
-i "$INVENTORY_FILE" \

tests/integration/playbooks/check-system.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,25 @@
203203
set_fact:
204204
failed_counter: "{{ failed_counter | int + 1 }}"
205205

206+
- name: check bootc-fetch-apply-updates.timer left time
207+
shell: systemctl list-timers bootc-fetch-apply-updates.timer --output json | jq -r '.[].left'
208+
register: result_bootc_timer_left
209+
210+
- name: check bootc-fetch-apply-updates.timer left time greater than 0
211+
block:
212+
- assert:
213+
that:
214+
- result_bootc_timer_left.stdout | int > 0
215+
fail_msg: "bootc-fetch-apply-updates.timer won't be triggered"
216+
success_msg: "bootc-fetch-apply-updates.timer is good"
217+
always:
218+
- set_fact:
219+
total_counter: "{{ total_counter | int + 1 }}"
220+
rescue:
221+
- name: failed count + 1
222+
set_fact:
223+
failed_counter: "{{ failed_counter | int + 1 }}"
224+
206225
- name: check installed package
207226
shell: rpm -qa | sort
208227
register: result_packages
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
---
2+
- hosts: guest
3+
become: false
4+
vars:
5+
total_counter: "0"
6+
failed_counter: "0"
7+
8+
tasks:
9+
- name: rpm-ostree rollback
10+
command: rpm-ostree rollback
11+
become: true
12+
13+
- name: Reboot to deploy new system
14+
reboot:
15+
post_reboot_delay: 60
16+
reboot_timeout: 180
17+
become: true
18+
ignore_errors: true
19+
20+
- name: Wait for connection to become reachable/usable
21+
wait_for_connection:
22+
delay: 30
23+
24+
- name: rollback checking
25+
block:
26+
- name: get booted cachedupdate imageDigest
27+
shell: bootc status --json | jq -r '.status.booted.cachedUpdate.imageDigest'
28+
register: result_booted_cachedupdate_digest
29+
become: true
30+
31+
- name: get rollback image digest
32+
shell: bootc status --json | jq -r '.status.rollback.image.imageDigest'
33+
register: result_rollback_image_digest
34+
become: true
35+
36+
- name: check booted cachedUpdate and rollback image digest
37+
block:
38+
- assert:
39+
that:
40+
- result_booted_cachedupdate_digest.stdout == result_rollback_image_digest.stdout
41+
fail_msg: "rollback failed"
42+
success_msg: "rollback passed"
43+
always:
44+
- set_fact:
45+
total_counter: "{{ total_counter | int + 1 }}"
46+
rescue:
47+
- name: failed count + 1
48+
set_fact:
49+
failed_counter: "{{ failed_counter | int + 1 }}"
50+
51+
- name: check installed package
52+
shell: rpm -qa | sort
53+
register: result_packages
54+
55+
# case: check wget not installed after rollback
56+
- name: check wget not installed
57+
block:
58+
- assert:
59+
that:
60+
- "'wget' not in result_packages.stdout"
61+
fail_msg: "wget installed, ostree rollback might be failed"
62+
success_msg: "wget not installed in ostree rollback"
63+
always:
64+
- set_fact:
65+
total_counter: "{{ total_counter | int + 1 }}"
66+
rescue:
67+
- name: failed count + 1
68+
set_fact:
69+
failed_counter: "{{ failed_counter | int + 1 }}"
70+
71+
- assert:
72+
that:
73+
- failed_counter == "0"
74+
fail_msg: "Run {{ total_counter }} tests, but {{ failed_counter }} of them failed"
75+
success_msg: "Totally {{ total_counter }} test passed"

0 commit comments

Comments
 (0)