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