3df993404c
Summary: I discovered another fun font issue today. Current anaconda images don't use the intended 'default' console font, eurlatgr. Neither do live images, but installed systems *do*. The font they use is the system BIOS font, which in openQA cases means the qemu firmware font. The easiest way to spot the difference is the @ character; the shorter version is from the system BIOS, the slightly taller one is what it looks like in eurlatgr and latarcyrheb-sun16 (the old default). In a test image I built, for some reason, I *did* get eurlatgr in the tmux console, and that broke some needle matches. After figuring all this out, bcl has sent a lorax patch to use eurlatgr in the installer, so it makes sense to add these fixes to the repo for when that kicks in. We shrink the match on root_logged_in.json by one line. This screenshot is taken from a post-install case where the prompt appears in the middle of the screen, and has three black rows above the prompt; in anaconda, when the prompt appears right at the top of the screen, there's only *two* rows of black above it, so the match fails. This fixes that. It's been working so far because installs have been matching root_logged_in_ rawhide20150311, which is taken with the firmware font, but once the installer starts using eurlatgr, that won't match any more. We also add a new needle for the anaconda_install_source_check _repo_added tag, taken with eurlatgr. The existing screenshot was taken either with the firmware font or with latarcyrheb. They both use a curly glyph for a single quote ('), while eurlatgr uses a straight line. This also renames the root_logged_in variant needle to be clearer about why it's there. We'll probably need variants of some needles until we're sure lives, anaconda env, and installed systems are all using eurlatgr. RHBZ #1250262 is a bug I filed for the live images not using eurlatgr. Test Plan: Run the tests with both BIOS font and eurlatgr as the anaconda font and make sure they all work. The latter might be a bit tricky till the change lands upstream, I've no idea how it worked out that way in my test boot.iso. Reviewers: jskladan, garretraziel Reviewed By: garretraziel Subscribers: tflink Differential Revision: https://phab.qadevel.cloud.fedoraproject.org/D483 |
||
---|---|---|
lib | ||
needles | ||
tests | ||
.arcconfig | ||
.gitignore | ||
COPYING | ||
main.pm | ||
README.md | ||
templates |
OpenQA tests for the Fedora distribution
This repository contains tests and images for testing Fedora with OpenQA. For additional tools, Installation Guide and Docker images, see this repository.
Test development
See official documentation on basic concept, test development (including API specification), needles specification and supported variables for backend. See this example repo on how tests should be structured.
In short, since OpenQA uses only one entrypoint for all tests (main.pm
), we have decided to utilize
this feature and make tests modular. It means that basic passing through main.pm
(without any variables set)
results in most basic installation test executed. Developer can then customize it with additional variables
(for example by setting PACKAGE_SET=minimal
to do installation only with minimal package set).
Make your test modular, so that it utilizes _boot_to_anaconda()
and _do_install_and_reboot()
tests (that are loaded automatically). Break your test into smaller parts, each dealing with one
specific feature (e. g. partitioning, user creation...) and add their loading into main.pm
based
on reasonable variable setting (so they can be used in other tests also).
Test inheritance
Your test can inherit from basetest
, fedorabase
, installedtest
or anacondatest
.
basetest
is basic class provided by os-autoinst - it has emptypost_fail_hook()
and doesn't set any flags.fedorabase
doesn't neither set flags nor does anything inpost_fail_hook()
, but it provides basic functions that will be useful during testing Fedora, likeconsole_login()
orboot_to_login_screen()
. It should be used when no other, more specific class can be used.anacondatest
should be used in tests where Anaconda is running. It uploads Anaconda logs (for exampleanaconda.log
orpackaging.log
) inpost_fail_hook()
. It also provides convenient methods for Anaconda likeselect_disks()
.installedtest
should be used in tests that are running on installed system (either in postinstall phase or in upgrade tests). It uploads/var/log
inpost_fail_hook()
.
Test development checklist
- Select test from this document or from phabricator page
- Put each part of your test as a separate file into
tests/
directory, reimplementingrun()
method andtest_flags()
method, inheriting from one of the classes mentioned above. - Set correct variables (so that all test parts you have made are executed) in WebUI -> Test suites.
- Link your newly created Test suite to medium type in WebUI -> Job groups.
- Run test (see openqa_fedora_tools repository).
- Create needles (images) by using interactive mode and needles editor in WebUI.
- Add new Job template and Test suite into
templates
file. - Add new Test suite and Test case into
conf_test_suites.py
file in openqa_fedora_tools repository. - Mark your test in PhaseSeparation.md as done.
- Open differential request via phabricator.