xref: /minix3/external/bsd/bind/dist/unit/atf-src/atf-run/atf-run.1 (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
1*00b67f09SDavid van Moolenbroek.\"	$NetBSD: atf-run.1,v 1.3 2014/12/10 04:38:03 christos Exp $
2*00b67f09SDavid van Moolenbroek.\"
3*00b67f09SDavid van Moolenbroek.\"
4*00b67f09SDavid van Moolenbroek.\" Automated Testing Framework (atf)
5*00b67f09SDavid van Moolenbroek.\"
6*00b67f09SDavid van Moolenbroek.\" Copyright (c) 2007 The NetBSD Foundation, Inc.
7*00b67f09SDavid van Moolenbroek.\" All rights reserved.
8*00b67f09SDavid van Moolenbroek.\"
9*00b67f09SDavid van Moolenbroek.\" Redistribution and use in source and binary forms, with or without
10*00b67f09SDavid van Moolenbroek.\" modification, are permitted provided that the following conditions
11*00b67f09SDavid van Moolenbroek.\" are met:
12*00b67f09SDavid van Moolenbroek.\" 1. Redistributions of source code must retain the above copyright
13*00b67f09SDavid van Moolenbroek.\"    notice, this list of conditions and the following disclaimer.
14*00b67f09SDavid van Moolenbroek.\" 2. Redistributions in binary form must reproduce the above copyright
15*00b67f09SDavid van Moolenbroek.\"    notice, this list of conditions and the following disclaimer in the
16*00b67f09SDavid van Moolenbroek.\"    documentation and/or other materials provided with the distribution.
17*00b67f09SDavid van Moolenbroek.\"
18*00b67f09SDavid van Moolenbroek.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND
19*00b67f09SDavid van Moolenbroek.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
20*00b67f09SDavid van Moolenbroek.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
21*00b67f09SDavid van Moolenbroek.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22*00b67f09SDavid van Moolenbroek.\" IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY
23*00b67f09SDavid van Moolenbroek.\" DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24*00b67f09SDavid van Moolenbroek.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
25*00b67f09SDavid van Moolenbroek.\" GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26*00b67f09SDavid van Moolenbroek.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
27*00b67f09SDavid van Moolenbroek.\" IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28*00b67f09SDavid van Moolenbroek.\" OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
29*00b67f09SDavid van Moolenbroek.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30*00b67f09SDavid van Moolenbroek.\"
31*00b67f09SDavid van Moolenbroek.Dd November 1, 2010
32*00b67f09SDavid van Moolenbroek.Dt ATF-RUN 1
33*00b67f09SDavid van Moolenbroek.Os
34*00b67f09SDavid van Moolenbroek.Sh NAME
35*00b67f09SDavid van Moolenbroek.Nm atf-run
36*00b67f09SDavid van Moolenbroek.Nd executes a collection of test programs
37*00b67f09SDavid van Moolenbroek.Sh SYNOPSIS
38*00b67f09SDavid van Moolenbroek.Nm
39*00b67f09SDavid van Moolenbroek.Op Fl v Ar var1=value1 Op .. Fl v Ar varN=valueN
40*00b67f09SDavid van Moolenbroek.Op Ar test_program1 Op Ar .. test_programN
41*00b67f09SDavid van Moolenbroek.Nm
42*00b67f09SDavid van Moolenbroek.Fl h
43*00b67f09SDavid van Moolenbroek.Sh DESCRIPTION
44*00b67f09SDavid van Moolenbroek.Nm
45*00b67f09SDavid van Moolenbroekexecutes a collection of test programs or, in other words, a complete
46*00b67f09SDavid van Moolenbroektest suite.
47*00b67f09SDavid van MoolenbroekThe results of each test program are collected by the tool, and are then
48*00b67f09SDavid van Moolenbroekmultiplexed into a single machine-parseable report; see
49*00b67f09SDavid van Moolenbroek.Xr atf-formats 5
50*00b67f09SDavid van Moolenbroekfor more details.
51*00b67f09SDavid van MoolenbroekThis report can later be transformed into many different and saner formats
52*00b67f09SDavid van Moolenbroekusing the
53*00b67f09SDavid van Moolenbroek.Nm atf-report
54*00b67f09SDavid van Moolenbroektool.
55*00b67f09SDavid van Moolenbroek.Pp
56*00b67f09SDavid van MoolenbroekThe list of test programs to execute is read from an
57*00b67f09SDavid van Moolenbroek.Pa Atffile
58*00b67f09SDavid van Moolenbroekpresent in the current directory.
59*00b67f09SDavid van MoolenbroekThis file describes the test suite stored in the directory it lives in,
60*00b67f09SDavid van Moolenbroekwhich aside from the list of test programs also includes meta-data and
61*00b67f09SDavid van Moolenbroekconfiguration variables.
62*00b67f09SDavid van Moolenbroek.Pp
63*00b67f09SDavid van Moolenbroek.Nm
64*00b67f09SDavid van Moolenbroekis also in charge of reading the configuration files that tune the behavior
65*00b67f09SDavid van Moolenbroekof each test program and passing down the necessary variables to them.
66*00b67f09SDavid van MoolenbroekMore details on how this is done are given in the
67*00b67f09SDavid van Moolenbroek.Sx Configuration
68*00b67f09SDavid van Moolenbroeksection.
69*00b67f09SDavid van Moolenbroek.Pp
70*00b67f09SDavid van MoolenbroekIn the first synopsis form,
71*00b67f09SDavid van Moolenbroek.Nm
72*00b67f09SDavid van Moolenbroekparses the
73*00b67f09SDavid van Moolenbroek.Pa Atffile
74*00b67f09SDavid van Moolenbroekin the current directory and runs all the test programs specified in it.
75*00b67f09SDavid van MoolenbroekIf any test program names are given as part of the command line, those are
76*00b67f09SDavid van Moolenbroekthe ones executed instead of the complete list.
77*00b67f09SDavid van Moolenbroek.Pp
78*00b67f09SDavid van MoolenbroekIn the second synopsis form,
79*00b67f09SDavid van Moolenbroek.Nm
80*00b67f09SDavid van Moolenbroekwill print information about all supported options and their purpose.
81*00b67f09SDavid van Moolenbroek.Pp
82*00b67f09SDavid van MoolenbroekThe following options are available:
83*00b67f09SDavid van Moolenbroek.Bl -tag -width XvXvarXvalueXX
84*00b67f09SDavid van Moolenbroek.It Fl h
85*00b67f09SDavid van MoolenbroekShows a short summary of all available options and their purpose.
86*00b67f09SDavid van Moolenbroek.It Fl v Ar var=value
87*00b67f09SDavid van MoolenbroekSets the configuration variable
88*00b67f09SDavid van Moolenbroek.Ar var
89*00b67f09SDavid van Moolenbroekto the given value
90*00b67f09SDavid van Moolenbroek.Ar value .
91*00b67f09SDavid van Moolenbroek.El
92*00b67f09SDavid van Moolenbroek.Ss Configuration
93*00b67f09SDavid van Moolenbroek.Nm
94*00b67f09SDavid van Moolenbroekreads configuration data from multiple places.
95*00b67f09SDavid van MoolenbroekAfter all of these places have been analyzed, a list of variable-value
96*00b67f09SDavid van Moolenbroekpairs are passed to the test programs to be run.
97*00b67f09SDavid van Moolenbroek.Pp
98*00b67f09SDavid van MoolenbroekThe following locations are scanned for configuration data, in order.
99*00b67f09SDavid van MoolenbroekItems down the list override values defined above them:
100*00b67f09SDavid van Moolenbroek.Bl -enum
101*00b67f09SDavid van Moolenbroek.It
102*00b67f09SDavid van MoolenbroekConfiguration variables defined in the
103*00b67f09SDavid van Moolenbroek.Pa Atffile .
104*00b67f09SDavid van Moolenbroek.It
105*00b67f09SDavid van MoolenbroekConfiguration variables defined in the system-wide configuration file
106*00b67f09SDavid van Moolenbroekshared among all test suites.
107*00b67f09SDavid van MoolenbroekThis lives in
108*00b67f09SDavid van Moolenbroek.Pa ${ATF_CONFDIR}/common.conf .
109*00b67f09SDavid van Moolenbroek.It
110*00b67f09SDavid van MoolenbroekConfiguration variables defined in the system-wide test-suite-specific
111*00b67f09SDavid van Moolenbroekconfiguration file.
112*00b67f09SDavid van MoolenbroekThis lives in
113*00b67f09SDavid van Moolenbroek.Pa ${ATF_CONFDIR}/<test-suite>.conf .
114*00b67f09SDavid van Moolenbroek.It
115*00b67f09SDavid van MoolenbroekConfiguration variables defined in the user-specific configuration file
116*00b67f09SDavid van Moolenbroekshared among all test suites.
117*00b67f09SDavid van MoolenbroekThis lives in
118*00b67f09SDavid van Moolenbroek.Pa ${HOME}/.atf/common.conf .
119*00b67f09SDavid van Moolenbroek.It
120*00b67f09SDavid van MoolenbroekConfiguration variables defined in the user-specific test-suite-specific
121*00b67f09SDavid van Moolenbroekconfiguration file.
122*00b67f09SDavid van MoolenbroekThis lives in
123*00b67f09SDavid van Moolenbroek.Pa ${HOME}/.atf/<test-suite>.conf .
124*00b67f09SDavid van Moolenbroek.It
125*00b67f09SDavid van MoolenbroekConfiguration variables provided as part of the command line through the
126*00b67f09SDavid van Moolenbroek.Fl v
127*00b67f09SDavid van Moolenbroekoption.
128*00b67f09SDavid van Moolenbroek.El
129*00b67f09SDavid van Moolenbroek.Pp
130*00b67f09SDavid van MoolenbroekThe value of
131*00b67f09SDavid van Moolenbroek.Va ATF_CONFDIR
132*00b67f09SDavid van Moolenbroekin the above list determined as detailed in
133*00b67f09SDavid van Moolenbroek.Xr atf-config 1 .
134*00b67f09SDavid van Moolenbroek.Pp
135*00b67f09SDavid van MoolenbroekThe following configuration variables are globally recognized:
136*00b67f09SDavid van Moolenbroek.Bl -tag -width XunprivilegedXuserXX
137*00b67f09SDavid van Moolenbroek.It Va unprivileged-user
138*00b67f09SDavid van MoolenbroekThe name of the system user that atf-run will drop root privileges into
139*00b67f09SDavid van Moolenbroekfor test cases defining
140*00b67f09SDavid van Moolenbroek.Sq require.user=unprivileged .
141*00b67f09SDavid van MoolenbroekNote that this is
142*00b67f09SDavid van Moolenbroek.Em not provided for security purposes ;
143*00b67f09SDavid van Moolenbroekthis feature is only for the convenience of the user.
144*00b67f09SDavid van Moolenbroek.El
145*00b67f09SDavid van Moolenbroek.Ss Hooks
146*00b67f09SDavid van Moolenbroek.Nm Ns 's
147*00b67f09SDavid van Moolenbroekinternal behavior can be customized by the system administrator and the
148*00b67f09SDavid van Moolenbroekuser by means of hooks.
149*00b67f09SDavid van MoolenbroekThese hooks are written in the shell script language for simplicity and
150*00b67f09SDavid van Moolenbroekare stored in the following files, which are read in the order provided
151*00b67f09SDavid van Moolenbroekbelow:
152*00b67f09SDavid van Moolenbroek.Bl -enum
153*00b67f09SDavid van Moolenbroek.It
154*00b67f09SDavid van Moolenbroek${ATF_CONFDIR}/atf-run.hooks
155*00b67f09SDavid van Moolenbroek.It
156*00b67f09SDavid van Moolenbroek${HOME}/.atf/atf-run.hooks
157*00b67f09SDavid van Moolenbroek.El
158*00b67f09SDavid van Moolenbroek.Pp
159*00b67f09SDavid van MoolenbroekThe following hooks are supported:
160*00b67f09SDavid van Moolenbroek.Bl -tag -width infoXstartXhookXX
161*00b67f09SDavid van Moolenbroek.It info_start_hook
162*00b67f09SDavid van MoolenbroekCalled before
163*00b67f09SDavid van Moolenbroek.Nm
164*00b67f09SDavid van Moolenbroekexecutes any test program.
165*00b67f09SDavid van MoolenbroekThe purpose of this hook is to write additional
166*00b67f09SDavid van Moolenbroek.Sq info
167*00b67f09SDavid van Moolenbroekstanzas to the top of the output report; these are defined by the
168*00b67f09SDavid van Moolenbroek.Sq application/X-atf-tps format
169*00b67f09SDavid van Moolenbroekdescribed in
170*00b67f09SDavid van Moolenbroek.Xr atf-formats 5 .
171*00b67f09SDavid van MoolenbroekAlways use the
172*00b67f09SDavid van Moolenbroek.Sq atf_tps_writer_info
173*00b67f09SDavid van Moolenbroekfunction to print these.
174*00b67f09SDavid van Moolenbroek.Pp
175*00b67f09SDavid van MoolenbroekThis takes no parameters.
176*00b67f09SDavid van Moolenbroek.It info_end_hook
177*00b67f09SDavid van MoolenbroekSimilar to
178*00b67f09SDavid van Moolenbroek.Sq info_start_hook
179*00b67f09SDavid van Moolenbroekbut executed after all test programs have been run so that additional
180*00b67f09SDavid van Moolenbroek.Sq info
181*00b67f09SDavid van Moolenbroekstanzas can be added to the bottom of the output report.
182*00b67f09SDavid van Moolenbroek.Pp
183*00b67f09SDavid van MoolenbroekThis takes no parameters.
184*00b67f09SDavid van Moolenbroek.El
185*00b67f09SDavid van Moolenbroek.Pp
186*00b67f09SDavid van MoolenbroekAll hooks are accompanied by a function named
187*00b67f09SDavid van Moolenbroek.Sq default_<hook_name>
188*00b67f09SDavid van Moolenbroekthat can be executed by them to invoke the default behavior built into
189*00b67f09SDavid van Moolenbroek.Nm .
190*00b67f09SDavid van MoolenbroekFor example, in order to extend the default
191*00b67f09SDavid van Moolenbroek.Sq info_start_hook
192*00b67f09SDavid van Moolenbroekhook, we could write the following function:
193*00b67f09SDavid van Moolenbroek.Bd -literal -offset indent
194*00b67f09SDavid van Moolenbroekinfo_start_hook()
195*00b67f09SDavid van Moolenbroek{
196*00b67f09SDavid van Moolenbroek    default_info_start_hook "${@}"
197*00b67f09SDavid van Moolenbroek
198*00b67f09SDavid van Moolenbroek    atf_tps_writer_info "uptime" "$(uptime)"
199*00b67f09SDavid van Moolenbroek}
200*00b67f09SDavid van Moolenbroek.Ed
201*00b67f09SDavid van Moolenbroek.Sh SEE ALSO
202*00b67f09SDavid van Moolenbroek.Xr atf-report 1 ,
203*00b67f09SDavid van Moolenbroek.Xr atf-test-program 1 ,
204*00b67f09SDavid van Moolenbroek.Xr atf 7
205