How to validate the deployment

Anbox Cloud includes a test suite which allows the validation of an Anbox Cloud deployment. It comes with various tests covering different features of Anbox Cloud and can be used to ensure everything works as expected.

The validation tests currently cover the following areas of an Anbox Cloud deployment:

  • AMS

    • Instance creation and deletion in different configurations

    • Expected images are present

    • Configuration is setup as expected

  • Anbox Stream Gateway API

    • Session creation and deletion

    • Stress testing

  • Streaming

    • Stream selected applications in different configurations from Anbox Cloud while ensuring performance is as expected

Install Validation Tests

The validation tests are packaged as a snap and are distributed via the Canonical snap store. You can install them via

snap install anbox-cloud-tests

Configure the Validation Tests

To run the validation tests, you must generate a configuration file for it first. The tests include an interactive generator that you can use to generate the configuration file. Run the following command:

anbox-cloud-tests -generate-config

The generator will then guide you through the configuration:

Do you want to test AMS? [default=yes]
What is the address of AMS? https://1.2.3.4:8444
Generating TLS certificate and key for AMS ...
NOTE: You have to register the certificate generated manually with
 AMS. See https://anbox-cloud.io/docs/manage/managing-ams-access for
 details
Do you want to test the Anbox Stream Gateway? [default=yes]
What is the location of the Anbox Stream Gateway? https://2.3.4.5
Which API token should the tests use to talk with the gateway? xxxx
Is the TLS certificate used by the gateway self signed? [default=yes]
Which application should be used to test the gateway? my-test-app
Do you want to test streaming from your Anbox Cloud deployment? [default=yes]
Which application should be used to test the streaming? my-test-app
Please save the following configuration to a separate file:
services:
    ams:
        url: https://1.2.3.4:8444
        tls:
            key: |
                ...
            certificate: |
                ...
    gateway:
        location: https://2.3.4.5
        auth-token: xxxx
        allow-insecure: true
suites:
    gateway:
        application: my-test-app
    streaming:
        application: my-test-app
        supported-modes:
            - width: 1280
              height: 720
              fps: 30
            - width: 1280
              height: 720
              fps: 60
            - width: 1280
              height: 720
              fps: 25
        execution-time: 5m
        allowed-fps-stddev: 5
        dump-path: ""
    ams:
        supported-architectures:
            - arm64
            - x86_64
        platforms:
            - none
            - swrast
            - webrtc
        instance-types:
            - a2.3
            - a4.3
        gpu-type: none

As mentioned by the command you have to store the printed configuration to a file so it can be used by the tests later on. Also you need to register the generated TLS certificate for the AMS tests with AMS. See How to control AMS remotely for more details on how to do that.

Depending on your deployment you can further customise the generated configuration. For example may your deployment only support a single architecture for the instances. For that make sure the suites.ams.supported-architectures field is set to the right list of architectures.

If you have support for real GPUs, set the suites.ams.gpu-type item to the right GPU type (supported values are: nvidia, amd, intel, none) and add GPU based instance types (see Instance type for more details) to the suites.ams.instance-types.

Run the Validation Tests

You can run the validation tests with the following command:

anbox-cloud-tests -config config.yaml -ginkgo.v

If you want to focus on a specific subset of the tests you can specify a focus for the tests:

anbox-cloud-tests -config config.yaml -ginkgo.v -ginkgo.focus=streaming

The following focus areas are available

  • streaming

  • gateway

  • ams