test: Add greenboot testing
This commit is contained in:
parent
ff70b269fb
commit
f28e860e69
1 changed files with 220 additions and 0 deletions
|
|
@ -294,6 +294,226 @@
|
|||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
|
||||
# case: check dnf package and it should not be installed
|
||||
# https://github.com/osbuild/osbuild-composer/blob/master/internal/distro/rhel8/distro.go#L642
|
||||
- name: dnf should not be installed
|
||||
block:
|
||||
- name: dnf should not be installed
|
||||
shell: rpm -qa | grep dnf || echo -n PASS
|
||||
register: result_dnf
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result_dnf.stdout == "PASS"
|
||||
fail_msg: "dnf is installed"
|
||||
success_msg: "No dnf installed"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
|
||||
# case: check installed greenboot packages
|
||||
# https://github.com/osbuild/osbuild-composer/blob/master/internal/distro/rhel8/distro.go#L634
|
||||
- name: greenboot and it's related packages should be installed
|
||||
block:
|
||||
- name: greenboot and it's related packages should be installed
|
||||
shell: rpm -qa | grep greenboot
|
||||
register: result_greenboot_packages
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "'greenboot-0' in result_greenboot_packages.stdout"
|
||||
- "'greenboot-grub2' in result_greenboot_packages.stdout"
|
||||
- "'greenboot-rpm-ostree-grub2' in result_greenboot_packages.stdout"
|
||||
- "'greenboot-reboot' in result_greenboot_packages.stdout"
|
||||
- "'greenboot-status' in result_greenboot_packages.stdout"
|
||||
fail_msg: "Some of greenboot and its related packages are not installed"
|
||||
success_msg: "All greenboot and its related packages are installed"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
|
||||
# case: check greenboot* services
|
||||
- name: a list of greenboot* service should be enabled
|
||||
block:
|
||||
- name: a list of greenboot* service should be enabled
|
||||
command: systemctl is-enabled greenboot-grub2-set-counter greenboot-grub2-set-success greenboot-healthcheck greenboot-rpm-ostree-grub2-check-fallback greenboot-status greenboot-task-runner redboot-auto-reboot redboot-task-runner
|
||||
register: result_greenboot_service
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result_greenboot_service.stdout == 'enabled\nenabled\nenabled\nenabled\nenabled\nenabled\nenabled\nenabled'
|
||||
fail_msg: "Some of greenboot* services are not enabled"
|
||||
success_msg: "All greenboot* services are enabled"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
|
||||
# case: check greenboot* services log
|
||||
- name: all greenboot* service should run without error
|
||||
block:
|
||||
- name: all greenboot* service should run without error
|
||||
command: journalctl -b -0 -u boot-complete.target -u greenboot -u greenboot-healthcheck -u greenboot-rpm-ostree-grub2-check-fallback -u greenboot-grub2-set-counter -u greenboot-grub2-set-success -u greenboot-status -u redboot -u redboot-auto-reboot -u redboot.target
|
||||
register: result_greenboot_log
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "'Script \\'00_required_scripts_start.sh\\' SUCCESS' in result_greenboot_log.stdout"
|
||||
- "'Script \\'00_wanted_scripts_start.sh\\' SUCCESS' in result_greenboot_log.stdout"
|
||||
- "'greenboot Health Checks Runner' in result_greenboot_log.stdout"
|
||||
- "'Reached target Boot Completion Check' in result_greenboot_log.stdout"
|
||||
- "'Mark boot as successful in grubenv' in result_greenboot_log.stdout"
|
||||
- "'Boot Status is GREEN - Health Check SUCCESS' in result_greenboot_log.stdout"
|
||||
- "'greenboot MotD Generator' in result_greenboot_log.stdout"
|
||||
fail_msg: "Some errors happened in service boot"
|
||||
success_msg: "All greenboot services booted success"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
|
||||
# case: check grubenv variables
|
||||
- name: grubenv variables should contain boot_success=1
|
||||
block:
|
||||
- name: grubenv variables should contain boot_success=1
|
||||
command: grub2-editenv list
|
||||
register: result_grubenv
|
||||
become: yes
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "'boot_success=1' in result_grubenv.stdout"
|
||||
fail_msg: "Not found boot_success=1"
|
||||
success_msg: "Found boot_success=1"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
|
||||
# case: check rollback function if boot error found
|
||||
- name: install sanely failing health check unit to test red boot status behavior
|
||||
block:
|
||||
- name: install sanely failing health check unit to test red boot status behavior
|
||||
command: rpm-ostree install http://file-server-virt-qe-3rd.cloud.paas.psi.redhat.com/greenboot-failing-unit-1.0-1.el8.noarch.rpm
|
||||
become: yes
|
||||
|
||||
- name: reboot to deploy new ostree commit
|
||||
reboot:
|
||||
become: yes
|
||||
|
||||
- name: waits until instance is reachable
|
||||
wait_for:
|
||||
host: "192.168.100.50"
|
||||
port: 22
|
||||
search_regex: OpenSSH
|
||||
delay: 10
|
||||
register: result_rollback
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result_rollback is succeeded
|
||||
fail_msg: "Rollback failed"
|
||||
success_msg: "Rollback success"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
|
||||
# case: check ostree commit after rollback
|
||||
- name: check ostree commit after rollback
|
||||
block:
|
||||
- name: check ostree commit after rollback
|
||||
command: rpm-ostree status --json
|
||||
register: result_commit
|
||||
|
||||
- name: make a json result
|
||||
set_fact:
|
||||
deploy_commit: "{{ result_commit.stdout | from_json | json_query('deployments[0].checksum') }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- deploy_commit == ostree_commit
|
||||
fail_msg: "Not rollback to last commit"
|
||||
success_msg: "Rollback success"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
when: result_rollback is succeeded
|
||||
|
||||
# case: check greenboot* services log again
|
||||
- name: fallback log should be found here
|
||||
block:
|
||||
- name: fallback log should be found here
|
||||
command: journalctl -b -0 -u boot-complete.target -u greenboot -u greenboot-healthcheck -u greenboot-rpm-ostree-grub2-check-fallback -u greenboot-grub2-set-counter -u greenboot-grub2-set-success -u greenboot-status -u redboot -u redboot-auto-reboot -u redboot.target
|
||||
register: result_greenboot_log
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "'FALLBACK BOOT DETECTED! Default rpm-ostree deployment has been rolled back' in result_greenboot_log.stdout"
|
||||
- "'Script \\'00_required_scripts_start.sh\\' SUCCESS' in result_greenboot_log.stdout"
|
||||
- "'Script \\'00_wanted_scripts_start.sh\\' SUCCESS' in result_greenboot_log.stdout"
|
||||
- "'greenboot Health Checks Runner' in result_greenboot_log.stdout"
|
||||
- "'Reached target Boot Completion Check' in result_greenboot_log.stdout"
|
||||
- "'Mark boot as successful in grubenv' in result_greenboot_log.stdout"
|
||||
- "'Boot Status is GREEN - Health Check SUCCESS' in result_greenboot_log.stdout"
|
||||
- "'greenboot MotD Generator' in result_greenboot_log.stdout"
|
||||
fail_msg: "Fallback log not found"
|
||||
success_msg: "Found fallback log"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
when: result_rollback is succeeded
|
||||
|
||||
# case: check grubenv variables again
|
||||
- name: grubenv variables should contain boot_success=1
|
||||
block:
|
||||
- name: grubenv variables should contain boot_success=1
|
||||
command: grub2-editenv list
|
||||
register: result_grubenv
|
||||
become: yes
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "'boot_success=1' in result_grubenv.stdout"
|
||||
fail_msg: "Not found boot_success=1"
|
||||
success_msg: "Found boot_success=1"
|
||||
always:
|
||||
- set_fact:
|
||||
total_counter: "{{ total_counter | int + 1 }}"
|
||||
rescue:
|
||||
- name: failed count + 1
|
||||
set_fact:
|
||||
failed_counter: "{{ failed_counter | int + 1 }}"
|
||||
when: result_rollback is succeeded
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- failed_counter == "0"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue