Date: Thu, 26 Jun 2014 17:00:10 -0700 From: Garrett Cooper <yaneurabeya@gmail.com> To: Alan Somers <asomers@freebsd.org> Cc: "freebsd-testing@freebsd.org" <freebsd-testing@freebsd.org> Subject: Re: How do I extend Kyua requirements checking for FreeBSD? Message-ID: <CAGHfRMC1GsPMg4_guw77C4u3%2BqRNiP87ajpr5Ugr%2BSt93cpnmg@mail.gmail.com> In-Reply-To: <CAGHfRMC_JmA8R3JfYHotsu_TvayvMahuQar%2BY29Q9zLgbPrC3g@mail.gmail.com> References: <CAGHfRMAURGkTRv29Kgd4YF%2B4VQ12_9GkOf=uCQ0BAcBLJcWXZQ@mail.gmail.com> <CAOtMX2i2dT1HR_mO-Qm6VkeJbYRDfWbQ3SOW%2B-K3uXTYLtau2Q@mail.gmail.com> <CAGHfRMC_JmA8R3JfYHotsu_TvayvMahuQar%2BY29Q9zLgbPrC3g@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jun 26, 2014 at 12:54 PM, Garrett Cooper <yaneurabeya@gmail.com> wrote: > On Thu, Jun 26, 2014 at 12:39 PM, Alan Somers <asomers@freebsd.org> wrote: >> On Thu, Jun 26, 2014 at 1:05 PM, Garrett Cooper <yaneurabeya@gmail.com> wrote: >>> Hello Julio! >>> I'm looking at extending Kyua to create special FreeBSD-specific >>> functionality, and I'm wondering how I should do it. In particular >>> there are a couple items that could be checked as prerequisite >>> requirements before running tests to avoid running tests: >>> 1. Is a service running? >>> 2. Is a driver loaded? >>> 3. Is a driver loaded as a kernel module or is it statically >>> compiled in to the kernel? >>> 4. Am I running on a particular filesystem? >>> Etc. >>> If I was to add these "requirements functions" to kyua, how would >>> I query the values in an interface agnostic way? I would usually set >>> environment variables, but this makes things potentially messier >>> (especially in C/C++ unless I create a standalone library to handle >>> this)/harder to grep for than having a command which fetches this >>> information, like atf-config does for the ATF tester interface. >>> Thank you! >>> -Garrett >> >> I did it just be creating a library of shell functions that I call >> from test bodies. For example, something like this >> function require_module() { >> kldstat $1 || atf_skip "Module $1 is not loaded" >> } > > This is sort of what I'm doing, but this only works for the ATF test > interface :/. I used kldstat -m $1 by the way for detecting statically > compiled kernel modules, like aio: > > # kldstat -q -m ada && echo ada is loaded > ada is loaded > # kldstat -q -m foobar && echo foobar is loaded > # > > It's significantly trickier with drivers that don't have moduledata_t > which matches the kernel module that's loaded, e.g. if_em: > > # kldstat -m pci/em > Id Refs Name > 117 1 pci/em > # ifconfig em0 > em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 > options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM> > ether 00:0c:29:a3:e9:9c > inet 10.7.216.233 netmask 0xfffffe00 broadcast 10.7.217.255 > nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL> > media: Ethernet autoselect (1000baseT <full-duplex>) > status: active > # kldload if_em > kldload: can't load if_em: module already loaded or in kernel > >> But that's not useful for C and C++ tests. And it would be way cooler >> if it were more tightly integrated into Kyua. Would it be possible to >> load site-specific Lua code that would handle this sort of >> functionality, so the test could simply say "atf_set require.modules >> aio"? > > Exactly! > > I'm going to write the C/shell libraries for ATF at least, add some > testcases, then we can look at making them generic via Kyuafile/the > testcase header/etc. I'm started work on it on github: https://github.com/yaneurabeya/freebsd_atf_kyua_test_extensions . Any review would be much appreciated! Testcases coming soon of course. Thanks! -Garrett
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGHfRMC1GsPMg4_guw77C4u3%2BqRNiP87ajpr5Ugr%2BSt93cpnmg>