os-tests is a lightweight, portable and customer centric tests collection for Linux OS.
# pip install os-tests
Note: please install paramiko if run os-tests in server-client mode.
There is an pynacl issue when installing paramiko on RHEL-8.6. Please install previous pynacl version (1.4.0) instead.
# pip install git+https://github.com/virt-s1/os-tests.git@master
# git clone https://github.com/virt-s1/os-tests.git
# cd os-tests
# python3 setup.py sdist bdist_wheel
# pip install -U dist/os_tests-0.0.3-py3-none-any.whl
note: the default bin path is "/usr/local/bin" if not in virtual environment.
Public new wheels on pypi (maintainer use only)
# python3 -m twine upload dist/*
Install and run tests inside the RHEL system directly, fewer cases than Mode 2 and 3, lacking of tests requiring reboot system and instance control access.
# os-tests
or
# python3 -m unittest -v os_tests.os_tests_run
Require ssh user, key/password and IP to access existing RHEL system, all tests are done remotely, can do lifecyle, kdump test, but without device hotplug capability and other tests requires instance access.
# os-tests --host <remote_node> --user <remote_user> --keyfile <remote_keyfile> --result <result_dir> -p <cases>
Require cloud/platform account to provision remote system self, can do full test with full control of instance. Eg. device hotplug, snapshot creation, send nmi events......
Note: supports aws, openstack, alicloud, nutanix, other platforms are in planning. The config template is under cfg dir.
# os-tests -p cloudinit --user ec2-user --keyfile /home/virtqe_s1.pem --platform_profile aws_env.yaml
# os-tests -l
# os-tests -l -p ltp,virtwhat
# os-tests -l -p ltp -s test_ltp_ipsec_icmp
# os-tests -p test_general_check
# os-tests -p test_change_clocksource
You can list all installed files via pip show -f os-tests
simply.
os_tests
├── cfg ->configration files
├── data ->data files for log checking
├── libs ->libs including resource(vm, disk, network)/func definenation
├── templates ->template for generating html,xml report
├── tests ->all tests files location
└── utils ->3rd party utils, ltp, blktests and others
os-tests will try to install required pkgs from default repo during run, but it would be better to have them if no repo provided. List RHEL only because CentOS Stream and Fedora usually have public repo available.
RHEL-7: install,automake,autoconf,sysstat,gcc,unzip,wget,quota,bzip2,iperf3,pciutils,fio,psmisc,expect,ntpdate,perf,nvme-cli,pciutils,fio,git,tar,nfs-utils,libvirt,qemu-kvm,kernel-debug,python3,dracut-fips,podman,strace,sos
RHEL-8: make,automake,autoconf,sysstat,gcc,unzip,wget,quota,bzip2,iperf3,pciutils,fio,psmisc,expect,perf,nvme-cli,pciutils,fio,php-cli,php-xml,php-json,libaio-devel,blktrace,fio,nvme-cli,git,tar,nfs-utils,libvirt,qemu-kvm,kernel-debug,python3,dracut-fips,podman,xdp-tools,openssl-devel,strace,sos,acpid,mokutil
RHEL-9: make,automake,autoconf,sysstat,gcc,unzip,wget,quota,bzip2,iperf3,pciutils,fio,psmisc,expect,perf,nvme-cli,pciutils,fio,libaio-devel,blktrace,fio,nvme-cli,git,tar,nfs-utils,libvirt,qemu-kvm,python3,dracut-fips,kernel-debug,python3-pip,hostname,podman,xdp-tools,openssl-devel,glibc-all-langpacks,strace,sos,acpid,mokutil
The suite saves summary to sum.html and sum.log under "/tmp/os_tests_result/" by default. The test debug log files are saved in "/tmp/os_tests_result/attachments" following case name by default. You can change "results_dir" in "cfg/os-tests.yaml" to save log to other place or passing as command option.
Below is an example:
# os-tests -p test_change_clocksource
Run in mode: is_listcase:False pattern: test_change_clocksource
test_change_clocksource (os_tests.tests.test_general_test.TestGeneralTest) ... ok
----------------------------------------------------------------------
summary in html: /tmp/os_tests_result/sum.html
summary in text: /tmp/os_tests_result/sum.log
----------------------------------------------------------------------
Ran 1 test in 0.383s
OK
# ls -l /tmp/os_tests_result/debug/
total 8
-rw-r--r--. 1 root root 5472 Mar 30 16:44 os_tests.tests.test_general_test.TestGeneralTest.test_change_clocksource.debug
- run in normal kernel, it is the most used senario
- run in debug kernel with 'kmemleak=on'
- run in fips enabled kernel
- run in remote-client mode to cover lifecycle cases
Below tools are shiped under 'utils' directory with os-tests because not all systems can reach github.
- ltp x86_64: https://github.com/liangxiao1/rpmbuild_specs/releases/download/sync_ltp_20220907/ltp-master-20220907.x86_64.rpm
- ltp aarch64: https://github.com/liangxiao1/rpmbuild_specs/releases/download/sync_ltp_20220907/ltp-master-20220907.aarch64.rpm
- blktests x86_64: https://github.com/liangxiao1/rpmbuild_specs/releases/download/sync_20220902/blktests-master-20220902.x86_64.rpm
- blktests aarch64:https://github.com/liangxiao1/rpmbuild_specs/releases/download/sync_20220902/blktests-master-20220902.aarch64.rpm
You are welcome to create pull request or raise issue. New case from real customer senario or rhbz is prefered.
Developing tool VS code is recommended with refnow plugin which ships the newest case doc template.
If adding case, please verify case doc before pushing.
$ os-tests --verifydoc -p <casename>
To dump cases doc to yaml file.
$ os-tests -p <casename> --dumpdoc /tmp/cases.yaml