{"id":18794834,"url":"https://github.com/acerv/kirk","last_synced_at":"2025-04-13T15:33:55.568Z","repository":{"id":168204749,"uuid":"643826819","full_name":"acerv/kirk.old","owner":"acerv","description":"Kirk application aims to merge multiple Linux testing frameworks in one tool","archived":true,"fork":false,"pushed_at":"2025-02-13T13:29:53.000Z","size":506,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-01T09:32:24.692Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/acerv.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}},"created_at":"2023-05-22T08:35:55.000Z","updated_at":"2025-02-14T07:41:47.000Z","dependencies_parsed_at":"2024-03-06T15:45:40.100Z","dependency_job_id":"c07345e6-eb24-4649-a9ea-6cb35d224d0c","html_url":"https://github.com/acerv/kirk.old","commit_stats":null,"previous_names":["acerv/kirk"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Fkirk.old","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Fkirk.old/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Fkirk.old/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/acerv%2Fkirk.old/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/acerv","download_url":"https://codeload.github.com/acerv/kirk.old/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248736432,"owners_count":21153596,"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","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":[],"created_at":"2024-11-07T21:31:15.141Z","updated_at":"2025-04-13T15:33:53.448Z","avatar_url":"https://github.com/acerv.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"What is Kirk?\n=============\n\nKirk application is a fork of [runltp-ng](https://github.com/linux-test-project/runltp-ng)\nand it aims to merge multiple Linux testing frameworks in one tool, providing\nsupport for remote testing via Qemu, SSH, LTX, parallel execution and much more.\n\n    Host information\n\n            System: Linux\n            Node: susy\n            Kernel Release: 5.14.21-150400.24.60-default\n            Kernel Version: #1 SMP PREEMPT_DYNAMIC Wed Apr 12 12:13:32 UTC 2023 (93dbe2e)\n            Machine Architecture: x86_64\n            Processor: x86_64\n\n            Temporary directory: /tmp/kirk.acer/tmpz49sip95\n\n    Connecting to SUT: host\n    Starting suite: math\n    abs01: pass | tainted  (0.001s)\n    atof01: pass | tainted  (0.002s)\n    float_bessel: pass | tainted  (0.673s)\n    float_exp_log: pass | tainted  (0.667s)\n    float_iperb: pass | tainted  (0.252s)\n    float_power: pass | tainted  (0.562s)\n    float_trigo: pass | tainted  (0.646s)\n    fptest01: pass | tainted  (0.002s)\n    fptest02: pass | tainted  (0.003s)\n    nextafter01: pass | tainted  (0.002s)\n\n    Suite Name: math\n    Total Run: 10\n    Elapsed Time: 3.039s\n    Passed Tests: 22\n    Failed Tests: 0\n    Skipped Tests: 0\n    Broken Tests: 0\n    Warnings: 0\n    Kernel Version: Linux 5.14.21-150400.24.60-default #1 SMP PREEMPT_DYNAMIC Wed Apr 12 12:13:32 UTC 2023 (93dbe2e)\n    CPU: x86_64\n    Machine Architecture: x86_64\n    RAM: 15569424 kB\n    Swap memory: 2095424 kB\n    Distro: opensuse-leap\n    Distro Version: 15.4\n\n\n    Disconnecting from SUT: host\n\n\nQuickstart\n==========\n\nThe tool works out of the box by running `kirk` script.\nMinimum python requirement is 3.6+ and *optional* dependences are the following:\n\n- [asyncssh](https://pypi.org/project/asyncssh/) for SSH support\n- [msgpack](https://pypi.org/project/msgpack/) for LTX support\n\n`kirk` will detect if dependences are installed and activate the corresponding\nsupport. If no dependences are provided by the OS's package manager,\n`virtualenv` can be used to install them:\n\n    # download source code\n    git clone git@github.com:acerv/kirk.git\n    cd kirk\n\n    # create your virtual environment (python-3.6+)\n    virtualenv .venv\n\n    # activate virtualenv\n    source .venv/bin/activate\n\n    # SSH support\n    pip install asyncssh\n\n    # LTX support\n    pip install msgpack\n\n    # run kirk\n    ./kirk --help\n\nSome basic commands are the following:\n\n    # run LTP syscalls testing suite on host\n    ./kirk --framework ltp --run-suite syscalls\n\n    # run LTP syscalls testing suite on qemu VM\n    ./kirk --framework ltp \\\n        --sut qemu:image=folder/image.qcow2:user=root:password=root \\\n        --run-suite syscalls\n\n    # run LTP syscalls testing suite via SSH\n    ./kirk --framework ltp \\\n        --sut=ssh:host myhost.com:user=root:key_file=myhost_id_rsa \\\n        --run-suite syscalls\n\n    # run LTP syscalls testing suite in parallel on host using 16 workers\n    ./kirk --framework ltp --run-suite syscalls --workers 16\n\n    # run LTP syscalls testing suite in parallel via SSH using 16 workers\n    ./kirk --framework ltp \\\n        --sut=ssh:host myhost.com:user=root:key_file=myhost_id_rsa \\\n        --run-suite syscalls --workers 16\n\nIt's possible to run a single command before running testing suites using\n`--run-command` option as following:\n\n    ./kirk --framework ltp \\\n        --run-command /mnt/setup.sh \\\n        --sut qemu:image=folder/image.qcow2:virtfs=/home/user/tests:user=root:password=root \\\n        --run-suite syscalls\n\nEvery session has a temporary directory that can be found in\n`/\u003cTMPDIR\u003e/kirk.\u003cusername\u003e`. Inside this folder there's a symlink\ncalled `latest`, pointing to the latest session's temporary directory.\n\nIn certain cases, `kirk` sessions can be restored. This can be really helpful\nwhen we need to restore the last session after a system crash:\n\n    # restore the latest session\n    ./kirk --framework ltp \\\n        --restore /tmp/kirk.\u003cusername\u003e/latest \\\n        --run-suite syscalls\n\nSetting up console for Qemu\n===========================\n\nTo enable console on a tty device for a VM do:\n\n* open `/etc/default/grub`\n* add `console=$tty_name, console=tty0` to `GRUB_CMDLINE_LINUX`\n* run `grub-mkconfig -o /boot/grub/grub.cfg`\n\nWhere `$tty_name` should be `ttyS0`, unless virtio serial type is used (i.e.\nif you set the `serial=virtio` backend option, then use `hvc0`)\n\nImplementing SUT\n================\n\nSometimes we need to cover complex testing scenarios, where the SUT uses\nparticular protocols and infrastructures, in order to communicate with our\nhost machine and to execute tests binaries.\n\nFor this reason, `kirk` provides a plugin system to recognize custom SUT\nclass implementations inside the `libkirk` folder. Please check `host.py`\nor `ssh.py` implementations for more details.\n\nOnce a new SUT class is implemented and placed inside the `libkirk` folder,\n`kirk -s help` command can be used to see if application correctly\nrecognise it.\n\nImplementing Framework\n======================\n\nEvery testing framework has it's own setup, defining tests folders, data and\nvariables. For this reason, `Framework` class provides a generic API that, once\nimplemented, permits to define a specific testing framework. The class \nimplementation must be included inside the `libkirk` folder and it will be\nused as an abstraction layer between `kirk` scheduler and the specific testing\nframework.\n\nDevelopment\n===========\n\nThe application is validated using `pytest` and `pylint`.\nTo run unittests:\n\n    pytest\n\nTo run linting checks:\n\n    pylint --rcfile=pylint.ini ./libkirk\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facerv%2Fkirk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facerv%2Fkirk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facerv%2Fkirk/lists"}