Skip to content

Commit 92cbb2c

Browse files
authored
Merge pull request #179 from mcattamoredhat/test-ostree-layered-pkg
ci: add layered package into deployments to verify incompatible flag bug fix
2 parents 4f0b872 + b52c5e8 commit 92cbb2c

3 files changed

Lines changed: 76 additions & 4 deletions

File tree

tests/greenboot-bootc-anaconda-iso.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ case "${ID}-${VERSION_ID}" in
4040
sudo dnf install -y rpmbuild rust-packaging
4141
;;
4242
"fedora-44")
43-
OS_VARIANT="fedora-44"
43+
OS_VARIANT="fedora-unknown"
4444
BASE_IMAGE_URL="quay.io/fedora/fedora-bootc:44"
4545
BIB_URL="quay.io/centos-bootc/bootc-image-builder:latest"
4646
BOOT_ARGS="uefi"

tests/greenboot-bootc-qcow2.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ case "${ID}-${VERSION_ID}" in
4040
sudo dnf install -y rpmbuild rust-packaging
4141
;;
4242
"fedora-44")
43-
OS_VARIANT="fedora-44"
43+
OS_VARIANT="fedora-unknown"
4444
BASE_IMAGE_URL="quay.io/fedora/fedora-bootc:44"
4545
BIB_URL="quay.io/centos-bootc/bootc-image-builder:latest"
4646
BOOT_ARGS="uefi"

tests/greenboot-ostree.yaml

Lines changed: 74 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,58 @@
7575
shell: findmnt -r -o OPTIONS -n /boot | awk -F "," '{print $1}'
7676
register: result_boot_mount_before
7777

78-
# case: check rollback function if boot error found
78+
# case: install layered package to reproduce incompatible flag rollback bug
79+
- name: verify tree is not already present in base deployment
80+
block:
81+
- name: check tree is not installed
82+
command: rpm -q tree
83+
register: result_tree_precheck
84+
failed_when: result_tree_precheck.rc == 0
85+
86+
- assert:
87+
that:
88+
- result_tree_precheck.rc != 0
89+
fail_msg: "tree is already in the base image - pick a different layered package for this test"
90+
success_msg: "tree is not in the base image, safe to use as layered package"
91+
always:
92+
- set_fact:
93+
total_counter: "{{ total_counter | int + 1 }}"
94+
rescue:
95+
- name: failed count + 1
96+
set_fact:
97+
failed_counter: "{{ failed_counter | int + 1 }}"
98+
99+
- name: install layered package (tree) to create deployment with incompatible flag
100+
block:
101+
- name: install tree as layered package via rpm-ostree
102+
command: rpm-ostree install tree
103+
become: yes
104+
105+
- name: reboot to apply layered package
106+
reboot:
107+
reboot_timeout: 600
108+
post_reboot_delay: 30
109+
become: yes
110+
111+
- name: verify tree was installed as layered package
112+
command: rpm -q tree
113+
become: yes
114+
register: result_tree_verify
115+
116+
- assert:
117+
that:
118+
- result_tree_verify.rc == 0
119+
fail_msg: "Layered package installation failed"
120+
success_msg: "Layered package (tree) installed successfully"
121+
always:
122+
- set_fact:
123+
total_counter: "{{ total_counter | int + 1 }}"
124+
rescue:
125+
- name: failed count + 1
126+
set_fact:
127+
failed_counter: "{{ failed_counter | int + 1 }}"
128+
129+
# case: check rollback function if boot error found (with layered package present)
79130
- name: install sanely failing health check unit to test red boot status behavior
80131
block:
81132
- name: install sanely failing health check unit to test red boot status behavior
@@ -117,6 +168,27 @@
117168
set_fact:
118169
failed_counter: "{{ failed_counter | int + 1 }}"
119170

171+
# case: verify layered package persists after rollback
172+
- name: verify layered package (tree) is present after rollback
173+
block:
174+
- name: check tree is still installed after rollback
175+
command: rpm -q tree
176+
register: result_tree_after_rollback
177+
178+
- assert:
179+
that:
180+
- result_tree_after_rollback.rc == 0
181+
fail_msg: "tree not found after rollback - system rolled back to wrong deployment"
182+
success_msg: "tree present after rollback - correct deployment restored"
183+
always:
184+
- set_fact:
185+
total_counter: "{{ total_counter | int + 1 }}"
186+
rescue:
187+
- name: failed count + 1
188+
set_fact:
189+
failed_counter: "{{ failed_counter | int + 1 }}"
190+
when: result_rollback is defined and result_rollback is succeeded
191+
120192
# case: check fallback log
121193
- name: fallback log should be found here
122194
block:
@@ -138,7 +210,7 @@
138210
- name: failed count + 1
139211
set_fact:
140212
failed_counter: "{{ failed_counter | int + 1 }}"
141-
when: result_rollback is succeeded
213+
when: result_rollback is defined and result_rollback is succeeded
142214

143215
# case: check boot-complete.target status
144216
- name: boot-complete.target should be active

0 commit comments

Comments
 (0)