Testing & Simulation Guide#

This document describes interactive and automated testing for the all-devices-app simulator.

This application is used as a test target for Python integration scripts and chip-tool.


1. Interactive Verification via chip-tool#

Prerequisite: Compile Target Applications#

Before interactive testing, compile both the simulator and chip-tool from source:

source scripts/activate.sh
./scripts/build/build_examples.py --target linux-x64-all-devices-clang build
./scripts/build/build_examples.py --target linux-x64-chip-tool-clang build

Use chip-tool to commission the simulator and execute Interaction Model commands.

Launch the Simulator (Terminal A)#

Clean up persistent storage and launch a multi-endpoint topology (e.g., an Occupancy Sensor on Endpoint 1 and a Chime on Endpoint 2):

source scripts/activate.sh
rm -rf /tmp/chip_all_devices_kvs
./out/linux-x64-all-devices-clang/all-devices-app \
    --device occupancy-sensor:1 \
    --device chime:2 \
    --KVS /tmp/chip_all_devices_kvs \
    --discriminator 3840

Commission the Target (Terminal B)#

Commission the simulator with chip-tool (assigning Node ID 1):

source scripts/activate.sh
./out/linux-x64-chip-tool-clang/chip-tool pairing onnetwork 1 20202021

Send Operational Commands#

Interact with Code-Driven clusters on specific endpoints:

Occupancy Sensor (Endpoint 1):

# Read the current operational Occupancy state
./out/linux-x64-chip-tool-clang/chip-tool occupancy-sensing read occupancy 1 1

Chime (Endpoint 2):

# Invoke the Chime sound playback command (ChimeID 0 = Ding Dong)
./out/linux-x64-chip-tool-clang/chip-tool chime play-chime-sound 1 2 --ChimeID 0

2. Automated Integration Testing (src/python_testing/)#

The SDK executes Python integration and certification test scripts against all-devices-app.

Setup the Python Environment#

Before running tests, compile and activate the Python virtual environment:

./scripts/build_python.sh -i out/venv --enable_ipv4 true
source out/venv/bin/activate

Execution Method B: Explicit Combined Harness (run_python_test.py)#

To execute tests without CI metadata headers, invoke run_python_test.py:

./scripts/tests/run_python_test.py \
    --factory-reset \
    --app ./out/linux-x64-all-devices-clang/all-devices-app \
    --app-args "--device contact-sensor:1 --discriminator 1234 --KVS /tmp/chip_test_kvs" \
    --script src/python_testing/TC_IDM_2_3.py \
    --script-args "--storage-path admin_storage.json --commissioning-method on-network --discriminator 1234 --passcode 20202021 --PICS src/app/tests/suites/certification/ci-pics-values"

Execution Method C: Decoupled Interactive Harness (Two Terminals)#

For direct GDB attachment or live logging observation, execute the app and script separately:

1. Launch the Target under Test:

./out/linux-x64-all-devices-clang/all-devices-app --device on-off-light:1 --discriminator 1234 --KVS /tmp/test_kvs

2. Execute the verification script:

source out/venv/bin/activate
python3 src/python_testing/TC_IDM_2_3.py \
    --storage-path admin_storage.json \
    --commissioning-method on-network \
    --discriminator 1234 \
    --passcode 20202021 \
    --endpoint 1