Home | History | Annotate | only in /frameworks/rs/tests/lldb
Up to higher level directory
NameDateSize
.gitignore05-Oct-2017758
Android.mk05-Oct-201779
config.py05-Oct-20173.8K
cpp/05-Oct-2017
java/05-Oct-2017
jni/05-Oct-2017
README.txt05-Oct-201713.6K
run_tests.py05-Oct-201727.7K
tests/05-Oct-2017

README.txt

      1 - ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
      2 -   LLDB for Renderscript Test Suite
      3 -
      4 -   16/03/2016
      5 - ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
      6 
      7 Overview:
      8 
      9     The LLDB for Renderscript test suite is written in python and relies on
     10     LLDB's python bindings.  The test suite will push several test app's onto
     11     a target device, and makes coordinated use of LLDB and ADB to run automated
     12     debug sessions.
     13 
     14 Set up the test suite:
     15 
     16     Check out the AOSP and build it for your target. Navigate to
     17     /frameworks/rs/test/lldb and type mm.  This should successfully build the
     18     binaries that the testsuite uses. They will be placed in
     19     <path to out folder>/target/product/<product code name>/data/app, system/lib
     20     and system/bin.
     21 
     22 Prerequisite:
     23 
     24     An lldb-server executable must be present on your device/emulator.
     25     LLDB must be compiled on your host machine along with its python interface.
     26     lldb-server and lldb should be built from the same source revisions.
     27 
     28 Running the test suite:
     29 
     30     The test suite can be run via the following command:
     31 
     32         > python run_tests.py [-h]
     33                               [--config path]
     34                               [--device DEVICE]
     35                               [--test path]
     36                               [--install-only]
     37                               [--no-install]
     38                               [--no-uninstall]
     39                               [--print-to-stdout]
     40                               [--verbose]
     41                               [--wimpy]
     42                               [--run-emu]
     43                               [--adb-path ADB_PATH]
     44                               [--aosp-product-path AOSP_PRODUCT_PATH]
     45                               [--blacklist BLACKLIST [BLACKLIST ...]]
     46                               [--device-port DEVICE_PORT]
     47                               [--emu-cmd EMU_CMD]
     48                               [--host-port HOST_PORT]
     49                               [--lldb-path LLDB_PATH]
     50                               [--lldb-server-path-device LLDB_SERVER_PATH_DEVICE]
     51                               [--lldb-server-path-host LLDB_SERVER_PATH_HOST]
     52                               [--log-file-path LOG_FILE_PATH]
     53                               [--results-file-path RESULTS_FILE_PATH]
     54                               [--timeout TIMEOUT]
     55 
     56         optional arguments:
     57           -h, --help            show this help message and exit
     58           --config path, -c path
     59                                 Path to a custom config file.
     60           --device DEVICE, -d DEVICE
     61                                 Specify the device id of the device to test on.
     62           --test path, -t path  Specify a specific test to run.
     63           --install-only        It only runs the pre-run stage of the test suite. It
     64                                 installs the required APKs but does not execute the
     65                                 tests.
     66           --no-install, -n      Stop the test suite installing apks to device.
     67           --no-uninstall        Stop the test suite uninstalling apks after
     68                                 completion.
     69           --print-to-stdout     Print all logging information to standard out.
     70           --verbose, -v         Store extra info in the log.
     71           --wimpy, -w           Test only a core subset of features.
     72           --run-emu             Spawn an emulator and run the test suite on that.
     73                                 Specify the emulator command line in the config file
     74                                 or with -emu-cmd.
     75           --adb-path ADB_PATH   Path to android debug bridge on the host.
     76           --aosp-product-path AOSP_PRODUCT_PATH
     77                                 The path to the "out" folder of the AOSP repository.
     78           --blacklist BLACKLIST [BLACKLIST ...]
     79                                 Provide a test blacklist for skipping specific tests.
     80                                 To specify the blacklist from the command line the
     81                                 following can be used: --blacklist test1.py test2.py
     82                                 ...
     83           --device-port DEVICE_PORT
     84                                 Specify the port number that lldb-server (on the
     85                                 device) listens on. When lldb-server is spawned on the
     86                                 device it will listen on this port. Each successive
     87                                 test will increment onwards from this port.
     88           --emu-cmd EMU_CMD     The command line for the emulator (if using -run-emu).
     89           --host-port HOST_PORT
     90                                 Specify host port which lldb-server will be forwarded
     91                                 to. Specify the starting host port number that lldb-
     92                                 server (on the target) will be forwarded to on the
     93                                 host. Each successive test will increment onwards from
     94                                 this initial port.
     95           --lldb-path LLDB_PATH
     96                                 The path to lldb executable on the host.
     97           --lldb-server-path-device LLDB_SERVER_PATH_DEVICE
     98                                 Path to the lldb-server executable on the device.
     99           --lldb-server-path-host LLDB_SERVER_PATH_HOST
    100                                 Path to the lldb-server executable on host (if using
    101                                 -run-emu).
    102           --log-file-path LOG_FILE_PATH
    103                                 The path to the folder where the log file will be
    104                                 placed.
    105           --results-file-path RESULTS_FILE_PATH
    106                                 Output folder where junit results.xml file will be
    107                                 placed.
    108           --timeout TIMEOUT     Timeout period for a single command, expressed in
    109                                 seconds
    110 
    111     An optional config file can be passed to the test suite which will provide
    112     details of your specific environment. The user file should define a custom
    113     class inheriting from Config in config.py. The class Config presents the
    114     default set of options, available to be overridden.
    115 
    116     All options in the config file can also be specified on the command line.
    117 
    118     If your config and command line do not specify a path to the host lldb,
    119     the PYTHONPATH environment variable must be set.  The appropriate value to
    120     set this to can be obtained by running the following command:
    121 
    122         > lldb -P
    123 
    124     This will print out a path to the lldb python bindings on your local machine.
    125 
    126 Build Requirements:
    127 
    128 
    129     The following revisions are from the llvm git mirror:
    130 
    131     llvm : 5786b73
    132     clang: b6d0b32
    133     lldb : 98712eb
    134 
    135     lldb has the following dependencies:
    136 
    137       Python2.7.6
    138       swig2.0
    139       lldb-server
    140 
    141 Building LLDB python bindings:
    142 
    143     Linux:
    144 
    145         Build instructions for Linux lldb can be found on the official lldb web
    146         page:
    147 
    148           http://lldb.llvm.org/build.html
    149 
    150         The following CMake variables should be enabled when generating:
    151 
    152           LLDB_ENABLE_PYTHON_SCRIPTS_SWIG_API_GENERATION = True
    153 
    154         As a post build step, swig will generate the python bindings for lldb.
    155 
    156     Windows:
    157 
    158         Prerequisites:
    159 
    160             Visual Studio 2015
    161             Custom x64 Python2.7.10 package:
    162                 http://p-nand-q.com/python/2015.08.07-Python2710-x64-vs2015.7z
    163             Swig Version 3.0.5 (Added to the $PATH)
    164             Cmake 3.4.0 (So we can generate Visual Studio 2015 solutions)
    165 
    166         Build Python for Windows:
    167 
    168             http://p-nand-q.com/python/building-python-27-with-vs2010.html
    169 
    170             The important thing here is that the above python distribution
    171             contains debug versions of the libraries and is built with the same
    172             Visual Studio version we are using so the runtimes do not conflict.
    173 
    174         Build LLDB on Windows:
    175 
    176             Select the Cmake generator "Microsoft Visual Studio 2015 Win64".
    177             The following CMake variables should be enabled when generating:
    178 
    179                 LLDB_DISABLE_PYTHON=False
    180                 LLDB_RELOCATABLE_PYTHON=False
    181                 PYTHON_HOME=<path to the above python release>
    182 
    183             Using cmake-gui is a good idea and lets you make sure that swig has
    184             been correctly detected.
    185 
    186             In the CMake configure step, you should see something similar to the
    187             following:
    188             -- Found Python version 2.7.9
    189             -- LLDB Found PythonExecutable: E:/Python27/python.exe and
    190             E:/Python27/python_d.exe
    191             -- LLDB Found PythonLibs: E:/Python27/libs/python27.lib and
    192             E:/Python27/libs/python27_d.lib
    193             -- LLDB Found PythonDLL: E:/Python27/python27.dll and
    194             E:/Python27/python27_d.dll
    195             -- LLDB Found PythonIncludeDirs: E:/Python27/Include
    196             LLDB version: 3.8.0
    197             Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
    198             Found PythonInterp:
    199             $<$<CONFIG:Debug>:E:/Python27/python_d.exe>$<$<NOT:$<CONFIG:Debug>>:E:/Python27/python.exe>
    200             (found version "1.4")
    201 
    202             Build LLDB as a RelWithDebInfo build, because debug builds of lldb
    203             produce an lldb_d.pyd file, but the __init__.py still refers to
    204             lldb.pyd.
    205 
    206             The LLDB python bindings should have built in
    207             "llvm_build\RelWithDebInfo\lib\site-packages\lldb". Point the test
    208             suite towards "llvm_build\RelWithDebInfo\bin\lldb.exe".
    209             When running the test suite itself, make sure to use the python
    210             executable from the custom package.
    211 
    212 A typical test transcript:
    213 
    214     Located ADB
    215     Located device ZX1G427S2S
    216     Pushing all tests...
    217     Pushed all tests
    218     Pre run complete
    219     Found 86 tests
    220     Running test_allocation_dump_2_cpp.py: PASS
    221     Running test_breakpoint_fileline_multiple_rs_files_cpp.py: PASS
    222     Running test_read_local_cpp.py: PASS
    223     Running test_breakpoint_kernel_multiple_rs_files_cpp.py: PASS
    224     Running test_multiple_rs_files_cpp.py: PASS
    225     Running test_breakpoint_kernel_all_multiple_rs_files_cpp.py: PASS
    226     Running test_dwarf_lang_cpp.py: PASS
    227     Running test_write_global_element_cpp.py: PASS
    228     Running test_allocation_list_cpp.py: PASS
    229     Running test_breakpoint_coordinate_cpp.py: PASS
    230     Running test_rs_consts_cpp.py: PASS
    231     Running test_allocation_file_cpp.py: PASS
    232     Running test_allocation_dump_1_cpp.py: PASS
    233     Running test_source_step_cpp.py: PASS
    234     Running test_breakpoint_kernel_2_cpp.py: PASS
    235     Running test_backtrace_cpp.py: PASS
    236     Running test_language_subcmds_no_debug_cpp.py: PASS
    237     Running test_breakpoint_kernel_1_cpp.py: PASS
    238     Running test_language_subcmds_cpp.py: PASS
    239     Running test_write_global_cpp.py: PASS
    240     Running test_invoke_fun_cpp.py: PASS
    241     Running test_breakpoint_fileline_cpp.py: PASS
    242     Running test_write_local_cpp.py: PASS
    243     Running test_breakpoint_kernel_all_cpp.py: PASS
    244     Running test_write_local_element_cpp.py: PASS
    245     Running test_call_api_funs_cpp.py: PASS
    246     Running test_coordinates_cpp.py: PASS
    247     Running test_read_global_cpp.py: PASS
    248     Running test_language_subcmds.py: PASS
    249     Running test_coordinates.py: PASS
    250     Running test_language_subcmds_no_debug.py: PASS
    251     Running test_read_local.py: PASS
    252     Running test_call_api_funs.py: PASS
    253     Running test_breakpoint_kernel_1.py: PASS
    254     Running test_breakpoint_fileline.py: PASS
    255     Running test_breakpoint_fileline_multiple_rs_files.py: PASS
    256     Running test_rs_consts.py: PASS
    257     Running test_invoke_fun.py: PASS
    258     Running test_write_local_element.py: PASS
    259     Running test_source_step.py: PASS
    260     Running test_allocation_file.py: PASS
    261     Running test_allocation_list.py: PASS
    262     Running test_breakpoint_kernel_multiple_rs_files.py: PASS
    263     Running test_allocation_dump_1.py: PASS
    264     Running test_breakpoint_kernel_all.py: PASS
    265     Running test_allocation_dump_2.py: PASS
    266     Running test_allocation_dump_struct.py: PASS
    267     Running test_read_global.py: PASS
    268     Running test_language.py: PASS
    269     Running test_dwarf_lang.py: PASS
    270     Running test_breakpoint_coordinate.py: PASS
    271     Running test_write_global.py: PASS
    272     Running test_multiple_rs_files.py: PASS
    273     Running test_write_global_element.py: PASS
    274     Running test_breakpoint_kernel_all_multiple_rs_files.py: PASS
    275     Running test_breakpoint_kernel_2.py: PASS
    276     Running test_write_local.py: PASS
    277     Running test_backtrace.py: PASS
    278     Running test_call_api_funs_jni.py: PASS
    279     Running test_invoke_fun_jni.py: PASS
    280     Running test_allocation_dump_1_jni.py: PASS
    281     Running test_breakpoint_fileline_multiple_rs_files_jni.py: PASS
    282     Running test_allocation_file_jni.py: PASS
    283     Running test_breakpoint_fileline_jni.py: PASS
    284     Running test_source_step_jni.py: PASS
    285     Running test_coordinates_jni.py: PASS
    286     Running test_rs_consts_jni.py: PASS
    287     Running test_breakpoint_kernel_all_multiple_rs_files_jni.py: PASS
    288     Running test_multiple_rs_files_jni.py: PASS
    289     Running test_allocation_dump_2_jni.py: PASS
    290     Running test_allocation_list_jni.py: PASS
    291     Running test_write_local_element_jni.py: PASS
    292     Running test_breakpoint_kernel_all_jni.py: PASS
    293     Running test_breakpoint_coordinate_jni.py: PASS
    294     Running test_language_subcmds_no_debug_jni.py: PASS
    295     Running test_read_local_jni.py: PASS
    296     Running test_dwarf_lang_jni.py: PASS
    297     Running test_breakpoint_kernel_2_jni.py: PASS
    298     Running test_breakpoint_kernel_multiple_rs_files_jni.py: PASS
    299     Running test_write_global_element_jni.py: PASS
    300     Running test_breakpoint_kernel_1_jni.py: PASS
    301     Running test_read_global_jni.py: PASS
    302     Running test_language_subcmds_jni.py: PASS
    303     Running test_write_global_jni.py: PASS
    304     Running test_backtrace_jni.py: PASS
    305     Running test_write_local_jni.py: PASS
    306     Uninstalled/Deleted all tests
    307     86 of 86 passed
    308     100% rate
    309