Giter Site home page Giter Site logo

virt-s1 / os-tests Goto Github PK

View Code? Open in Web Editor NEW
10.0 4.0 17.0 228.99 MB

os-tests is a lightweight, fast and customer centric tests collection for Linux OS.

License: Apache License 2.0

Python 98.62% HTML 0.21% C 0.17% Shell 0.88% templ 0.11%
alicloud cloud gcp libvirt linux nutanix openstack amazon aws ec2 test-automation quality-assurance centos rhel kernel ltp azure

os-tests's Introduction

os-tests

Introduction

os-tests is a lightweight, portable and customer focused test collection for Linux OS.

Installation

Install from pypi

# pip install os-tests

Note: please install paramiko if run os-tests in server-client mode.

There is a known pynacl issue while installing paramiko on RHEL-8.6. Please install earlier pynacl version (1.4.0) instead.

Install from the source code repo directly

# pip install git+https://github.com/virt-s1/os-tests.git@master

Build wheel locally and install it

# 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/*

Run test

os-tests supports 3 working modes

Mode 1 - run on single node

Install and run tests inside the RHEL system directly, fewer cases than Mode 2 and 3, lacking the tests requiring reboot system and instance control access.
# os-tests

Mode 2 - run on existing systems remotely

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 require instance access.
# os-tests --host <remote_node> --user <remote_user> --keyfile <remote_keyfile> --result <result_dir> -p <cases>

Mode 3 - os-tests provision test system by itself

Require cloud/platform account to provision remote system self, can do full test with control of instance. Eg. device hotplug, snapshot creation, send nmi events......
Note: supports alicloud, aws, azure, gcp, openstack, libvirt, nutanix, openshift, openstack for now. Other platforms are in todo list. The config template is under cfg dir.
# os-tests -p cloudinit --user ec2-user --keyfile /home/virtqe_s1.pem --platform_profile aws_env.yaml

More options - advanced tips

List all supported cases only without run

# os-tests -l

Filter case name with keywords ltp and virtwhat

# os-tests -l -p ltp,virtwhat

Filter case name with keywords ltp and skip test_ltp_ipsec_icmp

# os-tests -l -p ltp -s test_ltp_ipsec_icmp

Run all cases in one file

# os-tests -p test_general_check

Run a single case in one file

# os-tests -p test_change_clocksource

All installed files and dirs

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

Recommended pkgs in test system

os-tests will try to install required pkgs from default repo during run, but it would be better to have them if no repo is provided. List RHEL only because CentOS Stream and Fedora usually have public repo available.

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,kernel-modules-extra,iproute-tc,wireshark-cli,tcpdump,nmap-ncat

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,kernel-modules-extra,iproute-tc,wireshark-cli,tcpdump,nmap-ncat

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

The log file

The suite saves the 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. You can change "results_dir" in "cfg/os-tests.yaml" to save log to other place or pass 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

Recommend test matrix to catch potential issues

  • run in normal kernel, it is the most used scenario
  • run in debug kernel with 'kmemleak=on'(docs)
  • run in fips enabled kernel (docs)
  • run in remote-client mode to cover lifecycle cases

Third-party utils

Pre-compiled tools are shipped under 'utils' directory with os-tests because not all systems can reach github.

Contribution

You are welcome to create pull request or raise issue. New case from real customer scenario or rhbz is preferred.
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

os-tests's People

Contributors

1982606762 avatar liangxiao1 avatar libhe avatar linl-rh avatar ming1013 avatar rh-gvincent avatar shangsy1 avatar shi2wei3 avatar xiachen-rh avatar xxiong2021 avatar yoguo avatar yuxisun1217 avatar zhaohuijuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

os-tests's Issues

Setting default profile name for boto3 prevents using IAM credentials

Within the resources_aws.py, there are several classes that set the self.profile_name as 'default' if one is not detected within the passed parameters. Since boto3 automatically has fallback methods to detect various authentication methods, forcing the session to use "default" will prevent boto3 from attempting to fallback on other auth methods like IAM credentials. Since profile_name is not a required parameter for boto3 this can be avoided by doing something like:

        if self.profile_name is None:
            self.session = boto3.session.Session(region_name=params.get("region"))
        else:
            self.session = boto3.session.Session(
                profile_name=self.profile_name, region_name=params.get("region")
            )

check_log should report the error output to xml result

In order to analyze the root cause of a test case through xml report, the message lines should be shown, so that it would be easy to identify the issue and also able to feed the train set of ML with essential data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.