perf-test(1)
============

NAME
----
perf-test - Runs sanity tests.

SYNOPSIS
--------
[verse]
'perf test [<options>] [{list <test-name-fragment>|[<test-name-fragments>|<test-numbers>]}]'

DESCRIPTION
-----------
This command does assorted sanity tests, initially through linked routines but
also will look for a directory with more tests in the form of scripts.

To get a list of available tests use 'perf test list', specifying a test name
fragment will show all tests that have it.

To run just specific tests, inform test name fragments or the numbers obtained
from 'perf test list'.

OPTIONS
-------
-s::
--skip::
	Tests to skip (comma separated numeric list).

-v::
-vv::
-vvv::
--verbose::
	With a single '-v', verbose level 1, only failing test output
	is displayed. With '-vv' and higher all test output is shown.

-S::
--sequential::
	Run all tests one after the other. By default "exclusive"
	tests are run sequentially, but other tests are run in
	parallel to speed execution.

-r::
--runs-per-test::
	Run each test the given number of times, by default once. This
	option can be useful to determine if a test is flaky.

-F::
--dont-fork::
	Do not fork child for each test, run all tests within single process, this
	sets sequential mode.

--dso::
	Specify a DSO for the "Symbols" test.

-w::
--workload=::
	Run a built-in workload, to list them use '--list-workloads', current ones include:
	noploop, thloop, leafloop, sqrtloop, brstack, datasym and landlock.

	Used with the shell script regression tests.

	Some accept an extra parameter:

		seconds: leafloop, noploop, sqrtloop, thloop
		nrloops: brstack

	The datasym and landlock workloads don't accept any.

--list-workloads::
	List the available workloads to use with -w/--workload.
