xref: /freebsd/sys/contrib/openzfs/man/man1/test-runner.1 (revision 61145dc2b94f12f6a47344fb9aac702321880e43)
1*61145dc2SMartin Matuska.\" SPDX-License-Identifier: CDDL-1.0
2716fd348SMartin Matuska.\"
3716fd348SMartin Matuska.\" This file and its contents are supplied under the terms of the
4716fd348SMartin Matuska.\" Common Development and Distribution License ("CDDL"), version 1.0.
5716fd348SMartin Matuska.\" You may only use this file in accordance with the terms of version
6716fd348SMartin Matuska.\" 1.0 of the CDDL.
7716fd348SMartin Matuska.\"
8716fd348SMartin Matuska.\" A full copy of the text of the CDDL should have accompanied this
9716fd348SMartin Matuska.\" source.  A copy of the CDDL is also available via the Internet at
10716fd348SMartin Matuska.\" http://www.illumos.org/license/CDDL.
11716fd348SMartin Matuska.\"
12716fd348SMartin Matuska.\" Copyright (c) 2012 by Delphix. All rights reserved.
13716fd348SMartin Matuska.\"
14716fd348SMartin Matuska.Dd May 26, 2021
15716fd348SMartin Matuska.Dt RUN 1
16716fd348SMartin Matuska.Os
17716fd348SMartin Matuska.
18716fd348SMartin Matuska.Sh NAME
19716fd348SMartin Matuska.Nm run
20716fd348SMartin Matuska.Nd find, execute, and log the results of tests
21716fd348SMartin Matuska.Sh SYNOPSIS
22716fd348SMartin Matuska.Nm
23716fd348SMartin Matuska.Op Fl dgq
24716fd348SMartin Matuska.Op Fl o Ar outputdir
25716fd348SMartin Matuska.Op Fl pP Ar script
26716fd348SMartin Matuska.Op Fl t seconds
27716fd348SMartin Matuska.Op Fl uxX Ar username
28716fd348SMartin Matuska.Ar pathname Ns No …
29716fd348SMartin Matuska.Pp
30716fd348SMartin Matuska.Nm
31716fd348SMartin Matuska.Fl w Ar runfile
32716fd348SMartin Matuska.Op Fl gq
33716fd348SMartin Matuska.Op Fl o Ar outputdir
34716fd348SMartin Matuska.Op Fl pP Ar script
35716fd348SMartin Matuska.Op Fl t seconds
36716fd348SMartin Matuska.Op Fl uxX Ar username
37716fd348SMartin Matuska.Ar pathname Ns No …
38716fd348SMartin Matuska.Pp
39716fd348SMartin Matuska.Nm
40716fd348SMartin Matuska.Fl c Ar runfile
41716fd348SMartin Matuska.Op Fl dq
42716fd348SMartin Matuska.Pp
43716fd348SMartin Matuska.Nm
44716fd348SMartin Matuska.Op Fl h
45716fd348SMartin Matuska.
46716fd348SMartin Matuska.Sh DESCRIPTION
47716fd348SMartin Matuska.Nm
48716fd348SMartin Matuskacommand has three basic modes of operation.
49716fd348SMartin MatuskaWith neither
50716fd348SMartin Matuska.Fl c
51716fd348SMartin Matuskanor
52716fd348SMartin Matuska.Fl w ,
53716fd348SMartin Matuska.Nm
54716fd348SMartin Matuskaprocesses the arguments provided on
55716fd348SMartin Matuskathe command line, adding them to the list for this run.
56716fd348SMartin MatuskaIf a specified
57716fd348SMartin Matuska.Ar pathname
58716fd348SMartin Matuskais an executable file, it is added as a test.
59716fd348SMartin MatuskaIf a specified
60716fd348SMartin Matuska.Ar pathname
61716fd348SMartin Matuskais a directory, the behavior depends upon the presence of
62716fd348SMartin Matuska.Fl g .
63716fd348SMartin MatuskaIf
64716fd348SMartin Matuska.Fl g
65716fd348SMartin Matuskais specified, the directory is treated as a test group.
66716fd348SMartin MatuskaSee the section on
67716fd348SMartin Matuska.Sy Test Groups
68716fd348SMartin Matuskabelow.
69716fd348SMartin MatuskaWithout
70716fd348SMartin Matuska.Fl g ,
71716fd348SMartin Matuska.Nm
72716fd348SMartin Matuskasimply descends into the directory looking for executable files.
73716fd348SMartin MatuskaThe tests are then executed, and the results are logged.
74716fd348SMartin Matuska.Pp
75716fd348SMartin MatuskaWith
76716fd348SMartin Matuska.Fl w ,
77716fd348SMartin Matuska.Nm
78716fd348SMartin Matuskafinds tests in the manner described above.
79716fd348SMartin MatuskaRather than executing the tests and logging the results, the test configuration
80716fd348SMartin Matuskais stored in a
81716fd348SMartin Matuska.Ar runfile ,
82716fd348SMartin Matuskawhich can be used in future invocations, or edited
83716fd348SMartin Matuskato modify which tests are executed and which options are applied.
84716fd348SMartin MatuskaOptions included on the command line with
85716fd348SMartin Matuska.Fl w
86716fd348SMartin Matuskabecome defaults in the
87716fd348SMartin Matuska.Ar runfile .
88716fd348SMartin Matuska.Pp
89716fd348SMartin MatuskaWith
90716fd348SMartin Matuska.Fl c ,
91716fd348SMartin Matuska.Nm
92716fd348SMartin Matuskaparses a
93716fd348SMartin Matuska.Ar runfile ,
94716fd348SMartin Matuskawhich can specify a series of tests and test groups to be executed.
95716fd348SMartin MatuskaThe tests are then executed, and the results are logged.
96716fd348SMartin Matuska.
97716fd348SMartin Matuska.Ss Test Groups
98716fd348SMartin MatuskaA test group is comprised of a set of executable files, all of which exist in
99716fd348SMartin Matuskaone directory.
100716fd348SMartin MatuskaThe options specified on the command line or in a
101716fd348SMartin Matuska.Ar runfile
102716fd348SMartin Matuskaapply to individual tests in the group.
103bb2d13b6SMartin MatuskaThe exception is options pertaining to pre and post scripts, which act on all
104bb2d13b6SMartin Matuskatests as a group.
105716fd348SMartin MatuskaRather than running before and after each test,
106716fd348SMartin Matuskathese scripts are run only once each at the start and end of the test group.
107716fd348SMartin Matuska.Ss Test Execution
108716fd348SMartin MatuskaThe specified tests run serially, and are typically assigned results according
109716fd348SMartin Matuskato exit values.
110716fd348SMartin MatuskaTests that exit zero and non-zero are marked
111716fd348SMartin Matuska.Sy PASS
112716fd348SMartin Matuskaand
113716fd348SMartin Matuska.Sy FAIL ,
114716fd348SMartin Matuskarespectively.
115716fd348SMartin MatuskaWhen a pre script fails for a test group, only the post script is executed,
116716fd348SMartin Matuskaand the remaining tests are marked
117716fd348SMartin Matuska.Sy SKIPPED .
118716fd348SMartin MatuskaAny test that exceeds
119716fd348SMartin Matuskaits
120716fd348SMartin Matuska.Ar timeout
121716fd348SMartin Matuskais terminated, and marked
122716fd348SMartin Matuska.Sy KILLED .
123716fd348SMartin Matuska.Pp
124716fd348SMartin MatuskaBy default, tests are executed with the credentials of the
125716fd348SMartin Matuska.Nm
126716fd348SMartin Matuskascript.
127716fd348SMartin MatuskaExecuting tests with other credentials is done via
128716fd348SMartin Matuska.Xr sudo 1m ,
129716fd348SMartin Matuskawhich must
130716fd348SMartin Matuskabe configured to allow execution without prompting for a password.
131716fd348SMartin MatuskaEnvironment variables from the calling shell are available to individual tests.
132716fd348SMartin MatuskaDuring test execution, the working directory is changed to
133716fd348SMartin Matuska.Ar outputdir .
134716fd348SMartin Matuska.
135716fd348SMartin Matuska.Ss Output Logging
136716fd348SMartin MatuskaBy default,
137716fd348SMartin Matuska.Nm
138716fd348SMartin Matuskawill print one line on standard output at the conclusion
139716fd348SMartin Matuskaof each test indicating the test name, result and elapsed time.
140716fd348SMartin MatuskaAdditionally, for each invocation of
141716fd348SMartin Matuska.Nm ,
142716fd348SMartin Matuskaa directory is created using the ISO 8601 date format.
143716fd348SMartin MatuskaWithin this directory is a file named
144716fd348SMartin Matuska.Sy log
145716fd348SMartin Matuskacontaining all the
146716fd348SMartin Matuskatest output with timestamps, and a directory for each test.
147716fd348SMartin MatuskaWithin the test directories, there is one file each for standard output,
148716fd348SMartin Matuskastandard error and merged output.
149716fd348SMartin MatuskaThe default location for the
150716fd348SMartin Matuska.Ar outputdir
151716fd348SMartin Matuskais
152716fd348SMartin Matuska.Pa /var/tmp/test_results .
153716fd348SMartin Matuska.Ss "Runfiles"
154716fd348SMartin MatuskaThe
155716fd348SMartin Matuska.Ar runfile
156716fd348SMartin Matuskais an INI-style configuration file that describes a test run.
157716fd348SMartin MatuskaThe file has one section named
158716fd348SMartin Matuska.Sy DEFAULT ,
159716fd348SMartin Matuskawhich contains configuration option
160716fd348SMartin Matuskanames and their values in
161716fd348SMartin Matuska.Sy name No = Ar value
162716fd348SMartin Matuskaformat.
163716fd348SMartin MatuskaThe values in this section apply to all the subsequent sections,
164716fd348SMartin Matuskaunless they are also specified there, in which case the default is overridden.
165716fd348SMartin MatuskaThe remaining section names are the absolute pathnames of files and directories,
166716fd348SMartin Matuskadescribing tests and test groups respectively.
167716fd348SMartin MatuskaThe legal option names are:
168716fd348SMartin Matuska.Bl -tag -width "tests = ['filename', …]"
169716fd348SMartin Matuska.It Sy outputdir No = Ar pathname
170716fd348SMartin MatuskaThe name of the directory that holds test logs.
171716fd348SMartin Matuska.It Sy pre No = Ar script
172716fd348SMartin MatuskaRun
173716fd348SMartin Matuska.Ar script
174716fd348SMartin Matuskaprior to the test or test group.
175716fd348SMartin Matuska.It Sy pre_user No = Ar username
176716fd348SMartin MatuskaExecute the pre script as
177716fd348SMartin Matuska.Ar username .
178716fd348SMartin Matuska.It Sy post No = Ar script
179716fd348SMartin MatuskaRun
180716fd348SMartin Matuska.Ar script
181716fd348SMartin Matuskaafter the test or test group.
182716fd348SMartin Matuska.It Sy post_user No = Ar username
183716fd348SMartin MatuskaExecute the post script as
184716fd348SMartin Matuska.Ar username .
185716fd348SMartin Matuska.It Sy quiet No = Sy True Ns | Ns Sy False
186716fd348SMartin MatuskaIf
187716fd348SMartin Matuska.Sy True ,
188716fd348SMartin Matuskaonly the results summary is printed to standard out.
189716fd348SMartin Matuska.It Sy tests No = [ Ns Ar 'filename' , No … ]
190716fd348SMartin MatuskaSpecify a list of
191716fd348SMartin Matuska.Ar filenames
192716fd348SMartin Matuskafor this test group.
193716fd348SMartin MatuskaOnly the basename of the absolute path is required.
194716fd348SMartin MatuskaThis option is only valid for test groups, and each
195716fd348SMartin Matuska.Ar filename
196716fd348SMartin Matuskamust be single quoted.
197716fd348SMartin Matuska.It Sy timeout No = Ar n
198716fd348SMartin MatuskaA timeout value of
199716fd348SMartin Matuska.Ar n
200716fd348SMartin Matuskaseconds.
201716fd348SMartin Matuska.It Sy user No = Ar username
202716fd348SMartin MatuskaExecute the test or test group as
203716fd348SMartin Matuska.Ar username .
204716fd348SMartin Matuska.El
205716fd348SMartin Matuska.
206716fd348SMartin Matuska.Sh OPTIONS
207716fd348SMartin Matuska.Bl -tag -width "-o outputdir"
208716fd348SMartin Matuska.It Fl c Ar runfile
209716fd348SMartin MatuskaSpecify a
210716fd348SMartin Matuska.Ar runfile
211716fd348SMartin Matuskato be consumed by the run command.
212716fd348SMartin Matuska.It Fl d
213716fd348SMartin MatuskaDry run mode.
214716fd348SMartin MatuskaExecute no tests, but print a description of each test that would have been run.
215716fd348SMartin Matuska.It Fl m
216716fd348SMartin MatuskaEnable kmemleak reporting (Linux only)
217716fd348SMartin Matuska.It Fl g
218716fd348SMartin MatuskaCreate test groups from any directories found while searching for tests.
219716fd348SMartin Matuska.It Fl o Ar outputdir
220716fd348SMartin MatuskaSpecify the directory in which to write test results.
221716fd348SMartin Matuska.It Fl p Ar script
222716fd348SMartin MatuskaRun
223716fd348SMartin Matuska.Ar script
224716fd348SMartin Matuskaprior to any test or test group.
225716fd348SMartin Matuska.It Fl P Ar script
226716fd348SMartin MatuskaRun
227716fd348SMartin Matuska.Ar script
228716fd348SMartin Matuskaafter any test or test group.
229716fd348SMartin Matuska.It Fl q
230716fd348SMartin MatuskaPrint only the results summary to the standard output.
231716fd348SMartin Matuska.It Fl s Ar script
232716fd348SMartin MatuskaRun
233716fd348SMartin Matuska.Ar script
234716fd348SMartin Matuskaas a failsafe after any test is killed.
235716fd348SMartin Matuska.It Fl S Ar username
236716fd348SMartin MatuskaExecute the failsafe script as
237716fd348SMartin Matuska.Ar username .
238716fd348SMartin Matuska.It Fl t Ar n
239716fd348SMartin MatuskaSpecify a timeout value of
240716fd348SMartin Matuska.Ar n
241716fd348SMartin Matuskaseconds per test.
242716fd348SMartin Matuska.It Fl u Ar username
243716fd348SMartin MatuskaExecute tests or test groups as
244716fd348SMartin Matuska.Ar username .
245716fd348SMartin Matuska.It Fl w Ar runfile
246716fd348SMartin MatuskaSpecify the name of the
247716fd348SMartin Matuska.Ar runfile
248716fd348SMartin Matuskato create.
249716fd348SMartin Matuska.It Fl x Ar username
250716fd348SMartin MatuskaExecute the pre script as
251716fd348SMartin Matuska.Ar username .
252716fd348SMartin Matuska.It Fl X Ar username
253716fd348SMartin MatuskaExecute the post script as
254716fd348SMartin Matuska.Ar username .
255716fd348SMartin Matuska.El
256716fd348SMartin Matuska.
257716fd348SMartin Matuska.Sh EXAMPLES
258716fd348SMartin Matuska.Bl -tag -width "-h"
259716fd348SMartin Matuska.It Sy Example 1 : No Running ad-hoc tests .
260716fd348SMartin MatuskaThis example demonstrates the simplest invocation of
261716fd348SMartin Matuska.Nm .
262716fd348SMartin Matuska.Bd -literal
263716fd348SMartin Matuska.No % Nm run Ar my-tests
264716fd348SMartin MatuskaTest: /home/jkennedy/my-tests/test-01                    [00:02] [PASS]
265716fd348SMartin MatuskaTest: /home/jkennedy/my-tests/test-02                    [00:04] [PASS]
266716fd348SMartin MatuskaTest: /home/jkennedy/my-tests/test-03                    [00:01] [PASS]
267716fd348SMartin Matuska
268716fd348SMartin MatuskaResults Summary
269716fd348SMartin MatuskaPASS       3
270716fd348SMartin Matuska
271716fd348SMartin MatuskaRunning Time:   00:00:07
272716fd348SMartin MatuskaPercent passed: 100.0%
273716fd348SMartin MatuskaLog directory:  /var/tmp/test_results/20120923T180654
274716fd348SMartin Matuska.Ed
275716fd348SMartin Matuska.It Sy Example 2 : No Creating a Ar runfile No for future use .
276716fd348SMartin MatuskaThis example demonstrates creating a
277716fd348SMartin Matuska.Ar runfile
278716fd348SMartin Matuskawith non-default options.
279716fd348SMartin Matuska.Bd -literal
280716fd348SMartin Matuska.No % Nm run Fl p Ar setup Fl x Ar root Fl g Fl w Ar new-tests.run Ar new-tests
281716fd348SMartin Matuska.No % Nm cat Pa new-tests.run
282716fd348SMartin Matuska[DEFAULT]
283716fd348SMartin Matuskapre = setup
284716fd348SMartin Matuskapost_user =
285716fd348SMartin Matuskaquiet = False
286716fd348SMartin Matuskauser =
287716fd348SMartin Matuskatimeout = 60
288716fd348SMartin Matuskapost =
289716fd348SMartin Matuskapre_user = root
290716fd348SMartin Matuskaoutputdir = /var/tmp/test_results
291716fd348SMartin Matuska
292716fd348SMartin Matuska[/home/jkennedy/new-tests]
293716fd348SMartin Matuskatests = ['test-01', 'test-02', 'test-03']
294716fd348SMartin Matuska.Ed
295716fd348SMartin Matuska.El
296716fd348SMartin Matuska.
297716fd348SMartin Matuska.Sh SEE ALSO
298716fd348SMartin Matuska.Xr sudo 1m
299