Skip to content

Releases: labgrid-project/labgrid

v24.0.2

28 Sep 16:40
Compare
Choose a tag to compare

Bug fixes in 24.0.2

v24.0.1

19 Aug 09:12
Compare
Choose a tag to compare

Bug fixes in 24.0.1

  • Add "six" to crossbar-requirements.txt as a stop-gap solution for implicit six usage of txtorcon (a crossbar dependency). Fixes errors such as: ModuleNotFoundError: No module named 'six'

v24.0

12 Aug 13:00
7f2c8fc
Compare
Choose a tag to compare

New Features in 24.0

  • When invoking tests with pytest, the --log-(cli|file)-(level|format)
    command line arguments and their corresponding pytest.ini configure options
    are now respected (making it possible to have different format and logging
    levels in the log file than then console).
  • A new log level called CONSOLE has been added between the default
    INFO and DEBUG levels. This level will show all reads and writes made
    to the serial console during testing.
  • The docker support was extended to support buildx, allowing the build of arm64
    container images.
  • The tool lookup function has been extended to return the original name in case
    the path can't be found. This makes specification of the qemu binary easier to
    use.
  • The bindings base class has been extended, allowing the user to retrieve
    all resources used by a driver.
  • Support for STLink V2 was added.
  • UBootStrategy was extended with a force() function.
  • labgrid was switched from pysnmp to pysnmp-lexstudio.
  • Support for Segger J-Link was added.
  • Place tags are now exposed by the RemotePlace.
  • The sync-places contrib script has gained support for named matches.
  • Remote support for YKush Devices was added.
  • Support for sigrok DMMs was added.
  • Support for Digital Outputs switched via HTTP was added.
  • The QEMUDriver has a new get_qemu_base_args() function which can be used to
    extract the arguments passed to qemu.
  • The SSHDriver has gained support to forward unix sockets.
  • The exporter has gained an --fqdn argument to set the hostname to the
    fully qualified domain name instead of the hostname.
  • The QEMUDriver now has an additional disk_opts property which can be
    used to pass additional options for the disk directly to QEMU
  • All drivers now inherit a logger from the Driver base class and many
    drivers were changed to use this logger.
  • The new poe_mib backend allows switching of power over Ethernet-capable
    ports on switches that use the corresponding SNMP MIB.
  • The RawNetworkInterfaceDriver allows the replay and recording of network
    packets on ethernet interfaces.
  • The i.MX93 usb loader USB ID has been added to the IMXUSBLoader resource.
  • Support for udev matched GPIOs has been added.
  • labgrid-client now has a write-files subcommand to copy files onto mass
    storage devices.
  • The NetworkPowerPort supports a new backend ubus. It controls PoE
    switches running OpenWrt using the ubus interface.
  • The pyproject.toml gained a config for ruff <https://github.com/astral-sh/ruff>_.
  • setuptools_scm is now used to generate a version file.
  • labgrid-client console will fallback to telnet if microcom is not available.
  • A power backend for tinycontrol.eu IP Power Socket 6G10A v2 was added.
  • Labgrid now publishes arm64 docker images.
  • Labgrid's YAML parser will now warn when mapping keys are duplicated and thus
    overwritten.
  • LC USB Relais are now supported.

Bug fixes in 24.0

  • The pypi release now uses the labgrid pyserial fork in the form of the
    pyserial-labgrid package. This fixes installation with newer versions
    of pip.
  • Several tests have gained an importorskip() call to skip them if the
    module is not available.
  • labgrid now uses its own pyserial fork from pypi since installation from
    github as an egg is no longer properly supported.
  • The build-and-release workflow supports building wheels.
  • Fix named SSH lookups in conjunction with an environment file in
    labgrid-client.
  • The crossbar virtual-environment now needs to be separate from the labgrid
    environment, for more information please consult the current documentation <https://labgrid.readthedocs.io/en/latest/getting_started.html#coordinator>_.
  • The markers now are restricted to patterns which won't match WARN,
    ERROR, INFO and similar log notifiers.
  • A race inside the SSHDriver cleanup has been fixed.
  • The labgrid-client monitor command now outputs the full resource identifier.
  • Many of the USB loader commands e.g. imx-usb-loader will now print to the
    console when logging is not enabled.
  • An UnboundLocalError inside the atomic_replace code which is used inside the
    coordinator was fixed.
  • Resources of different classes can now have the same name.
  • A bug within the pytest logging setup was fixed.
  • The QemuDriver correctly handles the different command lines for virgl
    enablement.
  • A bug was fixed where resource names were ignored during lookup of the correct
    power driver.
  • ManagedFile was fixed to work with the stat command on Darwin.
  • Instead of using a private member on the pytest config, the labgrid plugin now
    uses the pytest config stash.
  • The ShellDriver was fixed to set the correct status attribute.
  • The USBNetworkInterface now warns if the interface name is set, as it will be
    overwritten by the ResourceManager to assign the correct interface name.
  • Fix sftp option issue in SSH driver that caused sftp to only work once per
    test run.
  • ManagedFile NFS detection heuristic now does symlink resolution on the
    local host.
  • XModem support within the Shelldriver was fixed by removing the newline from
    the marker.
  • A typo in the NFSProviderDriver class was fixed. Documentation was already
    correct, however the classname contained an additional P.
  • The --loop argument for labgrid-client console was fixed.
  • The password for the ShellDriver can now be an empty string.
  • The default crossbar configuration now enables auto-fragmentation to handle
    bigger labs where the payload size can be bigger than 1 megabyte.
  • The SSHDriver redirects /dev/null to stdin of commands run via SSH.
    This prevents unexpected input, especially when using the
    ManualPowerDriver or a REPL.
  • The ser2net version check for YAML configurations in the exporter was
    fixed.
  • The exporter forces ser2net TCP connections for versions >=4.2.0.
  • The retrieval of the DTR status for SerialPortDigitalOutputDriver was
    fixed.
  • The SSHDriver keepalive is now correctly stopped when using existing
    connections.
  • The power backend for raritan devices now supports devices with more than 16
    outlets.
  • The ExternalConsoleDriver now correctly sets the bufsize to zero to
    prevent buffering.

Breaking changes in 24.0

  • Support for Python 3.7 was dropped.

  • Support for the legacy ticket authentication was dropped: If the coordinator
    logs ModuleNotFoundError on startup, switch the crossbar config to anonymous
    authentication (see .crossbar/config-anonymous.yaml for an example).

  • The Debian package (debian/) no longer contains crossbar. Use the
    coordinator container <https://hub.docker.com/r/labgrid/coordinator>_ or
    install it into a separate local venv as described in the
    documentation <https://labgrid.readthedocs.io/en/latest/getting_started.html#coordinator>_.
    If you see WARNING: Ticket authentication is deprecated. Please update your coordinator. on the client when running an updated coordinator, your
    coordinator configuration may set ticket instead of anonymous auth.

  • The StepReporter API has been changed. To start step reporting, you must
    now call StepReporter.start() instead of StepReporter(), and set up
    logging via labgrid.logging.basicConfig().

  • Logging output when running pytest is no longer sent to stderr by default,
    since this is both chatty and also unnecessary with the improved logging
    flexibility. It it recommended to use the --log-cli-level=INFO command
    line option, or log_cli_level = INFO option in pytest.ini, but if you
    want to restore the old behavior add the following to your conftest.py
    file (note that doing so may affect the ability to use some more advanced
    logging features)::

    def pytest_configure(config):
    import logging
    import sys

       logging.basicConfig(
           level=logging.INFO,
           format='%(levelname)8s: %(message)s',
           stream=sys.stderr,
       )
    
  • The interpretation of the -v command line argument to pytest has changed
    slightly. -vv is now an alias for --log-cli-level=INFO (effectively
    unchanged), -vvv is an alias for --log-cli-level=CONSOLE, and
    -vvvv is an alias for --log-cli-level=DEBUG.

  • The BareboxDriver now remembers the log level, sets it to 0 on initial
    activation/reset and recovers it on boot(). During
    run()/run_check() the initially detected log level is used.

  • The NFSProviderDriver now returns mount and path information on stage()
    instead of the path to be used on the target. The previous return value did
    not fit the NFS mount use case.

  • The NFSProvider and RemoteNFSProvider resources no longer expect the
    internal and external arguments as they do not fit the NFS mount use
    case.

Known issues in 24.0

  • Some client commands return 0 even if the command failed.

v23.0.6

16 Apr 12:06
Compare
Choose a tag to compare

Bug fixes in 23.0.6

  • In USBVideoDriver, use the playbin3 element instead of playbin to fix decoding via VA-API for certain webcams on AMD graphic cards.
  • Let the SSHDriver redirect /dev/null to stdin on run() to prevent unexpected consumption of stdin of the remotely started process.
  • Cover more failure scenarios in the exporter and coordinator systemd services, fix the service startup order, do not buffer journal logs.

v23.0.5

13 Jan 14:24
Compare
Choose a tag to compare

Bug fixes in 23.0.5

  • Fix readthedocs build by specifying Python version and OS.
  • Fix several incompatibilities with doc sphinxcontrib-* dependencies having dropped their explicit Sphinx dependencies, which prevented generation of labgrid's docs.

v23.0.4

10 Nov 16:10
Compare
Choose a tag to compare

Bug fixes in 23.0.4

  • Fix dockerfiles syntax error that became fatal in a recent docker release.
  • Fix ShellDriver's xmodem functionality.
  • Pin pylint to prevent incompatibility with pinned pytest-pylint.
  • Fix labgrid-client console --loop on disappearing serial ports (such as on-board FTDIs).

v23.0.3

20 Jul 14:27
Compare
Choose a tag to compare

Bug fixes in 23.0.3

v23.0.2

04 Jul 11:02
Compare
Choose a tag to compare

Bug fixes in 23.0.2

  • Move SSHDriver's control socket tmpdir clean up after the the SSH process
    has terminated. Ignore errors on cleanup since it's best effort.
  • Add missing class name in labgrid-client monitor resource output.
  • Print USB loader process output if log level does not cover logging it.
  • Fix UnboundLocalError in atomic_replace() used by the coordinator and
    labgrid-client export to write config files.
  • Let Config's get_tool() return the requested tool if it is not found in
    the config. Return the resolved path if it exists, otherwise return the value
    as is. Also drop the now obsolete tool fallbacks from the drivers and add
    tests.
  • Fix USBSDMuxDevice/USBSDWireDevice udev race condition leading to
    outdated control/disk paths.
  • Fix SSHDriver's explicit_sftp_mode option to allow calls to put()
    and get() multiple times. Also make scp() respect this option.
  • Add compatibility with QEMU >= 6.1.0 to QEMUDriver's display argument
    for the egl-headless option.

v23.0.1

26 Apr 14:11
Compare
Choose a tag to compare

Bug fixes in 23.0.1

  • The pypi release now uses the labgrid pyserial fork in the form of the
    pyserial-labgrid package. This fixes installation with newer versions
    of pip.
  • Several tests have gained an importorskip() call to skip them if the
    module is not available.
  • The build-and-release workflow supports building wheels.
  • The markers now are restricted to patterns which won't match WARN,
    ERROR, INFO and similar log notifiers.
  • Fix named SSH lookups in conjunction with an environment file in
    labgrid-client.

v23.0

24 Apr 17:29
995b699
Compare
Choose a tag to compare

New Features in 23.0

  • Python 3.6 support has been dropped.
  • Exporter config templates now have access to the following new variables:
    isolated (all resource accesses must be tunneled True/False),
    hostname (of the exporter host), name (of the exporter).
  • ModbusRTU driver for instruments
  • Support for Eaton ePDU and TP-Link power strips added, either can be used as
    a NetworkPowerPort.
  • The example strategies now wait for complete system startup using systemctl.
  • Consider a combination of multiple "lg_feature" markers instead of
    considering only the closest marker.
  • There is a new get_strategy helper function which returns the strategy of
    the target.
  • labgrid-client now supports an export command which exposes the resource
    information as environment variables.
  • Newer C920 webcams are now supported.
  • The pytestplugin now correctly combines feature markers instead of replacing
    them.
  • The ConsoleLoggingReporter is now exported for library usage.
  • The HD 2MP Webcam is now supported by the video-driver.
  • TP-Link power strips are supported by the NetworkPowerDriver.
  • A ModbusRTUResource and Driver has been added to control RS485 equipment.
  • The strategies within labgrid learned the force() function.
  • The labgrid client SSH command is now able to instantiate the SSHDriver when
    there are multiple NetworkService resources available.
  • eg_pms2_network power port driver supports controlling the Energenie power
    management series with devices like the EG_PMS2_LAN & EG_PMS2_WLAN.
  • The client and coordinator learned of a new "release-from" operation that
    only releases a place if it acquired by a specific user. This can be used to
    prevent race conditions when attempting to automate the cleanup of unused
    places (e.g. in CI jobs).
  • ModbusTCPCoil driver supports writing using multiple coils write method
    in order to make driver usable with Papouch Quido I/O modules.
  • If supported, ser2net started by the exporter now allows multiple connections.
  • SmallUBootDriver driver now supports wide range of Ralink/mt7621 devices
    which expects boot_secret without new line with new boot_secret_nolf
    boolean config option.
  • More USBVideo devices have been added.
  • labgrid now uses a custom yaml loader/dumper.
  • labgrid-client add-match/add-named-match check for duplicate matches
  • DFUDriver has been added to communicate with a DFUDevice, a device in DFU
    (Device Firmware Upgrade) mode.
  • labgrid-client dfu added to allow communication with devices in DFU mode.
  • Support for QEMU Q35 machine added.
  • UBootDriver now handles idle console, allowing driver activation on
    an interrupted U-Boot.
  • Support for the STLINK-V3 has been added to the USBDebugger resource.
  • labgrid-suggest can now suggest matches for a USBPowerPort used by power
    switchable USB hubs.
  • AndroidFastboot is now deprecated and was replaced by AndroidUSBFastboot. This
    is more consistent with the AndroidNetFastboot support.
  • In case multiple matches are found for a driver, labgrid-client now outputs
    the available names.
  • ProcessWrapper now supports an "input" argument to check_output() that allows
    a string to be passed to stdin of the process.
  • The NetworkInterfaceDriver now supports local and remote SSH port
    forwarding to/from the exporter.
  • labgrid was switched over to use pyproject.toml.
  • A contrib script was added to export coordinator metrics to stasd.
  • The SSH connection timeout can now be globally controlled using the
    LG_SSH_CONNECT_TIMEOUT environment variable.
  • The QEMUDriver now supports a display option which can specify if an
    display device should be created. none (the default) will not create a
    display device, fb-headless will create a headless framebuffer device
    for software rendering, and egl-headless will create a headless GPU
    device for accelerated rendering (but requires host support).
  • The AndroidFastbootDriver now supports interaction with network devices in
    fastboot state.
  • Add bash completion for labgrid-client.
  • The QEMUDriver now support a nic property that can be used to create a
    network interface when booting.
  • The SSHDriver now correctly uses the processwrapper for rsync.
  • The QEMUDriver now supports API to add port-forwarding from localhost.
  • The get() method for sdwire has been added.
  • If there are multiple named resources for a target, one of them can be named
    "default" to select it automatically if no explicit other name is given.
  • labgrid-client has been extended with --name/-n for most commands. This allows
    attaching multiple power sources/usb-muxes and switching them individually
    from the command line.
  • Add DediprogFlashDriver and DediprogFlasher resource.
  • Add support for Digital Loggers PDU.
  • Add support for Shelly power switches.
  • Make labgrid-client use crossbar_url and crossbar_realm from ennvironment
    config.

Bug fixes in 23.0

  • The exporter now exports sysfsgpios during place acquire/release, fixing a
    race in the sysfspgio agent interface.
  • Fixed a bug where using labgrid-client io get always returned low
    when reading a sysfsgpio.
  • Fix labgrid-client exit code on keyboard interrupt.
  • Fixed labgrid-client forward --remote/-R, which used either the LOCAL
    part of --local/-L accidentally (if specified) or raised an
    UnboundLocalError.
  • Fix udev matching by attributes.
  • Stop Exporter's event loop when register calls fail.
  • Fix exit codes for various subcommands.
  • Omit role and place output for labgrid-client reserve to fix shell
    evaluation.

Breaking changes in 23.0

  • Config's get_option()/get_target_option() convert non-string
    options no longer to strings.
  • UBootDriver's boot_expression attribute is deprecated, it will no
    longer check for the string during U-Boot boot. This allows activating the
    driver on an already running U-Boot.
  • The uuu command handling was fixed for the UUUDriver.
  • UBootDriver boot() method was fixed.
  • Fix proxying of dynamic port power backends with URL in host parameter and
    authentication credentials.
  • The coordinator was switched over to anonymous static authentication. You'll
    have to use the legacy crossbar configuration to support older
    clients/exporters. The 23.1 release will remove support for the legacy ticket
    authentication.
  • AndroidFastboot has been deprecated. Please replace it with the more specific
    AndroidUSBFastboot with the same semantics.

Known issues in 23.0