Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Jan 2014 20:12:30 +0100
From:      Julio Merino <julio@meroh.net>
To:        Alan Somers <asomers@freebsd.org>
Cc:        "freebsd-testing@freebsd.org" <freebsd-testing@freebsd.org>
Subject:   Re: Correct src location for kernel ATF tests
Message-ID:  <7D8E1A11-A946-499A-B568-D77D91B49FA6@meroh.net>
In-Reply-To: <CAOtMX2hM=GKzsC-eGz8qSzH4OHKuNmHk=mNvJ_S8bj6=AfmkCg@mail.gmail.com>
References:  <CAOtMX2hM=GKzsC-eGz8qSzH4OHKuNmHk=mNvJ_S8bj6=AfmkCg@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Jan 13, 2014, at 22:25, Alan Somers <asomers@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.

> 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.

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.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7D8E1A11-A946-499A-B568-D77D91B49FA6>