To create a new umockdev test, you should:

 1. Decide on what to test, the easiest case is just using the existing
    capture test case.
 2. Find the USB device you are testing with lsusb, e.g.:
     Bus 001 Device 005: ID 138a:0090 Validity Sensors, Inc. VFS7500 Touch Fingerprint Sensor
    This means we need to record USB device /dev/bus/usb/001/005
 3. Run "umockdev-record /dev/bus/usb/001/005 >device"
    This records the information about device, it should be placed into test/DRIVER/device
 4. Run the test, for a capture test this would be:
      umockdev-record -i /dev/bus/usb/001/005=capture.ioctl -- ./capture.py capture.png
    This will create a capture.ioctl and capture.png file.
    Please set the FP_DEVICE_EMULATION=1 environment variable. You may need
    to adjust the driver to adapt to the emulated environment (mainly if it
    uses random numbers, see synaptics.c for an example).
 5. Place all files into the driver subdirectory test/DRIVER,
    i.e. device, capture.ioctl, capture.png
 6. Add glue to meson.build
 7. Test whether everything works as expected

Please note, there is no need to use a real finger print in this case. If
you would like to avoid submitting your own fingerprint then please just
use e.g. the side of your finger, arm, or anything else that will produce
an image with the device.


Note that umockdev-record groups URBs aggressively. In most cases, manual
intervention is unfortunately required. In most cases, drivers do a chain
of commands like e.g. A then B each with a different reply. Umockdev will
create a file like:

A
 reply 1
 reply 2
B
 reply 1
 reply 2

which then needs to be re-ordered to be:

A
 reply 1
B
 reply 1
A
 reply 2
B
 reply 2

Other changes may be needed to get everything working. For example the elan
driver relies on a timeout that is not reported correctly. In this case the
driver works around it by interpreting the protocol error differently in
the virtual environment.