xref: /freebsd/share/man/man7/tests.7 (revision e1c6a283f3eaacf77244672cc9a09aab482dfba6)
1f56169f4SRui Paulo.\"	$FreeBSD$
2f56169f4SRui Paulo.\"	$NetBSD: tests.kyua.7,v 1.2 2013/07/20 21:39:59 wiz Exp $
3f56169f4SRui Paulo.\"
4f56169f4SRui Paulo.\" Copyright (c) 2010 The NetBSD Foundation, Inc.
5f56169f4SRui Paulo.\" All rights reserved.
6f56169f4SRui Paulo.\"
7f56169f4SRui Paulo.\" Redistribution and use in source and binary forms, with or without
8f56169f4SRui Paulo.\" modification, are permitted provided that the following conditions
9f56169f4SRui Paulo.\" are met:
10f56169f4SRui Paulo.\" 1. Redistributions of source code must retain the above copyright
11f56169f4SRui Paulo.\"    notice, this list of conditions and the following disclaimer.
12f56169f4SRui Paulo.\" 2. Redistributions in binary form must reproduce the above copyright
13f56169f4SRui Paulo.\"    notice, this list of conditions and the following disclaimer in the
14f56169f4SRui Paulo.\"    documentation and/or other materials provided with the distribution.
15f56169f4SRui Paulo.\"
16f56169f4SRui Paulo.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
17f56169f4SRui Paulo.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18f56169f4SRui Paulo.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19f56169f4SRui Paulo.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20f56169f4SRui Paulo.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
21f56169f4SRui Paulo.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22f56169f4SRui Paulo.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
23f56169f4SRui Paulo.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24f56169f4SRui Paulo.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
25f56169f4SRui Paulo.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26f56169f4SRui Paulo.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27f56169f4SRui Paulo.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28f56169f4SRui Paulo.\"
29*e1c6a283SJulio Merino.Dd April 13, 2014
30f56169f4SRui Paulo.Dt TESTS 7
31f56169f4SRui Paulo.Os
32f56169f4SRui Paulo.Sh NAME
33f56169f4SRui Paulo.Nm tests
34f56169f4SRui Paulo.Nd introduction to the FreeBSD test suite
35f56169f4SRui Paulo.Sh DESCRIPTION
36f56169f4SRui PauloThe
37f56169f4SRui Paulo.Fx
38f56169f4SRui Paulotest suite provides a collection of automated tests for two major purposes.
39b2b6c6a8SAlan SomersOn one hand, the test suite aids
40f56169f4SRui Paulo.Em developers
41b2b6c6a8SAlan Somersto detect bugs and regressions when they modify the source tree.  On the other
42b2b6c6a8SAlan Somershand, it allows
43f56169f4SRui Paulo.Em end users
44f56169f4SRui Paulo(and, in particular, system administrators) to verify that fresh installations
45f56169f4SRui Pauloof the
46f56169f4SRui Paulo.Fx
47b2b6c6a8SAlan Somersoperating system behave correctly on their hardware platform and also to ensure
48b2b6c6a8SAlan Somersthat the system does not suffer from regressions during regular operation and
49b2b6c6a8SAlan Somersmaintenance.
50f56169f4SRui Paulo.Pp
51f56169f4SRui PauloThe
52f56169f4SRui Paulo.Fx
53*e1c6a283SJulio Merinotest suite can be found in the
54f56169f4SRui Paulo.Pa /usr/tests
55f56169f4SRui Paulohierarchy.
56f56169f4SRui Paulo.Pp
57b2b6c6a8SAlan SomersThis manual page describes how to run the test suite and how to configure
58f56169f4SRui Paulosome of its optional features.
59*e1c6a283SJulio Merino.Ss Installing the test suite
60*e1c6a283SJulio MerinoThe test suite is not yet installed by default as part of
61*e1c6a283SJulio Merino.Fx ,
62*e1c6a283SJulio Merinobut this is bound to change during the development of
63*e1c6a283SJulio Merino.Fx 11.0 .
64*e1c6a283SJulio Merino.Pp
65*e1c6a283SJulio MerinoIf the
66*e1c6a283SJulio Merino.Pa /usr/tests
67*e1c6a283SJulio Merinodirectory is missing, then you will have to enable the build of the test
68*e1c6a283SJulio Merinosuite, rebuild your system and install the results.
69*e1c6a283SJulio MerinoYou can do so by setting
70*e1c6a283SJulio Merino.Sq WITH_TESTS=yes
71*e1c6a283SJulio Merinoin your
72*e1c6a283SJulio Merino.Pa /etc/src.conf
73*e1c6a283SJulio Merinofile (see
74*e1c6a283SJulio Merino.Xr src.conf 5
75*e1c6a283SJulio Merinofor details)
76*e1c6a283SJulio Merinoand rebuilding the system as described in
77*e1c6a283SJulio Merino.Xr build 7 .
78f56169f4SRui Paulo.Ss When to run the tests?
79f56169f4SRui PauloBefore diving into the details of how to run the test suite, here are some
80b2b6c6a8SAlan Somersscenarios in which you should run it:
81f56169f4SRui Paulo.Bl -bullet -offset indent
82f56169f4SRui Paulo.It
83f56169f4SRui PauloAfter a fresh installation of
84f56169f4SRui Paulo.Fx
85f56169f4SRui Pauloto ensure that the system works correctly on your hardware platform.
86f56169f4SRui Paulo.It
87f56169f4SRui PauloAfter an upgrade of
88f56169f4SRui Paulo.Fx
89f56169f4SRui Pauloto a different version to ensure that the new code works well on your
90f56169f4SRui Paulohardware platform and that the upgrade did not introduce regressions in your
91f56169f4SRui Pauloconfiguration.
92f56169f4SRui Paulo.It
93b2b6c6a8SAlan SomersAfter modifying the source tree to detect any new bugs and/or regressions.
94f56169f4SRui Paulo.It
95f56169f4SRui PauloPeriodically, maybe from a
96f56169f4SRui Paulo.Xr cron 8
97f56169f4SRui Paulojob, to ensure that any changes to the system (such as the installation of
98f56169f4SRui Paulothird-party packages or manual modifications to configuration files) do not
99f56169f4SRui Paulointroduce unexpected failures.
100f56169f4SRui Paulo.El
101f56169f4SRui Paulo.Ss Running the tests
102b2b6c6a8SAlan SomersFirst, you will need to install the
103b2b6c6a8SAlan Somers.Sq devel/kyua
104b2b6c6a8SAlan Somerspackage from
105b2b6c6a8SAlan Somers.Xr ports 7 .
106b2b6c6a8SAlan SomersThen use the following command to run the whole test suite:
107f56169f4SRui Paulo.Bd -literal -offset indent
108f56169f4SRui Paulo$ kyua test -k /usr/tests/Kyuafile
109f56169f4SRui Paulo.Ed
110f56169f4SRui Paulo.Pp
111b2b6c6a8SAlan SomersThe above will iterate through all test programs in
112f56169f4SRui Paulo.Pa /usr/tests
113b2b6c6a8SAlan Somersrecursively, execute them, store their results and debugging data in Kyua's
114f56169f4SRui Paulodatabase (by default in
115f56169f4SRui Paulo.Pa ~/.kyua/store.db ) ,
116f56169f4SRui Pauloand print a summary of the results.
117f56169f4SRui PauloThis summary includes a brief count of all total tests run and how many of
118f56169f4SRui Paulothem failed.
119f56169f4SRui Paulo.Pp
120f56169f4SRui PauloIt is possible to restrict which tests to run by providing their names in
121f56169f4SRui Paulothe command line.
122f56169f4SRui PauloFor example, this would execute the tests for the
123f56169f4SRui Paulo.Xr cp 1
124f56169f4SRui Pauloand
125f56169f4SRui Paulo.Xr cut 1
126f56169f4SRui Pauloutilities:
127f56169f4SRui Paulo.Bd -literal -offset indent
128f56169f4SRui Paulo$ kyua test -k /usr/tests/Kyuafile bin/cp usr.bin/cut
129f56169f4SRui Paulo.Ed
130f56169f4SRui Paulo.Ss Obtaining reports of the tests execution
131b2b6c6a8SAlan SomersAdditional information about the test results can be retrieved
132b2b6c6a8SAlan Somersby using Kyua's various reporting commands.
133b2b6c6a8SAlan SomersFor example, the following would print a plain-text report of the executed
134f56169f4SRui Paulotests and show which ones failed:
135f56169f4SRui Paulo.Bd -literal -offset indent
136f56169f4SRui Paulo$ kyua report
137f56169f4SRui Paulo.Ed
138f56169f4SRui Paulo.Pp
139b2b6c6a8SAlan SomersThis example would generate an HTML report ready to be published on a
140f56169f4SRui Pauloweb server:
141f56169f4SRui Paulo.Bd -literal -offset indent
142f56169f4SRui Paulo$ kyua report-html --output ~/public_html/tests
143f56169f4SRui Paulo.Ed
144f56169f4SRui Paulo.Pp
145f56169f4SRui PauloFor further details on the command-line interface of Kyua, please refer
146f56169f4SRui Pauloto its manual page
147f56169f4SRui Paulo.Xr kyua 1 .
148b2b6c6a8SAlan Somers.Ss Configuring the tests
149b2b6c6a8SAlan SomersSome test cases in the
150b2b6c6a8SAlan Somers.Fx
151b2b6c6a8SAlan Somerstest suite require manual configuration by the administrator before they can be
152b2b6c6a8SAlan Somersrun.  Unless certain properties are defined, the tests that require them will
153b2b6c6a8SAlan Somersbe skipped.
154b2b6c6a8SAlan Somers.Pp
155b2b6c6a8SAlan SomersTest suites are configured by defining their configuration
156b2b6c6a8SAlan Somersvariables in
157b2b6c6a8SAlan Somers.Pa /usr/local/etc/kyua/kyua.conf .
158b2b6c6a8SAlan SomersThe format of this file is detailed in
159b2b6c6a8SAlan Somers.Xr kyua.conf 5 .
160b2b6c6a8SAlan Somers.Pp
161b2b6c6a8SAlan SomersThe following configuration variables are available in the
162b2b6c6a8SAlan Somers.Fx
163b2b6c6a8SAlan Somerstest suite:
164b2b6c6a8SAlan Somers.Bl -tag -width "allow_sysctl_side_effects"
165b2b6c6a8SAlan Somers.It allow_devfs_side_effects
166b2b6c6a8SAlan SomersIf defined, enables tests that may destroy and recreate semipermanent device
167b2b6c6a8SAlan Somersnodes, like disk devices.  Without this variable, tests may still create and
168b2b6c6a8SAlan Somersdestroy devices nodes that are normally transient, like /dev/tap* and
169b2b6c6a8SAlan Somers/dev/pts*, as long as they clean them up afterwards.  However, tests that
170b2b6c6a8SAlan Somersrequire this variable have a relaxed cleanup requirement; they must recreate
171b2b6c6a8SAlan Somersany devices that they destroyed, but not necessarily with the same devnames.
172b2b6c6a8SAlan Somers.It allow_sysctl_side_effects
173b2b6c6a8SAlan SomersEnables tests that change globally significant
174b2b6c6a8SAlan Somers.Xr sysctl 8
175b2b6c6a8SAlan Somersvariables.  The tests will undo any changes in their cleanup phases.
176b2b6c6a8SAlan Somers.It disks
177b2b6c6a8SAlan SomersMust be set to a space delimited list of disk device nodes.  Tests that need
178b2b6c6a8SAlan Somersdestructive access to disks must use these devices.  Tests are not required to
179b2b6c6a8SAlan Somerspreserve any data present on these disks.
180b2b6c6a8SAlan Somers.It fibs
181b2b6c6a8SAlan SomersMust be set to a space delimited list of FIBs (routing tables).  Tests that
182b2b6c6a8SAlan Somersneed to modify a routing table may use any of these.  Tests will cleanup any
183b2b6c6a8SAlan Somersnew routes that they create.
184b2b6c6a8SAlan Somers.El
185f56169f4SRui Paulo.Ss What to do if something fails?
186f56169f4SRui PauloIf there is
187f56169f4SRui Paulo.Em any failure
188b2b6c6a8SAlan Somersduring the execution of the test suite, please consider reporting it to the
189f56169f4SRui Paulo.Fx
190f56169f4SRui Paulodevelopers so that the failure can be analyzed and fixed.
191f56169f4SRui PauloTo do so, either send a message to the appropriate mailing list or file a
192f56169f4SRui Pauloproblem report.
193f56169f4SRui PauloFor more details please refer to:
194f56169f4SRui Paulo.Bl -bullet -offset indent -compact
195f56169f4SRui Paulo.It
196f56169f4SRui Paulo.Lk http://lists.freebsd.org/ "FreeBSD Mailing Lists"
197f56169f4SRui Paulo.It
198f56169f4SRui Paulo.Lk http://www.freebsd.org/send-pr.html "Submit a FreeBSD Problem Report"
199f56169f4SRui Paulo.El
200f56169f4SRui Paulo.Sh FILES
201f56169f4SRui Paulo.Bl -tag -compact -width usrXlocalXetcXkyuaXkyuaXconfXX
202f56169f4SRui Paulo.It Pa /usr/local/etc/kyua/kyua.conf
203f56169f4SRui PauloSystem-wide configuration file for
204f56169f4SRui Paulo.Xr kyua 1 .
205f56169f4SRui Paulo.It Pa ~/.kyua/kyua.conf
206f56169f4SRui PauloUser-specific configuration file for
207f56169f4SRui Paulo.Xr kyua 1 ;
208f56169f4SRui Paulooverrides the system file.
209f56169f4SRui Paulo.It Pa ~/.kyua/store.db
210b2b6c6a8SAlan SomersDefault result database used by Kyua.
211f56169f4SRui Paulo.It Pa /usr/tests/
212f56169f4SRui PauloLocation of the
213f56169f4SRui Paulo.Fx
214f56169f4SRui Paulotest suite.
215f56169f4SRui Paulo.It Pa /usr/tests/Kyuafile
216f56169f4SRui PauloTop-level test suite definition file.
217f56169f4SRui Paulo.El
218f56169f4SRui Paulo.Sh SEE ALSO
219*e1c6a283SJulio Merino.Xr kyua 1 ,
220*e1c6a283SJulio Merino.Xr build 7
221f56169f4SRui Paulo.Sh HISTORY
222b2b6c6a8SAlan SomersThis test suite first appeared in
223f56169f4SRui Paulo.Fx 11.0 .
224f56169f4SRui Paulo.Pp
225f56169f4SRui PauloThe
226f56169f4SRui Paulo.Nm
227f56169f4SRui Paulomanual page first appeared in
228f56169f4SRui Paulo.Nx 6.0
229f56169f4SRui Pauloand was later ported to
230f56169f4SRui Paulo.Fx 11.0 .
231f56169f4SRui Paulo.Sh AUTHORS
232f56169f4SRui Paulo.An Julio Merino Aq Mt jmmv@google.com
233