The goal is to create a flexible testing framework to test the VirtualBox audio stack.
It should be runnable with an easy-to-use setup so that also regular users can perform tests on request, without having to install or set up additional dependencies.
That framework must be runnable on all host/guest combinations together with all audio drivers ("backends") and device emulations being offered. This makes it a rather big testing matrix which therefore has to be processed in an automated fashion.
Additionally it should be flexible enough to add more (custom) tests later on.
The framework consists of several components which try to make use as much of the existing audio stack code as possible. This allows the following operation modes:
The following components are in charge for performing the audio tests (depends on the operation mode, see above):
VBoxAudioTest (also known as VKAT, "Validation Kit Audio Test"): A binary which can perform the standalone audio tests mentioned above, as well as acting as the guest and host service(s) when performing manual or automated tests. It also includes the analysis / verification of audio test sets. VKAT also is included in host installations and Guest Additions since VirtualBox 7.0 to give customers and end users the opportunity to test and verify the audio stack.
See the syntax help ("--help") for more.
ATS ("Audio Testing Service"): Component which is being used by 1 and the Validation Kit audio driver (backend) to communicate across guest and host boundaries. Currently using a TCP/IP transport layer. Also works with VMs which are configured with NAT networking ("reverse connection").
Validation Kit audio test driver (tdAudioTest.py): Used for integrating and invoking VKAT for manual and automated tests via the Validation Kit framework (Test Manager). Optional. The test driver can be found at [1].
Validation Kit audio driver (backend): A dedicated audio backend which communicates with VKAT running on the same host to perform the actual audio tests on a VirtualBox installation. This makes it possible to test the full audio stack on a running VM without any additional / external tools.
On guest playback, data will be recorded, on guest recording, data will be injected from the host into the audio stack.
and are either packed as .tar.gz archives or consist of a dedicated directory per test set.
There always must be at least two test sets - one from the host side and one from the guest side - to perform a verification.
Each test set contains a test tag so that matching test sets can be identified.
The above components are also included in VirtualBox release builds and can be optionally enabled (disabled by default).
[1] | src/VBox/ValidationKit/tests/audio/tdAudioTest.py |
VM needs to be configured to have audio emulation and audio testing enabled (via extra-data, set "VBoxInternal2/Audio/Debug/Enabled" to "true").
Audio input / output for the VM needs to be enabled (depending on the test).
Start VBoxAudioTest on the guest, for example:
VBoxAudioTest test --mode guest --tcp-connect-address 10.0.2.2
VirtualBox 7.0.
steps necessary in order to be able to reach the host from the guest. See the VirtualBox manual for more information.
Follow "Setup instructions".
Start VBoxAudioTest on the host with selected test(s), for example:
VBoxAudioTest test --mode host
- Note: VBoxAudioTest is included with the VirtualBox 7.0 host installers and
will be installed by default.
By default the test verification will be done automatically after running the tests.
VBoxAudioTest can manually be used with the "verify" sub command in order to (re-)verify previously generated test sets. It then will return different exit codes based on the verification result.
When a single test is being executed on a running VM, the following (simplified) workflow applies:
Status: | $Id: VBoxAudioValidationKitReadMe.html 98107 2023-01-17 22:56:50Z vboxsync $ |
---|---|
Copyright: | Copyright (C) 2021-2023 Oracle Corporation. |