Test agent
The test agent is a Wenenu component that can execute test steps. Test agents can be self-hosted by the users or in certain situations Wenenu can place a test agent at a location only for the duration of the testing. Every test step must be assigned to a test agent for execution.
For security reasons, some of the test steps, for example, starting and stopping an Azure Site Recovery recovery plan, are executed on Wenenu managed test agents. |
Test agent communication
Test agents do not require incoming network connections, they only need to be able to call the Wenenu servers over HTTPS on port 443. A test agent periodically calls the Wenenu servers to check if there is any test step to execute. An idle agent makes a call every 30 seconds by default. During test step execution the agent might make keepalive calls depending on how long the test step takes to execute. Once the test step execution is finished the agent makes another call to report the results.
Calling the Wenenu test agent API generates usage charges. See our pricing page for the details. |
Test agents must identify themselves using a unique key when they call the Wenenu test agent API. To obtain a key, a virtual test agent resource must be created in Wenenu. Users can have up to 200 virtual test agents. Virtual test agents have an arbitrary name and two keys for uninterrupted key rotations. The keys can be accessed via the Wenenu user interface or the Wenenu API. Users can regenerate the two keys at their convenience.
Users need Wenenu Owner or Wenenu Test Agent Administrator roles to manage virtual test agents. |
Test step execution
Test agents are deployed inside docker containers and they execute test steps inside separate docker containers. It means the docker container hosting the test agent must run in privileged mode to be able to start additional docker containers. A test agent can execute multiple test steps at the same time, four concurrent steps by default.
Test steps executed by a test agent are running isolated inside their docker container. Test steps have no ways to access the data of other steps. Test steps belonging to the same test scenario share a common directory that is mounted to their docker containers. The directory is mounted under /tests
which is the current directory when the test step execution starts. Test steps can share data with other steps in the same test scenario by writing and reading files in the directory. Changes made outside this directory are lost as the test step execution is finished.
Docker images required for the test step executions are downloaded only when needed. The first time a test agent executes a test step with a certain type, it downloads the appropriate image from the same repository from where the image of the test agent was downloaded.
Self-hosting test agents
A test agent can run anywhere where running docker images is possible. The test agent’s image is an Ubuntu amd64 base image containing the required packages to run the test agent. The test agent downloads additional docker images to execute test steps and runs them as Docker containers inside its container. The test agent’s host container must run in privileged mode to start new containers.
The test agent will only start test step containers and that do not run in privileged mode. Still, the test agent container runs in privileged mode and has access to other containers run by the host. Users need to consider this when choosing a place for a self-hosted agent. It is the safest to run the test agent container without siblings. |
Starting the agent
The test agent can be configured by setting environment variables for the docker container. Setting WENENU_API_HOST
and WENENU_API_KEY
environment variables is mandatory. The agent can be started with the following docker command.
$ docker run -d --privileged --name wenenu_agent \
-e WENENU_API_HOST="https://wenenu.com" \
-e WENENU_API_KEY="TEST_AGENT_KEY" \
wenenu/wenenutestagent:latest
Additional configuration options are available as shown in the following table.
Name | Type | Required | Description |
---|---|---|---|
WENENU_API_HOST |
string |
True |
The host of the Wenenu test agent api, e.g. https://wenenu.com |
WENENU_API_KEY |
string |
True |
Secret key of the test agent for authentication |
WENENU_CONFIG_WORKER_THREADS |
integer |
False |
Sets the maximum number of concurrent step executions. Defaults to 4. |
WENENU_CONFIG_TESTS_DISK_DIRECTORY |
string |
False |
Sets location of the directory where the files of the test steps are stored |
Hardware requirements
The hardware requirements of the test agent depend on multiple factors. If the test agent executes multiple test steps in parallel, or it executes custom memory heavy programs it might require more memory. In the same way, it might need more storage based on the type of activities it performs. The minimum hardware requirement for a test agent that only executes test steps sequentially and that is capable of storing all the test step images is 1 GB of memory and 20 GB of storage. 4 GB of memory and 40 GB of storage are recommended for a test agent using the default configuration.
Troubleshooting
The test agent logs to the standard output. Checking the logs is useful to see if there are connectivity or other issues that prevent the agent from running test steps. The log stream can be watched using the following docker command.
$ docker logs -f wenenu_agent