Skip to content

Testing and Local Development Notes

Requirements and known quirks for building and running the Digital Rebar Provision test suite locally. This is a living reference — add gotchas here as they are discovered.

Filesystem: user extended attributes are required

The DRP static file store requires its backing directory to support user extended attributes (user.* xattrs). On startup DRP probes this by setting and then removing a user.dtwal attribute on the files directory; if that fails it aborts with an error like:

Text Only
Failed setting user extended attributes at <path>: ...

The test suite builds throwaway DRP instances under a temporary directory (by default beneath /tmp). On systems where /tmp is mounted as tmpfs — common on some Linux distributions and laptops — tmpfs does not support user.* xattrs, so those instances fail to start and the tests error out.

Work around it by pointing the tests' temporary directory at a filesystem that supports user extended attributes (for example ext4 or xfs) rather than tmpfs:

Bash
export TMPDIR="$HOME/tmp"    # a directory on an ext4/xfs filesystem
mkdir -p "$TMPDIR"

Skipping the cluster (HA) tests

The CLI integration tests in clitest/common_test.go stand up a passive (consensus/HA) node in addition to the primary. That adds significant setup time and can be flaky during local iteration. A toggle in the shared setup guards that block:

Go
//if false {
if true {
    // ... stand up the passive / cluster node ...

Flip the active if true to if false (the commented //if false { above it is there for exactly this) to skip the cluster setup while iterating locally.

Warning

This is a local-only convenience — do not commit the flipped toggle. The cluster tests must still run in CI.

Other quirks

Add newly-discovered testing requirements and quirks here.