mirror of
https://fuchsia.googlesource.com/third_party/pigweed.googlesource.com/pigweed/pigweed
synced 2024-09-20 13:51:05 +00:00
300dcea444
This change renames the pw_test_server module to pw_target_runner and integrates it into the GN build using the new Go templates. The module is updated to match the GOPATH structure under its go/ directory, and its protos are moved into the module protos directory. Additionally, the simple server and client are split into two separate programs instead of combining them into one. Change-Id: I44adeca0989dc7e15cb1a169a6ce183139dde2ce
109 lines
3.5 KiB
ReStructuredText
109 lines
3.5 KiB
ReStructuredText
.. _chapter-test-server:
|
|
|
|
.. default-domain:: cpp
|
|
|
|
.. highlight:: sh
|
|
|
|
---------------
|
|
pw_test_server
|
|
---------------
|
|
The test server module implements a gRPC server which runs unit tests.
|
|
|
|
Overview
|
|
--------
|
|
The unit test server is responsible for processing requests to run unit tests
|
|
and distributing them among a pool of test workers that run in parallel. This
|
|
allows unit tests to be run across multiple devices simultaneously, greatly
|
|
speeding up their execution time.
|
|
|
|
Additionally, the server allows many tests to be queued up at once and scheduled
|
|
across available devices, making it possible to automatically run unit tests
|
|
from a Ninja build after code is updated. This integrates nicely with the
|
|
``pw watch`` command to re-run all affected unit tests after modifying code.
|
|
|
|
The test server is implemented as a library in various programming languages.
|
|
This library provides the core gRPC server and a mechanism through which unit
|
|
test worker routines can be registered. Code using the library instantiates a
|
|
server with some custom workers for the desired target to run scheduled unit
|
|
tests.
|
|
|
|
The pw_test_server module also provides a standalone ``pw_test_server`` program
|
|
which runs the test server with configurable workers that launch external
|
|
processes to run unit tests. This program should be sufficient to quickly get
|
|
unit tests running in a simple setup, such as multiple devices plugged into a
|
|
development machine.
|
|
|
|
Standalone executable
|
|
---------------------
|
|
This section describes how to use the ``pw_test_server`` program to set up a
|
|
simple unit test server with workers.
|
|
|
|
Configuration
|
|
^^^^^^^^^^^^^
|
|
The standalone server is configured from a file written in Protobuf text format
|
|
containing a ``pw.test_server.ServerConfig`` message as defined in
|
|
``//pw_test_server/config.proto``.
|
|
|
|
At least one ``worker`` message must be specified. Each of the workers refers to
|
|
a script or program which is invoked with the path to a unit test executable
|
|
file as a positional argument. Other arguments provided to the program must be
|
|
options/switches.
|
|
|
|
For example, the config file below defines two workers, each connecting to an
|
|
STM32F429I Discovery board with a specified serial number.
|
|
|
|
**server_config.txt**
|
|
|
|
.. code:: text
|
|
|
|
runner {
|
|
command: "stm32f429i_disc1_unit_test_runner"
|
|
args: "--openocd-config"
|
|
args: "targets/stm32f429i-disc1/py/stm32f429i_disc1_utils/openocd_stm32f4xx.cfg"
|
|
args: "--serial"
|
|
args: "066DFF575051717867013127"
|
|
}
|
|
|
|
runner {
|
|
command: "stm32f429i_disc1_unit_test_runner"
|
|
args: "--openocd-config"
|
|
args: "targets/stm32f429i-disc1/py/stm32f429i_disc1_utils/openocd_stm32f4xx.cfg"
|
|
args: "--serial"
|
|
args: "0667FF494849887767196023"
|
|
}
|
|
|
|
|
|
Running the server
|
|
^^^^^^^^^^^^^^^^^^
|
|
To start the standalone server, run the ``pw_test_server`` program with the
|
|
``-server`` flag and point it to your config file.
|
|
|
|
.. code:: text
|
|
|
|
$ pw_test_server -server -config server_config.txt -port 8080
|
|
|
|
|
|
Sending test requests
|
|
^^^^^^^^^^^^^^^^^^^^^
|
|
To request the server to run a unit test, the ``pw_test_server`` program is
|
|
run in client mode, specifying the path to the unit test executable through a
|
|
``-test`` option.
|
|
|
|
.. code:: text
|
|
|
|
$ pw_test_server -host localhost -port 8080 -test /path/to/my/test.elf
|
|
|
|
This command blocks until the test has run and prints out its output. Multiple
|
|
tests can be scheduled in parallel; the server will distribute them among its
|
|
available workers.
|
|
|
|
Library APIs
|
|
------------
|
|
To use the test server library in your own code, refer to one of its programming
|
|
language APIs below.
|
|
|
|
.. toctree::
|
|
:maxdepth: 1
|
|
|
|
go/docs
|