On Fri, Jun 04, 2021 at 09:52:52AM -0500, Praveen K Paladugu wrote: > Erik, > > Thanks for this detailed response. It answers many questions we had about CI > for libvirt. > > > On 6/2/2021 3:32 AM, Erik Skultety wrote: > > On Thu, May 27, 2021 at 11:17:04AM -0500, Praveen K Paladugu wrote: > > > Hi, > > > > > > While developing cloud-hypervisor driver for libvirt, we re-fitted > > > cloud-hypervisor project's CI to libvirt. This CI was built on Rust and > > > currently supports VM boot up tests. > > > > > > https://github.com/cloud-hypervisor/libvirt/tree/ch/ch_integration_tests > > > > Hi, > > so excited to hear about ^this effort - I haven't gone over the code base yet, > > but nevertheless having something set up already at your side is awesome. > > > > > > > > We are working on extending this CI to incorporate more functional tests: > > > Networking, Thread Pinning etc. We are curious to know if libvirt project > > > has any plans to setup a CI to run functional tests. > > > > > > I noticed https://gitlab.com/libvirt/libvirt-ci effort which focuses on > > > running builds against various platforms and formats. Could you please > > > clarify libvirt project's plan for setting up a CI to run functional tests. > > > > > > > Yes, we do have plans. As you've already correctly noted, currently we only > > have automated builds running in GitLab the configuration of which comes and is > > maintained by the libvirt-ci project. As for the functional tests though, we're > > currently fighting on 3 fronts: > > - infrastructure > > - automation machinery > > - testing framework > > > > Without going in too much detail we're working on improving libvirt-ci project > > in a way that would allow to make libvirt CI configurable for any interested > > party, IOW we'd set a standard on what the machines should look like and how > > libvirt expects to interact with them \wrt executing tests on them, but what > > tests you run on them is up to you as long as you report them back to the > > upstream libvirt pipeline (most likely gitlab). > > > > To go to a little more detail: > > > > Infrastructure > > -------------- > > - we're planning on running the workloads in nested KVM VMs, because it's much > > easier to set up in an automated fashion, is suitable to be run on local > > developer's machines and can be thrown away afterwards > > > > - machines will be connected to gitlab with the gitlab-runner agent > > (provided we don't decide to move to a different platform which is not likely > > even with the restriction on using public runners with the free tier) > > > > Automation > > ---------- > > - this will be handled by libvirt-ci (lcitool) which already has support for > > both container and VM workloads, we just have to shape it so that it can do > > what we want in terms of functional tests in VM workloads > > > > Test framework > > -------------- > > - there already are 2 frameworks: Avocado-VT and libvirt TCK none of which > > ultimately will be used, because they're not particulary libvirt developer > > friendly for various reasons (not the point of this email) > > > > - we're experimenting with using the plain Avocado framework integration just > > like QEMU has already done upstream (so we'd like to stay in aligned with QEMU) > > > > - the main arguments for selecting the Avocado framework are (there a few more): > > -> the native language of Avocado is Python which we already decided in > > upstream libvirt to be the dominant, modern and preferred scripting > > language of many users/contributors > > > > -> Avocado is truly language agnostic as far as tests go, so if you're > > bringing an existing test suite in a different language like e.g. Bash, > > that is fine Avocado can detect and execute external tests as well > > > > -> Avocado supports many of the new test result formats out there along > > with the simple and older TAP format, so it can satisfy various needs > > > > -> Avocado supports parallel test executions > > > > - as for what the initial deployment will utilize, it's impossible to think > > that we're going to port all of Avocado-VTs 17k test case (hell no!), so we'd > > start with the older test set coming from libvirt TCK which has proven to > > What do you mean by "older test set" here? Could you please point me to some > links/docs related to this test set? Hi Praveen, so, documentation in libvirt-derived projects is kinda "problematic" (read "basically non-existent") and so the best I can do is to share the link to the repo: https://gitlab.com/libvirt/libvirt-tck/ (this is the old perl-based framework, but FWIW it supports arbitrary languages) As for Avocado-VT: https://github.com/avocado-framework/avocado-vt (framework) https://github.com/autotest/tp-libvirt (17k test cases for avocado-vt) > > If this test set has sufficient coverage for our usecase, we will consider > pivoting to avocado suite for future test cases. > > > catch serious bugs, but new tests would be written solely in Python and > > very very slowly we'd migrate the TCK test cases from Perl to Python and host > > all of it as part of the main libvirt repo > > > > I hope that ^this gist would be enough of an answer to you :). Stay tuned for > > next plans on the CI front. > > > > Regards, > > Erik > > > > Lastly, where can we follow the adoption of Avocado Framework? Will this > start in libvirt-ci repository? This will be proposed as an RFC to libvir-list. We intend to make it part of the main libvirt repo - there are a couple of reasons to do it, but the main one is to remain aligned with QEMU with our efforts. Regards, Erik