DIVA: DIsplay testing & Validation Architecture
DIVA is the automated testing system with display capture. I created this system for checking display out of a target device remotely. Yes, it's built for personal purpose.
Why DIVA?
I'm interested in the gpu/drm development, so I needed to check the display output.
I've tried to use LAVA but it's not the best system for display test - for example, I can see the boot log but unit test cases are not enough and it's for the headless system for upstream kernel maintenance. So I decided to build it by myself in free time. It's not mature at this moment but I'll try to keep enhancing features.
How it works
The user accesses the web page and choose the test case.
1) Server requests the test to the target device and capturing display output of the target.
2) Target device starts the unit test. During the test, HDMI output is recorded by external component, 'display capture'.
3) After the test is done, recorded video is transferred to the server.
4) Finally, the server creates a test result page for the user.
Block diagram
All diva components are in local network. Only diva-server interacts with a user through the internet. Of course, the user in LAN is also available.
Components
diva-server
I've been developing the diva-server on CuBox-i. This is the Freescale i.MX6 tiny computer, it's enough to run apache webserver based on Debian Linux.
Please see the index page below.
Here is the test result page which shows the device information, test log and captured video.
Source code: https://github.com/milokim/diva-server
diva-target
Unit test runs on NanoPi M1. Video signal goes to the display capture board (diva-dispcapture). Dogtail (GUI automated test tool) and glmark-es2 (GPU benchmark tool) are executed on this board and the display is captured during the test.
Dogtail and glmark-es2 are examples. We can add any unit tests here. I'm creating unit test cases for i915 graphic driver - not completed yet.
- Will test CPU suspend/resume
- Will test display mode transition - primary, secondary, mirror and off
Source code: https://github.com/milokim/diva-target As of now, this code only supports NanoPi M1 tests. The i915 test cases will be updated later.
diva-dispcapture
RaspberryPi 2 + PiCapture enable capturing HDMI signal from the target device.
- HDMI signal from target device (ex: NanoPi M1)
- PiCapture transforms it into MIPI CSI2 signal
- RPi2 captures CSI2 (like camcorder) and converts h264 to mp4
Source code:https://github.com/milokim/diva-dispcapture
TODO
- diva-server: job request through the ssh. generate static pages
- diva-target: use separate files (json or xml) for supporting unit test
- diva-dispcapture: support preview for display mode transition event from the target device