
On Fri, 2018-04-27 at 16:35 +0100, Daniel P. Berrangé wrote:
On Fri, Apr 27, 2018 at 05:21:21PM +0200, Andrea Bolognani wrote:
When hostdevs are involved, libvirt needs to poke into sysfs to collect some information about them; since that pseudo-filesystem doesn't exist on platforms other than Linux, the corresponding tests would fail and need to be compiled out.
Our test suite isn't supposed to touch /sysfs from the real host at all. Sounds like we either need to mock out the function that's doing that, or provide some fake sysfs data in a tests/ subdirectory to run against with a mock'd open() call. That would make it work even on non-Linux I hope.
Sorry, I should have provided some more context, but I was in a bit of a hurry on Friday when I sent this. We are already mocking (parts of) sysfs through virpcimock, but the contents of that file are compiled out on non-Linux; after removing the #ifdefs, it's fairly easy to solve most of the build issues on FreeBSD (draft patch attached), but there's one I couldn't quite get rid of. Mocking canonicalize_file_name() causes a linking error: ../gnulib/lib/.libs/libgnu.a(canonicalize-lgpl.o): In function `canonicalize_file_name': .../libvirt/gnulib/lib/canonicalize-lgpl.c:417: multiple definition of `canonicalize_file_name' .libs/virpcimock.o:.../libvirt/tests/virpcimock.c:983: first defined here This is not a problem on Linux, where canonicalize_file_name() is provided by libc, but FreeBSD is using the gnulib implementation instead, leading to the issue above. Can you think of a way to make linking of virpcimock work despite the above? That should get us to the point where at least qemumemlocktest and qemuxml2xmltest are working; qemuxml2argvtest will probably need more mocking because of NUMA information. -- Andrea Bolognani / Red Hat / Virtualization