OS-level test automation
Clone or download
coolo Merge pull request #1018 from richiejp/snapshot_knobs
qemu: Add knobs and dials for tuning snapshotting
Latest commit 0d10ddb Sep 23, 2018
Failed to load latest commit information.
OpenQA Treat $OpenQA::Isotovideo::Interface::version as test API (#1023) Sep 23, 2018
backend qemu: Add knobs and dials for tuning snapshotting Sep 21, 2018
bin rename start.pl to isotovideo Nov 27, 2014
consoles Fix led state change with tigervnc (#1028) Sep 23, 2018
debugviewer Do not stop the debug viewer but keep running with old/black image May 15, 2017
dmidata fix dmi type 1 file Oct 1, 2014
doc Merge pull request #1018 from richiejp/snapshot_knobs Sep 23, 2018
docker/travis_test docker: attempt to upgrade packages before run Aug 13, 2018
etc Fix Makefile to install the perl modules properly Jan 21, 2016
m4 Request C++11 as minimum version (#788) May 16, 2017
ppmclibs ppmclibs/tinycv_impl.cc code improvements (#968) Jun 5, 2018
snd2png Fix snd2png check on TW: don't use PNM but PNG (#885) Nov 24, 2017
systemd don't hardcode libexecdir in openvswitch service file Apr 26, 2016
t Merge pull request #1019 from okurz/feature/no_vars_json Sep 23, 2018
tools tidy: exclude .git/ from search path (#974) Jun 13, 2018
.gitignore The Great QEMU Rewrite of 2018 Jul 17, 2018
.perltidyrc Prevent perl tidy from completely ruining well formatted code Jul 17, 2018
.travis.yml Move to codecov Jun 27, 2018
COPYING add copyright headers Dec 16, 2015
INSTALL.asciidoc docs: Use x86_64 openSUSE vars and explain vars Nov 15, 2016
Makefile.am Refactor command processing in isotovideo Sep 7, 2018
README.asciidoc Document the multi-process architecture (#975) Jun 14, 2018
architecture.md Document the multi-process architecture (#975) Jun 14, 2018
autogen.sh Make travis setup reusable (#683) Dec 23, 2016
autotest.pm Merge pull request #1018 from richiejp/snapshot_knobs Sep 23, 2018
basetest.pm Add fatal serial failure type to stop execution if detected Aug 16, 2018
bmwqemu.pm Add variable SCHEDULE to define the full schedule by variable Sep 17, 2018
check_needles.pl Make the hash policy more strict May 1, 2016
codecov.yml Fix repository path from codecov reports Jun 28, 2018
commands.pm command server: Don't mix myjsonrpc with Mojo::IOLoop::Stream Sep 11, 2018
configure.ac Request C++11 as minimum version (#788) May 16, 2017
cpanfile osutils: No need internal pipes here Aug 8, 2018
crop.py crop.py: Correct style according to flake8 Dec 16, 2016
cv.pm Remove function prototypes Jul 25, 2017
distribution.pm Merge pull request #1029 from cfconrad/script_output_heretag Sep 23, 2018
isotovideo isotovideo: Require explicit 'tests/' prefix within SCHEDULE again fo… Sep 17, 2018
lockapi.pm Allow where parameter for mutex unlocking (#969) Jun 12, 2018
mmapi.pm Sync perltidy with openQA#773f59b (#662) Dec 16, 2016
myjsonrpc.pm Make cancelling more reliable (#576) Sep 2, 2016
needle.pm Do not output a warning for only OCR areas Aug 21, 2017
ocr.pm Use more common 'qw()' style Dec 6, 2016
os-autoinst-openvswitch os-autoinst-openvswitch: export unset_vlan to remove vlan tags from t… Jul 17, 2017
osutils.pm Fix "Use of uninitialized value $_[0] in join or string" in 'diag' Sep 17, 2018
testapi.pm testapi: Fix spellcheck with whitelisted 'kvm', 'VM' Sep 17, 2018
videoencoder.cpp videoencoder: Use SET_DUP_COUNT encoder control for repeated frames May 7, 2017


os-autoinst os autoinst badge

The OS-autoinst project aims at providing a means to run fully automated tests. Especially to run tests of basic and low-level operating system components such as bootloader, kernel, installer and upgrade, which can not easily and safely be tested with other automated testing frameworks. However, it can just as well be used to test firefox and openoffice operation on top of a newly installed OS.

os-autoinst can be executed alone, but is currently designed to be executed together with openQA, the web user interface that allows to run more than one os-autoinst instance at the same time.

More information on os-autoinst and openQA can be found on http://os-autoinst.github.io/openQA/

Getting started

To install os-autoinst, you can see INSTALL

To execute an instance of os-autoinst, we need to create file named vars.json, that we use to store the values of the different variables that will configure and drive the behavior of the application.

There are some variables used by os-autoinst itself and other that are used by the tests. A minimal vars.json file can be:

   "DISTRI" :      "opensuse",
   "CASEDIR" :     "/full/path/for/tests",
   "NAME" :        "test-name",
   "ISO" :         "/full/path/for/iso",
   "VNC" :         "91",
   "BACKEND" :     "qemu",
   "DESKTOP" :     "kde"

Be advised that the file vars.json is read and also written by isotovideo so make sure to backup handcrafted versions of this file.

Now we can launch the application with:

$ ../os-autoinst/isotovideo

and we can use VNC to connect to the QEMU instance:

$ vncviewer localhost:91 -ViewOnly -Shared

Run isotovideo with the environment variable RUN_VNCVIEWER set to autostart a VNC viewer on the right port.

Run isotovideo with the environment variable RUN_DEBUGVIEWER to start the internal debug screenshot viewer updated with an always recent screenshot of the test run.

How to contribute

If you want to contribute to this project, please clone and send git-pull requests via https://github.com/os-autoinst/os-autoinst.

More information on the contribution can be found on http://os-autoinst.github.io/openQA/contact/, too.

For an overview of the architecture, see architecture.md.

Rules for commits

  • Every commit is checked by Travis CI as soon as you create a pull request but you should run the os-autoinst tests locally, i.e. call


once to setup your workspace and before every commit

make check
  • You may also run local tests on your machine or in your own development environment to verify everything works as expected.

  • For git commit messages use the rules stated on How to Write a Git Commit Message as a reference

  • Every pull request is reviewed in a peer review to give feedback on possible implications and how we can help each other to improve

If this is too much hassle for you feel free to provide incomplete pull requests for consideration or create an issue with a code change proposal.