Design Decisions

This document outlines the design decisions influencing the development of labgrid.

Out of Scope

Out of scope for labgrid are:

Integrated Build System

In contrast to some other tools, labgrid explicitly has no support for building target binaries or images.

Our reasons for this are:

  • Several full-featured build systems already exist and work well.

  • We want to test unmodified images produced by any build system (OE/Yocto, PTXdist, Buildroot, Debian, …).

Test Infrastructure

labgrid does not include a test framework.

The main reason is that with pytest we already have a test framework which:

  • makes it easy to write tests

  • reduces boilerplate code with flexible fixtures

  • is easy to extend and has many available plugins

  • allows using any Python library for creating inputs or processing outputs

  • supports test report generation

Furthermore, the hardware control functionality needed for testing is also very useful during development, provisioning and other areas, so we don’t want to hide that behind another test framework.

In Scope

  • usable as a library for hardware provisioning

  • device control via:

    • serial console

    • SSH

    • file management

    • power and reset

  • emulation of external services:

    • USB stick emulation

    • external update services (Hawkbit)

  • bootstrap services:

    • fastboot

    • imxusbloader

Further Goals

  • tests should be equivalent for workstations and servers

  • discoverability of available boards

  • distributed board access