123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8" />
- <meta http-equiv="X-UA-Compatible" content="IE=edge" />
- <title>FFmpeg documentation</title>
- <link rel="stylesheet" href="bootstrap.min.css" />
- <link rel="stylesheet" href="style.min.css" />
-
- <meta name="description" content="FFmpeg Automated Testing Environment: ">
- <meta name="keywords" content="FFmpeg documentation : FFmpeg Automated Testing Environment: ">
- <meta name="Generator" content="texi2html 5.0">
- <!-- Created on March 9, 2020 by texi2html 5.0 -->
- <!--
- texi2html was written by:
- Lionel Cons <Lionel.Cons@cern.ch> (original author)
- Karl Berry <karl@freefriends.org>
- Olaf Bachmann <obachman@mathematik.uni-kl.de>
- and many others.
- Maintained by: Many creative people.
- Send bugs and suggestions to <texi2html-bug@nongnu.org>
-
- -->
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- </head>
- <body>
- <div class="container">
-
- <h1 class="titlefont">FFmpeg Automated Testing Environment</h1>
- <hr>
- <a name="Top"></a>
- <a name="SEC_Top"></a>
-
- <a name="SEC_Contents"></a>
- <h1>Table of Contents</h1>
-
- <div class="contents">
-
- <ul class="no-bullet">
- <li><a name="toc-Introduction" href="#Introduction">1 Introduction</a></li>
- <li><a name="toc-Using-FATE-from-your-FFmpeg-source-directory" href="#Using-FATE-from-your-FFmpeg-source-directory">2 Using FATE from your FFmpeg source directory</a></li>
- <li><a name="toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server" href="#Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3 Submitting the results to the FFmpeg result aggregation server</a></li>
- <li><a name="toc-Uploading-new-samples-to-the-fate-suite" href="#Uploading-new-samples-to-the-fate-suite">4 Uploading new samples to the fate suite</a></li>
- <li><a name="toc-FATE-makefile-targets-and-variables" href="#FATE-makefile-targets-and-variables">5 FATE makefile targets and variables</a>
- <ul class="no-bullet">
- <li><a name="toc-Makefile-targets" href="#Makefile-targets">5.1 Makefile targets</a></li>
- <li><a name="toc-Makefile-variables" href="#Makefile-variables">5.2 Makefile variables</a></li>
- <li><a name="toc-Examples" href="#Examples">5.3 Examples</a></li>
- </ul>
- </li>
- </ul>
- </div>
-
-
- <hr size="6">
- <a name="Introduction"></a>
- <h1 class="chapter"><a href="fate.html#toc-Introduction">1 Introduction</a></h1>
-
- <p>FATE is an extended regression suite on the client-side and a means
- for results aggregation and presentation on the server-side.
- </p>
- <p>The first part of this document explains how you can use FATE from
- your FFmpeg source directory to test your ffmpeg binary. The second
- part describes how you can run FATE to submit the results to FFmpeg’s
- FATE server.
- </p>
- <p>In any way you can have a look at the publicly viewable FATE results
- by visiting this website:
- </p>
- <p><a href="http://fate.ffmpeg.org/">http://fate.ffmpeg.org/</a>
- </p>
- <p>This is especially recommended for all people contributing source
- code to FFmpeg, as it can be seen if some test on some platform broke
- with their recent contribution. This usually happens on the platforms
- the developers could not test on.
- </p>
- <p>The second part of this document describes how you can run FATE to
- submit your results to FFmpeg’s FATE server. If you want to submit your
- results be sure to check that your combination of CPU, OS and compiler
- is not already listed on the above mentioned website.
- </p>
- <p>In the third part you can find a comprehensive listing of FATE makefile
- targets and variables.
- </p>
-
- <a name="Using-FATE-from-your-FFmpeg-source-directory"></a>
- <h1 class="chapter"><a href="fate.html#toc-Using-FATE-from-your-FFmpeg-source-directory">2 Using FATE from your FFmpeg source directory</a></h1>
-
- <p>If you want to run FATE on your machine you need to have the samples
- in place. You can get the samples via the build target fate-rsync.
- Use this command from the top-level source directory:
- </p>
- <div class="example">
- <pre class="example">make fate-rsync SAMPLES=fate-suite/
- make fate SAMPLES=fate-suite/
- </pre></div>
-
- <p>The above commands set the samples location by passing a makefile
- variable via command line. It is also possible to set the samples
- location at source configuration time by invoking configure with
- ‘<samp>--samples=<path to the samples directory></samp>’. Afterwards you can
- invoke the makefile targets without setting the <var>SAMPLES</var> makefile
- variable. This is illustrated by the following commands:
- </p>
- <div class="example">
- <pre class="example">./configure --samples=fate-suite/
- make fate-rsync
- make fate
- </pre></div>
-
- <p>Yet another way to tell FATE about the location of the sample
- directory is by making sure the environment variable FATE_SAMPLES
- contains the path to your samples directory. This can be achieved
- by e.g. putting that variable in your shell profile or by setting
- it in your interactive session.
- </p>
- <div class="example">
- <pre class="example">FATE_SAMPLES=fate-suite/ make fate
- </pre></div>
-
- <div class="float alert alert-info">
- <p>Do not put a ’~’ character in the samples path to indicate a home
- directory. Because of shell nuances, this will cause FATE to fail.
- </p></div>
- <p>To use a custom wrapper to run the test, pass ‘<samp>--target-exec</samp>’ to
- <code>configure</code> or set the <var>TARGET_EXEC</var> Make variable.
- </p>
-
- <a name="Submitting-the-results-to-the-FFmpeg-result-aggregation-server"></a>
- <h1 class="chapter"><a href="fate.html#toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3 Submitting the results to the FFmpeg result aggregation server</a></h1>
-
- <p>To submit your results to the server you should run fate through the
- shell script ‘<tt>tests/fate.sh</tt>’ from the FFmpeg sources. This script needs
- to be invoked with a configuration file as its first argument.
- </p>
- <div class="example">
- <pre class="example">tests/fate.sh /path/to/fate_config
- </pre></div>
-
- <p>A configuration file template with comments describing the individual
- configuration variables can be found at ‘<tt>doc/fate_config.sh.template</tt>’.
- </p>
- <p>The mentioned configuration template is also available here:
- </p><pre class="verbatim">slot= # some unique identifier
- repo=git://source.ffmpeg.org/ffmpeg.git # the source repository
- #branch=release/2.6 # the branch to test
- samples= # path to samples directory
- workdir= # directory in which to do all the work
- #fate_recv="ssh -T fate@fate.ffmpeg.org" # command to submit report
- comment= # optional description
- build_only= # set to "yes" for a compile-only instance that skips tests
- ignore_tests=
-
- # the following are optional and map to configure options
- arch=
- cpu=
- cross_prefix=
- as=
- cc=
- ld=
- target_os=
- sysroot=
- target_exec=
- target_path=
- target_samples=
- extra_cflags=
- extra_ldflags=
- extra_libs=
- extra_conf= # extra configure options not covered above
-
- #make= # name of GNU make if not 'make'
- makeopts= # extra options passed to 'make'
- #makeopts_fate= # extra options passed to 'make' when running tests,
- # defaulting to makeopts above if this is not set
- #tar= # command to create a tar archive from its arguments on stdout,
- # defaults to 'tar c'
- </pre>
- <p>Create a configuration that suits your needs, based on the configuration
- template. The <code>slot</code> configuration variable can be any string that is not
- yet used, but it is suggested that you name it adhering to the following
- pattern ‘<samp><var>arch</var>-<var>os</var>-<var>compiler</var>-<var>compiler version</var></samp>’. The
- configuration file itself will be sourced in a shell script, therefore all
- shell features may be used. This enables you to setup the environment as you
- need it for your build.
- </p>
- <p>For your first test runs the <code>fate_recv</code> variable should be empty or
- commented out. This will run everything as normal except that it will omit
- the submission of the results to the server. The following files should be
- present in $workdir as specified in the configuration file:
- </p>
- <ul>
- <li> configure.log
- </li><li> compile.log
- </li><li> test.log
- </li><li> report
- </li><li> version
- </li></ul>
-
- <p>When you have everything working properly you can create an SSH key pair
- and send the public key to the FATE server administrator who can be contacted
- at the email address <a href="mailto:fate-admin@ffmpeg.org">fate-admin@ffmpeg.org</a>.
- </p>
- <p>Configure your SSH client to use public key authentication with that key
- when connecting to the FATE server. Also do not forget to check the identity
- of the server and to accept its host key. This can usually be achieved by
- running your SSH client manually and killing it after you accepted the key.
- The FATE server’s fingerprint is:
- </p>
- <dl compact="compact">
- <dt>‘<samp>RSA</samp>’</dt>
- <dd><p> d3:f1:83:97:a4:75:2b:a6:fb:d6:e8:aa:81:93:97:51
- </p></dd>
- <dt>‘<samp>ECDSA</samp>’</dt>
- <dd><p> 76:9f:68:32:04:1e:d5:d4:ec:47:3f:dc:fc:18:17:86
- </p></dd>
- </dl>
-
- <p>If you have problems connecting to the FATE server, it may help to try out
- the <code>ssh</code> command with one or more ‘<samp>-v</samp>’ options. You should
- get detailed output concerning your SSH configuration and the authentication
- process.
- </p>
- <p>The only thing left is to automate the execution of the fate.sh script and
- the synchronisation of the samples directory.
- </p>
- <a name="Uploading-new-samples-to-the-fate-suite"></a>
- <h1 class="chapter"><a href="fate.html#toc-Uploading-new-samples-to-the-fate-suite">4 Uploading new samples to the fate suite</a></h1>
-
- <p>If you need a sample uploaded send a mail to samples-request.
- </p>
- <p>This is for developers who have an account on the fate suite server.
- If you upload new samples, please make sure they are as small as possible,
- space on each client, network bandwidth and so on benefit from smaller test cases.
- Also keep in mind older checkouts use existing sample files, that means in
- practice generally do not replace, remove or overwrite files as it likely would
- break older checkouts or releases.
- Also all needed samples for a commit should be uploaded, ideally 24
- hours, before the push.
- If you need an account for frequently uploading samples or you wish to help
- others by doing that send a mail to ffmpeg-devel.
- </p>
- <div class="example">
- <pre class="example">#First update your local samples copy:
- rsync -vauL --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X fate-suite.ffmpeg.org:/home/samples/fate-suite/ ~/fate-suite
-
- #Then do a dry run checking what would be uploaded:
- rsync -vanL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
-
- #Upload the files:
- rsync -vaL --no-g --chmod=Dg+s,Duo+x,ug+rw,o+r,o-w,+X ~/fate-suite/ fate-suite.ffmpeg.org:/home/samples/fate-suite
- </pre></div>
-
-
- <a name="FATE-makefile-targets-and-variables"></a>
- <h1 class="chapter"><a href="fate.html#toc-FATE-makefile-targets-and-variables">5 FATE makefile targets and variables</a></h1>
-
- <a name="Makefile-targets"></a>
- <h2 class="section"><a href="fate.html#toc-Makefile-targets">5.1 Makefile targets</a></h2>
-
- <dl compact="compact">
- <dt>‘<samp>fate-rsync</samp>’</dt>
- <dd><p>Download/synchronize sample files to the configured samples directory.
- </p>
- </dd>
- <dt>‘<samp>fate-list</samp>’</dt>
- <dd><p>Will list all fate/regression test targets.
- </p>
- </dd>
- <dt>‘<samp>fate</samp>’</dt>
- <dd><p>Run the FATE test suite (requires the fate-suite dataset).
- </p></dd>
- </dl>
-
- <a name="Makefile-variables"></a>
- <h2 class="section"><a href="fate.html#toc-Makefile-variables">5.2 Makefile variables</a></h2>
-
- <dl compact="compact">
- <dt><code>V</code></dt>
- <dd><p>Verbosity level, can be set to 0, 1 or 2.
- </p><ul>
- <li> 0: show just the test arguments
- </li><li> 1: show just the command used in the test
- </li><li> 2: show everything
- </li></ul>
-
- </dd>
- <dt><code>SAMPLES</code></dt>
- <dd><p>Specify or override the path to the FATE samples at make time, it has a
- meaning only while running the regression tests.
- </p>
- </dd>
- <dt><code>THREADS</code></dt>
- <dd><p>Specify how many threads to use while running regression tests, it is
- quite useful to detect thread-related regressions.
- </p>
- </dd>
- <dt><code>THREAD_TYPE</code></dt>
- <dd><p>Specify which threading strategy test, either ‘<samp>slice</samp>’ or ‘<samp>frame</samp>’,
- by default ‘<samp>slice+frame</samp>’
- </p>
- </dd>
- <dt><code>CPUFLAGS</code></dt>
- <dd><p>Specify CPU flags.
- </p>
- </dd>
- <dt><code>TARGET_EXEC</code></dt>
- <dd><p>Specify or override the wrapper used to run the tests.
- The <code>TARGET_EXEC</code> option provides a way to run FATE wrapped in
- <code>valgrind</code>, <code>qemu-user</code> or <code>wine</code> or on remote targets
- through <code>ssh</code>.
- </p>
- </dd>
- <dt><code>GEN</code></dt>
- <dd><p>Set to ‘<samp>1</samp>’ to generate the missing or mismatched references.
- </p>
- </dd>
- <dt><code>HWACCEL</code></dt>
- <dd><p>Specify which hardware acceleration to use while running regression tests,
- by default ‘<samp>none</samp>’ is used.
- </p>
- </dd>
- <dt><code>KEEP</code></dt>
- <dd><p>Set to ‘<samp>1</samp>’ to keep temp files generated by fate test(s) when test is successful.
- Default is ‘<samp>0</samp>’, which removes these files. Files are always kept when a test
- fails.
- </p>
- </dd>
- </dl>
-
- <a name="Examples"></a>
- <h2 class="section"><a href="fate.html#toc-Examples">5.3 Examples</a></h2>
-
- <div class="example">
- <pre class="example">make V=1 SAMPLES=/var/fate/samples THREADS=2 CPUFLAGS=mmx fate
- </pre></div>
- </div>
- </body>
- </html>
|