<html devsite>
  <head>
    <title>Running the tests</title>
    <meta name="project_path" value="/_project.yaml" />
    <meta name="book_path" value="/_book.yaml" />
  </head>
  <body>
  <!--
      Copyright 2017 The Android Open Source Project

      Licensed under the Apache License, Version 2.0 (the "License");
      you may not use this file except in compliance with the License.
      You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing, software
      distributed under the License is distributed on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      See the License for the specific language governing permissions and
      limitations under the License.
  -->


<p>This page provides instructions for running deqp tests in Linux and Windows
environments, using command line arguments, and working with the Android
application package.</p>

<h2 id=linux_and_windows_environments>Linux and Windows environments</h2>

<p>Start by copying the following files and directories to the target.</p>

<table>
 <tr>
   <th>Module</th>
   <th>Directory</th>
   <th>Target</th>
 </tr>

 <tr>
    <td>Execution Server</td>
    <td><code>build/execserver/execserver</code></td>
    <td><code>&lt;dst&gt;/execserver</code></td>
 </tr>

 <tr>
    <td>EGL Module</td>
    <td><code>build/modules/egl/deqp-egl</code></td>
    <td><code>&lt;dst&gt;/deqp-egl</code></td>
 </tr>

 <tr>
    <td rowspan=2 style="vertical-align:middle">GLES2 Module</td>
    <td><code>build/modules/gles2/deqp-gles2</code></td>
    <td><code>&lt;dst&gt;/deqp-gles2</code></td>
 </tr>


 <tr>
    <td><code>data/gles2</code></td>
    <td><code>&lt;dst&gt;/gles2</code></td>
 </tr>



 <tr>
    <td rowspan=2 style="vertical-align:middle">GLES3 Module</td>
    <td><code>build/modules/gles3/deqp-gles3</td>
    <td><code>&lt;dst&gt;/deqp-gles3</code></td>
 </tr>

 <tr>
    <td><code>data/gles3</code></td>
    <td><code>&lt;dst&gt;/gles3</code></td>
 </tr>

 <tr>
    <td rowspan=2 style="vertical-align:middle">GLES3.1 Module</td>
    <td><code>build/modules/gles31/deqp-gles31</code></td>
    <td><code>&lt;dst&gt;/deqp-gles31</code></td>
 </tr>

 <tr>
    <td><code>data/gles31</code></td>
    <td><code>&lt;dst&gt;/gles31</code></td>
 </tr>


  <tr>
    <td rowspan=2 style="vertical-align:middle">GLES3.2 Module</td>
    <td><code>build/modules/gles32/deqp-gles32</code></td>
    <td><code>&lt;dst&gt;/deqp-gles32</code></td>
 </tr>

  <tr>
    <td><code>data/gles32</code></td>
    <td><code>&lt;dst&gt;/gles32</code></td>
 </tr>

</table>

<p>You can deploy the execution service and test binaries anywhere in the target
file system; however, test binaries expect to find data directories in the
current working directory. When ready, start the Test Execution Service on the
target device. For details on starting the service, see
<a href="/devices/graphics/port-tests.html#test_execution_service">Test
execution service</a>.</p>

<h2 id=command_line_arguments>Command line arguments</h2>

<p>The following table lists command line arguments that affect execution of all
test programs.</p>

<table width="100%">
<col style="width:50%">
<col style="width:50%">
 <tr>
   <th>Argument</th>
   <th>Description</th>
 </tr>

 <tr>
<td><code>--deqp-case=&lt;casename&gt;</code></td>
<td>Run cases that match a given pattern. Wildcard (*) is supported.</td>
 </tr>

 <tr>
<td><code>--deqp-log-filename=&lt;filename&gt;</code></td>
<td>Write test results to the file whose name you provide. The test execution
service will set the filename when starting a test.</td>
 </tr>

 <tr>
 <td><code>--deqp-stdin-caselist<br/>
--deqp-caselist=&lt;caselist&gt;<br/>
--deqp-caselist-file=&lt;filename&gt;</code></td>
<td>Read case list from stdin or from a given argument. The test execution
service will set the argument according to the execution request received. See
the next section for a description of the case list format.</td>
 </tr>
 <tr>
<td><code>--deqp-test-iteration-count=&lt;count&gt;</code></td>
<td>Override iteration count for tests that support a variable number of
iterations.</td>
 </tr>
 <tr>
    <td><code>--deqp-base-seed=&lt;seed&gt;</code></td>
    <td>Base seed for the test cases that use randomization.</td>
 </tr>
</table>

<h3 id=gles2_and_gles3-specific_arguments>GLES2 and GLES3-specific arguments</h3>

The following table lists the GLES2- and GLES3-specific arguments.

<table>
<table width="100%">
<col style="width:50%">
<col style="width:50%">
 <tr>
   <th>Argument</th>
   <th>Description</th>
 </tr>
 <tr>
    <td><code>--deqp-gl-context-type=&lt;type&gt;</code></td>
    <td>OpenGL context type. Available context types depend on the platform. On
    platforms supporting EGL, the value <code>egl</code> can be used to select
    the EGL context.</td>
 </tr>
 <tr>
    <td><code>--deqp-gl-config-id=&lt;id&gt;</code></td>
    <td>Run tests for the provided GL configuration ID. Interpretation is
    platform-dependent. On the EGL platform, this is the EGL configuration ID.</td>
 </tr>
 <tr>
    <td><code>--deqp-gl-config-name=&lt;name&gt;</code></td>
    <td><p>Run tests for a named GL configuration. Interpretation is
    platform-dependent. For EGL, the format is
    <code>rgb(a)&lt;bits&gt;d&lt;bits&gt;s&lt;bits&gt;</code>. For example, a
    value of <code>rgb888s8</code> will select the first configuration where the
    color buffer is RGB888 and the stencil buffer has 8 bits.</td>
 </tr>
 <tr>
    <td><code>--deqp-gl-context-flags=&lt;flags&gt;</code></td>
    <td>Creates a context. Specify <code>robust</code> or <code>debug</code>.</td>
 </tr>
 <tr>
    <td><code>--deqp-surface-width=&lt;width&gt;<br/>
    --deqp-surface-height=&lt;height&gt;</code></td>
    <td>Try to create a surface with a given size. Support for this is optional.</td>
 </tr>
 <tr>
    <td><code>--deqp-surface-type=&lt;type&gt;</code></td>
    <td>Use a given surface type as the main test rendering target. Possible
    types are <code>window</code>, <code>pixmap</code>, <code>pbuffer</code>,
    and <code>fbo</code>.</td>
 </tr>
 <tr>
    <td><code>--deqp-screen-rotation=&lt;rotation&gt;</code></td>
    <td>Screen orientation in increments of 90 degrees for platforms that
    support it.</td>
 </tr>
</table>

<h3 id=test_case_list_format>Test case list format</h3>

<p>The test case list can be given in two formats. The first option is to list
the full name of each test on a separate line in a standard ASCII file. As the
test sets grow, the repetitive prefixes can be cumbersome. To avoid repeating
the prefixes, use a trie (also known as a prefix tree) syntax shown below.</p>

<pre class="devsite-click-to-copy">
{nodeName{firstChild{…},…lastChild{…}}}
</pre>

<p>For example:</p>

<pre class="devsite-click-to-copy">
{dEQP-EGL{config-list,create_context{rgb565_depth_stencil}}}
</pre>

<p>Translates into the following two test cases:</p>

<pre class="devsite-click-to-copy">
dEQP-EGL.config_list
dEQP-EGL.create_context.rgb565_depth_stencil
</pre>

<h2 id=android>Android</h2>

<p>The Android application package contains all required components, including
the test execution service, test binaries, and data files. The test activity is
a <code>NativeActivity</code> that uses EGL (requires Android 3.2 or higher).</p>

<p>The application package can be installed with the following command (name
shown is the name of the APK in the Android CTS package; which name depends on
the build):</p>
<pre class="devsite-terminal devsite-click-to-copy">
adb –d install –r com.drawelements.deqp.apk
</pre>

<p>To launch the test execution service and to setup port forwarding, use the
following:</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">adb –d forward tcp:50016 tcp:50016</code>
<code class="devsite-terminal">adb –d shell am start –n com.drawelements.deqp/.execserver.ServiceStarter</code>
</pre>

<p>Debug prints can be enabled by executing the following before starting the
tests:</p>

<pre class="devsite-terminal devsite-click-to-copy">
adb –d shell setprop log.tag.dEQP DEBUG
</pre>

<h3 id=executing_tests_on_android_without_android_cts>Executing tests on
Android without Android CTS</h3>

<p>To manually start the test execution activity, construct an Android intent
that targets <code>android.app.NativeActivity</code>. The activities can be
found in the <code>com.drawelements.deqp</code> package. The command line must
be supplied as an extra string with key <code>"cmdLine"</code> in the Intent.</p>

<p>A test log is written to <code>/sdcard/dEQP-log.qpa</code>. If the test run
does not start normally, additional debug information is available in the device
log.</p>

<p>You can launch an activity from the command line using the <code>am</code>
utility. For example, to run <code>dEQP-GLES2.info</code> tests on a platform
supporting <code>NativeActivity,</code> use the following commands.</p>

<pre class="devsite-terminal devsite-click-to-copy">
adb -d shell am start -n com.drawelements.deqp/android.app.NativeActivity -e \
cmdLine "deqp --deqp-case=dEQP-GLES2.info.* --deqp-log-filename=/sdcard/dEQP-Log.qpa
</pre>

<h3 id=debugging_on_android>Debugging on Android</h3>

<p>To run the tests under the GDB debugger on Android, first compile and install
the debug build by running the following two scripts:</p>

<pre class="devsite-click-to-copy">
<code class="devsite-terminal">python android/scripts/build.py --native-build-type=Debug</code>
<code class="devsite-terminal">python android/scripts/install.py</code>
</pre>

<p>After the debug build is installed on the device, to launch the tests under
GDB running on the host, run the following command:</p>

<pre class="devsite-terminal devsite-click-to-copy">
python android/scripts/debug.py \
--deqp-commandline="--deqp-log-filename=/sdcard/TestLog.qpa --deqp-case=dEQP-GLES2.functional.*"
</pre>

<p>The deqp command line depends on the test cases to be executed and other
required parameters. The script adds a default breakpoint at the beginning of
the deqp execution (<code>tcu::App::App</code>).</p>

<p>The <code>debug.py</code> script accepts multiple command line arguments for
actions such as setting breakpoints for debugging, gdbserver connection
parameters, and paths to additional binaries to debug (use <code>debug.py
--help</code> for all arguments and explanations). The script also copies some
default libraries from the target device to get symbol listings.</p>

<p>To step through driver code (such as when the GDB needs to know the locations
of the binaries with full debug information), add more libraries via
<code>debug.py</code> command line parameters. This script writes out a
configuration file for the GDB starting from line 132 of the script file. You
can provide additional paths to binaries, etc., but supplying correct command
line parameters should be enough.</p>

<p class="note"><strong>Note:</strong> On Windows, the GDB binary requires
<code>libpython2.7.dll</code>. Before launching <code>debug.py</code>, add
<code>&lt;path-to-ndk&gt;/prebuilt/windows/bin</code> to the PATH variable.</p>

<p class="note"><strong>Note:</strong> Native code debugging does not work on
stock Android 4.3; for workarounds, refer to <a href="https://issuetracker.google.com/issues/36976703">this public bug</a>.
Android 4.4 and higher do not contain this bug.</p>

  </body>
</html>
