Correct src location for kernel ATF tests

Alan Somers asomers at freebsd.org
Tue Jan 14 19:22:51 UTC 2014


On Tue, Jan 14, 2014 at 12:12 PM, Julio Merino <julio at meroh.net> wrote:
> On Jan 13, 2014, at 22:25, Alan Somers <asomers at freebsd.org> wrote:
>
>> Where is the correct location within the source tree for ATF tests
>> that exercise kernel features?  For example, I'm currently trying to
>> ATFify tools/regression/sockets/unix_seqpacket_exercise,
>
> I think it's good practice to _not_ ATFify an existing test at the same time as it's moved.
>
> I feel it's better to first move the test program "as is" into its new location, ensure it works, and only then change it to use the ATF libraries.  If done properly (e.g. by maintaining the same binary name pre/post conversion), this should cause minimum churn and will allow for easier tracking of code changes in the VCS history.

In this case, the test doesn't work to begin with.  I'm rewriting
almost from scratch.  But I'll follow your suggestion when I commit to
HEAD.  I'll move first, then immediately edit to change the contents.

>
>> but I'm not sure where to put it.
>
> Ideally tests should live next to the code they exercise, just as we are doing for user-space applications.  This means that, at the very minimum, they should be somewhere within src/sys/.
>
> Now that's tricky of course.  Some thoughts that cross my mind:
>
> First, I'm not sure about what the implications of putting "user-level" code in src/sys/ are regarding the build infrastructure.  I suspect that by restricting the test code into 'tests' subdirectories and only recursing into them with the MK_TESTS knob is good enough, but I don't know for sure at the moment.
>
> Second, possibly trickier, is that any kernel tests that currently exist are integration tests by design: we have no unit-testing framework for the kernel (such as what rump provides for NetBSD), and as such any test will be quite "broad" in scope.  This may make it difficult to pinpoint the specific subdirectory in which the test belongs.  For your case above, I cannot tell if any of the src/sys/net*/ subdirectories are relevant and/or specific enough.  If they are, then I'd say put the test in one of them using src/sys/netgraph/tests/unix_seqpacket_exercise to pick an example at random.

Sounds good, but the most relevant directory is actually
src/sys/kern/, not src/sys/netgraph.

>
> Lastly, we may need a src/sys/tests/ directory to implement cross-functional tests that don't fit any specific directory, just like we have src/tests/ for that purpose.  Or maybe we can (ab)use the latter instead.

We definitely will need some sort of location for cross-functional
tests.  For example, the STF ZFS tests touch just about everything
related to ZFS.  But that's a problem for another day.

-Alan


More information about the freebsd-testing mailing list