// TestLab · v1.4.0

UDS validation campaigns.
Hardware optional.

Multi-ECU campaign runner with UDS, DoIP, SOME/IP, and SOVD. Runs in CI against VirtualBus with no hardware, no kernel modules, and no Docker. HTML reports, trend analysis, and AI failure explanation included.

Python-native. Async. All 14 UDS services.

Direct API

async with UdsTester("vcan0",
    rx_id=0x7DF, tx_id=0x7E8) as ecu:

    await ecu.session(Session.EXTENDED)
    await ecu.security_access(level=1)

    vin = await ecu.read_did(0xF190)
    await ecu.write_did(0xF187, b"PARTNUM0001")

    await ecu.clear_dtcs(group=0xFFFFFF)
    dtcs = await ecu.read_dtcs()

    await ecu.session(Session.DEFAULT)

Campaign YAML

jobs:
  eol_check:
    description: End-of-line UDS validation
    on_failure: continue
    steps:
      - action: session
        value: extended
      - action: security_access
        level: 1
      - action: read_did
        did: "0xF190"
        expect_ok: true
      - action: write_did
        did: "0xF187"
        data: "50415254"
      - action: clear_dtc
        group: "0xFFFFFF"
      - action: read_dtc
        expect_nrc: null
  • All 14 UDS services — same as EDS, async Python, AES-128-CMAC SecurityAccess
  • All transports — Linux SocketCAN, PEAK PCAN, Kvaser, DoIP over TCP, SOME/IP, SOVD REST, and in-process VirtualBus
  • expect_nrc — validate that a step correctly returns a negative response. First-class campaign step
  • AI failure analysistestlab explain reads the campaign result and explains each failure with the specific YAML context
  • HTML reports — self-contained, trend across runs, SOME/IP message validation, per-step timing
  • Live dashboardtestlab serve opens a browser view of your ECU fleet, campaign history, and live run output
  • Multi-ECU workspace — mix CAN, DoIP, SOME/IP, and SOVD ECUs in one campaign YAML
  • CI-ready — VirtualBus and VirtualSomeIpBus run in-process, no kernel modules, no hardware
  • Reads diagnostics_config.yaml — automatic ECU configuration when EDS is present
  • Docker ECU simulator — session and security enforcement, full UDS behaviour in-process

Run and report

testlab-run \
  --config diagnostics_config.yaml \
  --campaign campaigns/eol_check.yaml \
  --json reports/run.json

testlab report \
  --results reports/run.json \
  --out report.html

testlab explain \
  --results reports/run.json

Multi-ECU virtual vehicle bench.

VirtualBus, VirtualSomeIpBus, Docker ECU simulation, multi-ECU workspace, and a live dashboard — all shipped, no extra configuration.

# Start the ECU simulator
docker compose -f docker/docker-compose.yml up -d

# Run a mixed UDS + SOME/IP campaign
testlab-run \
  --workspace testlab_workspace.yaml \
  --campaign  campaigns/someip_validation.yaml \
  --job       hvac_validation \
  --someip-virtual \
  --json      reports/run.json

# Open the live dashboard
testlab serve --reports ./reports
# → http://127.0.0.1:8765

No cloud. No auth. No hardware.

One tier. Annual license. Offline after activation.


EDS Developer + TestLab

€1,490/yr

You save €190

Buy bundle →

EDS Professional + TestLab

€2,690/yr

You save €290

Buy bundle →
EDS — diagnostics runtime → Cloud — browser workspace →