Nard offer a regression testing cloud service to fulfill product requirements. As part of your nightly builds the final SD-card image can be uploaded to our TaaS where an automated audit will take place. If all tests pass one can be pretty sure the binary image work as expected.
The audit is accomplished on real hardware. A Raspberry Compute Module is connected via custom built electronics to a dedicated server for thorough monitoring and control during the tests. Uploaded SD-card images fully replace the Raspberry flash content and thus the system can always be recovered should it need to. Don't worry if you blunder and brick the device – Nard TaaS will heal automatically. The service is fully integrated into the build system and issued with a simple command:
Had the audit failed make test would have exited with an error instead. This is perfect for Continuous Integration (CI) with Jenkins or even a daily scheduled cron job. It's a good habit to audit your upgrades before sending them away to any remotely located device.
Specifying what to test is done with a configuration that accompanies the product recipe. (Remember that recipes inherit from each other and "add up".) Here is a simplified example:
This will test that SSH, I2C and SD-card hotplugging works in your image. Any product building "on top" of the board raspi_x_revx will do those tests too. Here is complete list of what can be specified in taasSeqs:
|heartbeat||The slowly flashing green LED, indicating watchdog is running|
|net||IPv4 and discoverable with make scan and broadcast ping|
|ssh||SSH and SCP login with the key generated during build|
|syslog||Sets clock with NTP and verify system log|
|automount||Mounts SD-card only when in use|
|sys||Misc basics, such as correct file ownerships|
|gdb||cross-compilig with flags for debugability of everything (incl. syslibs)|
|usb||Hotplug and mount a USB memorystick|
|sqlite||Creates a SQLite database|
|openssl||Creates an encrypted connection to a webserver|
|wget-https||Downloads from a webserver with TLS encryption|
|python2||Basic Python 2.7 language|
|i2c||I2C communication and related drivers|
|samba||Windows shares exporting and mounting|
|perl||Basic Perl language|
|minidlna||The MiniDLNA daemon (UPnP)|
|rrdtool||Data logging and statistics graphing|
|sdcard||Hotswap the SD-card|
If you need widened tests for a custom product; contact the authors.
The service is provided "as is" without warranty of any kind. It is used internally by Nard developers and when idle made available publicly. Please use it responsibly since it's a shared resource!
Functionality and bugfixes are first added into the project GIT development branch. Occasionally, when it becomes stable, it's merged into the master branch and a release is made. Detailed source code history is available in the repository:
A source code modification summary is published in the Changelog at each stable release.