{"id":34073167,"url":"https://github.com/virt-s1/os-tests","last_synced_at":"2025-12-14T08:41:50.563Z","repository":{"id":37100310,"uuid":"290446899","full_name":"virt-s1/os-tests","owner":"virt-s1","description":"os-tests is a lightweight, fast and customer centric tests collection for Linux OS.","archived":false,"fork":false,"pushed_at":"2025-12-07T13:15:48.000Z","size":459176,"stargazers_count":12,"open_issues_count":1,"forks_count":22,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-12-08T17:31:07.955Z","etag":null,"topics":["alicloud","amazon","aws","azure","centos","cloud","ec2","gcp","kernel","libvirt","linux","ltp","nutanix","openstack","quality-assurance","rhel","test-automation"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/virt-s1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-08-26T08:58:38.000Z","updated_at":"2025-12-07T13:15:52.000Z","dependencies_parsed_at":"2023-09-26T09:26:00.446Z","dependency_job_id":"63877bab-c84f-4594-bcf4-c39e11717e31","html_url":"https://github.com/virt-s1/os-tests","commit_stats":{"total_commits":606,"total_committers":29,"mean_commits":"20.896551724137932","dds":0.533003300330033,"last_synced_commit":"d9c76db1a453bfab210a2972b110f3672cd86851"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"purl":"pkg:github/virt-s1/os-tests","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virt-s1%2Fos-tests","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virt-s1%2Fos-tests/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virt-s1%2Fos-tests/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virt-s1%2Fos-tests/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/virt-s1","download_url":"https://codeload.github.com/virt-s1/os-tests/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virt-s1%2Fos-tests/sbom","scorecard":{"id":923193,"data":{"date":"2025-08-11","repo":{"name":"github.com/virt-s1/os-tests","commit":"918e25db48af92ab01bb1e8fb0e61bfb9bc0a4a5"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 2 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build_publish.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":1,"reason":"Found 2/16 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Binary-Artifacts","score":6,"reason":"binaries present in source code","details":["Warn: binary detected: os_tests/utils/blktests-master.aarch64.rpm:1","Warn: binary detected: os_tests/utils/blktests-master.x86_64.rpm:1","Warn: binary detected: os_tests/utils/ltp-master.aarch64.rpm:1","Warn: binary detected: os_tests/utils/ltp-master.x86_64.rpm:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_publish.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/virt-s1/os-tests/build_publish.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build_publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/virt-s1/os-tests/build_publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_publish.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/virt-s1/os-tests/build_publish.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build_publish.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/virt-s1/os-tests/build_publish.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build_publish.yml:18","Warn: pipCommand not pinned by hash: .github/workflows/build_publish.yml:21","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   1 out of   3 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/build_publish.yml:7"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-25T06:43:32.776Z","repository_id":37100310,"created_at":"2025-08-25T06:43:32.776Z","updated_at":"2025-08-25T06:43:32.776Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27723509,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-14T02:00:11.348Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alicloud","amazon","aws","azure","centos","cloud","ec2","gcp","kernel","libvirt","linux","ltp","nutanix","openstack","quality-assurance","rhel","test-automation"],"created_at":"2025-12-14T08:41:49.945Z","updated_at":"2025-12-14T08:41:50.549Z","avatar_url":"https://github.com/virt-s1.png","language":"Python","readme":"# os-tests\n\n## Introduction\n\nos-tests is a lightweight, portable and customer focused test collection for Linux OS.\n\n## Installation\n\n### Install from pypi\n\n`# pip install os-tests`\n\nNote: please install [paramiko](https://pypi.org/project/paramiko/) if run os-tests in server-client mode.\n\nThere is a known pynacl issue while installing paramiko on RHEL-8.6. Please install earlier pynacl version (1.4.0) instead.\n\n### Install from the source code repo directly\n\n```bash\n# pip install git+https://github.com/virt-s1/os-tests.git@master\n```\n\n### Build wheel locally and install it\n\n```bash\n# git clone https://github.com/virt-s1/os-tests.git\n# cd os-tests\n# python -m venv venv \u0026\u0026 source venv/bin/activate\n# pip3 install --upgrade setuptools\n# pip3 install build installer\n# python -m build\n# python -m installer dist/*.whl\n```\n\nnote: the default bin path is \"/usr/local/bin\" if not in virtual environment.\n\n### Public new wheels on [pypi](https://pypi.org/project/os-tests/) (maintainer use only)\n\n`# python3 -m twine upload  dist/*`\n\n## Run test\n\n### os-tests supports 3 working modes\n\n#### Mode 1 - run on single node\n\nInstall 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.  \n`# os-tests`  \n\n#### Mode 2 - run on existing systems remotely\n\n 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.  \n`# os-tests --host \u003cremote_node\u003e --user \u003cremote_user\u003e --keyfile \u003cremote_keyfile\u003e --result \u003cresult_dir\u003e -p \u003ccases\u003e`\n\n#### Mode 3 - os-tests provision test system by itself  \n\nRequire cloud/platform account to provision remote system self, can do full test with control of instance. Eg. device hotplug, snapshot creation, send nmi events......  \nNote: 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.  \n`# os-tests -p cloudinit --user ec2-user --keyfile /home/virtqe_s1.pem --platform_profile aws_env.yaml`\n\n### More options - [advanced tips](https://github.com/virt-s1/os-tests/blob/master/os_tests/docs/os-tests_advanced_tips.md)\n\n#### List all supported cases only without run\n\n`# os-tests -l`\n\n#### Filter case name with keywords ltp and virtwhat\n\n`# os-tests -l -p ltp,virtwhat`\n\n#### Filter case name with keywords ltp and skip test_ltp_ipsec_icmp\n\n`# os-tests -l -p ltp -s test_ltp_ipsec_icmp`\n\n### Run all cases in one file\n\n`# os-tests -p test_general_check`  \n\n#### Run a single case in one file\n\n`# os-tests -p test_change_clocksource`  \n\n### All installed files and dirs\n\nYou can list all installed files via `pip show -f os-tests` simply.  \n\n```bash\nos_tests\n├── cfg       -\u003econfigration files\n├── data      -\u003edata files for log checking\n├── libs      -\u003elibs including resource(vm, disk, network)/func definenation\n├── templates -\u003etemplate for generating html,xml report\n├── tests     -\u003eall tests files location\n└── utils     -\u003e3rd party utils, ltp, blktests and others\n```\n\n### Recommended pkgs in test system  \n\nos-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.\nList RHEL only because CentOS Stream and Fedora usually have public repo available.\n\n**RHEL-9/10**: make automake autoconf sysstat gcc unzip wget quota bzip2 iperf3 pciutils fio psmisc expect perf libaio-devel blktrace 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 net-tools tpm2-abrmd tpm2-tools clevis socat acpica-tools\n\n**RHEL-8**: make automake autoconf sysstat gcc unzip wget quota bzip2 iperf3 fio psmisc expect perf nvme-cli pciutils php-cli php-xml php-json libaio-devel blktrace 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 net-tools acpica-tools\n\n**RHEL-7**: install automake autoconf sysstat gcc unzip wget quota bzip2 iperf3 pciutils fio psmisc expect ntpdate perf nvme-cli git tar nfs-utils libvirt qemu-kvm kernel-debug python3 dracut-fips podman strace sos\n\n### The log file\n\nThe suite saves the summary to sum.html and sum.log under \"/tmp/os_tests_result/\" by default.\nThe test debug log files are saved in \"/tmp/os_tests_result/attachments\" following case name.\nYou can change \"results_dir\" in \"cfg/os-tests.yaml\" to save log to other place or pass as command option.\n\nBelow is an example:\n\n```bash\n#  os-tests -p test_change_clocksource\nRun in mode: is_listcase:False pattern: test_change_clocksource\ntest_change_clocksource (os_tests.tests.test_general_test.TestGeneralTest) ... ok\n----------------------------------------------------------------------\nsummary in html: /tmp/os_tests_result/sum.html\nsummary in text: /tmp/os_tests_result/sum.log\n----------------------------------------------------------------------\nRan 1 test in 0.383s\n\nOK\n\n# ls -l /tmp/os_tests_result/debug/\ntotal 8\n-rw-r--r--. 1 root root 5472 Mar 30 16:44 os_tests.tests.test_general_test.TestGeneralTest.test_change_clocksource.debug\n```\n\n### Recommend test matrix to catch potential issues\n\n- run in normal kernel, it is the most used scenario\n- run in debug kernel with 'kmemleak=on'([docs](https://github.com/virt-s1/os-tests/blob/master/os_tests/docs/os-tests_advanced_tips.md))\n- run in fips enabled kernel ([docs](https://github.com/virt-s1/os-tests/blob/master/os_tests/docs/os-tests_advanced_tips.md))\n- run in remote-client mode to cover lifecycle cases\n\n### Third-party utils  \n\nPre-compiled tools are shipped under 'utils' directory with os-tests because not all systems can reach github.\n- ltp x86_64: https://github.com/liangxiao1/rpmbuild_specs/releases/latest/download/ltp-master.x86_64.rpm\n- ltp aarch64: https://github.com/liangxiao1/rpmbuild_specs/releases/latest/download/ltp-master.aarch64.rpm\n- blktests x86_64: https://github.com/liangxiao1/rpmbuild_specs/releases/latest/download/blktests-master.x86_64.rpm\n- blktests aarch64:https://github.com/liangxiao1/rpmbuild_specs/releases/latest/download/blktests-master.aarch64.rpm\n\n### Contribution\n\nYou are welcome to create pull request or raise issue. New case from real customer scenario or rhbz is preferred.  \nDeveloping tool VS code is recommended with [refnow](https://marketplace.visualstudio.com/items?itemName=FrankLiang.refnow) plugin which ships the newest case doc template.\n\nIf adding case, please verify case doc before pushing.\n```bash\n$ os-tests --verifydoc -p \u003ccasename\u003e\n```\nTo dump cases doc to yaml file.\n```bash\n$ os-tests  -p \u003ccasename\u003e --dumpdoc /tmp/cases.yaml\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirt-s1%2Fos-tests","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvirt-s1%2Fos-tests","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirt-s1%2Fos-tests/lists"}