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>