~mmach/netext73/webkit2gtk

« back to all changes in this revision

Viewing changes to Source/ThirdParty/ANGLE/src/tests/test_utils/runner/README.md

  • Committer: mmach
  • Date: 2023-06-16 17:21:37 UTC
  • Revision ID: netbit73@gmail.com-20230616172137-2rqx6yr96ga9g3kp
1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# ANGLE Test Harness
 
2
 
 
3
The ANGLE test harness is a harness around GoogleTest that provides functionality similar to the
 
4
[Chromium test harness][BaseTest]. It features:
 
5
 
 
6
 * splitting a test set into shards
 
7
 * catching and reporting crashes and timeouts
 
8
 * outputting to the Chromium [JSON test results format][JSONFormat]
 
9
 * multi-process execution
 
10
 
 
11
## Command-Line Arguments
 
12
 
 
13
The ANGLE test harness accepts all standard GoogleTest arguments. The harness also accepts the
 
14
following additional command-line arguments:
 
15
 
 
16
 * `--shard-count` and `--shard-index` control the test sharding
 
17
 * `--bot-mode` enables multi-process execution and test batching
 
18
 * `--batch-size` limits the number of tests to run in each batch
 
19
 * `--batch-timeout` limits the amount of time spent in each batch
 
20
 * `--max-processes` limits the number of simuntaneous processes
 
21
 * `--test-timeout` limits the amount of time spent in each test
 
22
 * `--results-file` specifies a location for the JSON test result output
 
23
 * `--results-directory` specifies a directory to write test results to
 
24
 * `--filter-file` allows passing a larget `gtest_filter` via a file
 
25
 
 
26
As well as the custom command-line arguments we support a few standard GoogleTest arguments:
 
27
 
 
28
 * `gtest_filter` works as it normally does with GoogleTest
 
29
 * `gtest_also_run_disabled_tests` works as it normally does as well
 
30
 
 
31
Other GoogleTest arguments are not supported although they may work.
 
32
 
 
33
## Implementation Notes
 
34
 
 
35
 * The test harness only requires `angle_common` and `angle_util`.
 
36
 * It does not depend on any Chromium browser code. This allows us to compile on other non-Clang platforms.
 
37
 * It uses rapidjson to read and write JSON files.
 
38
 * Timeouts are detected via a watchdog thread.
 
39
 * Crashes are handled via ANGLE's test crash handling code.
 
40
 * Currently it does not entirely support Android or Fuchsia.
 
41
 * Test execution is not currently deterministic in multi-process mode.
 
42
 * We capture stdout to output test failure reasons.
 
43
 
 
44
See the source code for more details: [TestSuite.h](TestSuite.h) and [TestSuite.cpp](TestSuite.cpp).
 
45
 
 
46
## Potential Areas of Improvement
 
47
 
 
48
 * Deterministic test execution.
 
49
 * Using sockets to communicate with test children. Similar to dEQP's test harness.
 
50
 * Closer integration with ANGLE's test expectations and system config libraries.
 
51
 * Supporting a GoogleTest-free integration.
 
52
 
 
53
[BaseTest]: https://chromium.googlesource.com/chromium/src/+/refs/heads/master/base/test/
 
54
[JSONFormat]: https://chromium.googlesource.com/chromium/src/+/master/docs/testing/json_test_results_format.md