Getting started
How to install Testground, and run your first test plan
Installing Testground
Prerequisites
Go 1.16, or higher
Installation
Currently, we don't distribute binaries, so you will have to build from source.
Running Testground
In order to use Testground, you need to have a running Testground daemon.
$TESTGROUND_HOME
is an important directory. If not explicitly set, Testground uses $HOME/testground
as a default. The layout of $TESTGROUND_HOME
is as follows:
Running an example test plan
The first test plan that we will run is the network
test plan and the ping-pong
test case.
The ping-pong
test case starts 2 test plan instances: one that listens on a TCP socket and another that dials it. The test case exercises the sync service as well as the traffic shaping and IP allocation functionality.
Configure $TESTGROUND_HOME
and copy the example network
test plan into the $TESTGROUND_HOME/plans
directory.
Run the network
testplan and the ping-pong
test case with the docker:go
builder and the local:docker
runner.
?> Make sure you have testground daemon
running in another terminal window.
?> During the first run the Testground daemon sets up the builder and runner environments. Subsequent runs will be faster.
You should see a flurry of activity, including measurements, messages, and runtime events. When the execution concludes, you will see something like:
In the local runners, all test plan run outputs and logs are stored at $TESTGROUND_HOME/data
. Collect them into a bundle with the following command (replacing 5222e5df793b
with the corresponding run ID):
Open the bundle and you will find the outputs from the test in there:
Configuration (.env.toml)
.env.toml
is a configuration file read by the Testground daemon and the Testground client on startup.
Testground tries to load this file from $TESTGROUND_HOME/.env.toml
, where $TESTGROUND_HOME
defaults to $HOME/testground
by default.
Changing default daemon bind addresses
You can change the default values by configuring daemon.listen
, client.endpoint
and daemon.scheduler
.env.toml
The endpoint refers to the testground-daemon
service, so depending on your setup, this could be, for example, a Load Balancer fronting the kubernetes cluster and forwarding proper requests to the tg-daemon
service, or a simple port forward to your local workstation:
Customize asynchrony
You can customize the number of asynchronous workers, as well as the maximum queue capacity, i.e., the maximum number of pending tasks at a moment in time. In addition, you can adjust the workers' task time execution limit. This is a handy option, if you have long-running tests
.env.toml
AWS integration
When using a remote runner such as cluster:k8s
, you should configure the default region:
.env.toml
The AWS configuration is also used if you push Docker images to AWS ECR from the docker:go
builder using the --build-cfg push_registry=true
and --build-cfg registry_type=aws
flags.
DockerHub integration
If you want to push Docker images from the docker:go
builder to a DockerHub registry, you can configure it.
.env.toml
Last updated