canonical / matter-pi-gpio-commander

Matter Raspberry Pi GPIO Commander - Turn your Pi into a Matter lighting device!
Apache License 2.0
90 stars 3 forks source link

Test: Add Thread test to be manually run. #68

Closed locnnil closed 3 weeks ago

locnnil commented 2 months ago
farshidtz commented 3 weeks ago

Tested on a Pi5, works well:

$ REMOTE_SNAP_PATH=matter-pi-gpio-commander_44.snap REMOTE_GPIO_CHIP="4" REMOTE_GPIO_LINE="4" LOCAL_INFRA_IF="enp2s0" REMOTE_INFRA_IF="eth0" REMOTE_USER="****" REMOTE_PASSWORD="****" REMOTE_HOST="192.168.1.24" go test -v -failfast -count 1 ./thread_tests/
=== RUN   TestThread
    snap.go:62: [exec] sudo snap remove --purge chip-tool
    exec.go:140: [stderr] snap "chip-tool" is not installed
2024/06/10 17:20:58 [exec] sudo snap install chip-tool --channel=latest/edge
2024/06/10 17:21:03 [stdout] chip-tool (edge) 5ee4ef6f+snap from Canonical IoT Labs installed
    snap.go:81: [exec] sudo snap connect chip-tool:avahi-observe 
    snap.go:81: [exec] sudo snap connect chip-tool:bluez 
    snap.go:81: [exec] sudo snap connect chip-tool:process-control 
    snap.go:62: [exec] sudo snap remove --purge openthread-border-router
    exec.go:140: [stderr] snap "openthread-border-router" is not installed
    snap.go:28: [exec] sudo snap install openthread-border-router --channel=latest/edge
    exec.go:140: [stdout] openthread-border-router (edge) thread-reference-20230710+snap from Canonical IoT Labs installed
2024/06/10 17:21:10 [exec] sudo snap connect openthread-border-router:avahi-control 
2024/06/10 17:21:11 [exec] sudo snap connect openthread-border-router:firewall-control 
2024/06/10 17:21:11 [exec] sudo snap connect openthread-border-router:raw-usb 
2024/06/10 17:21:12 [exec] sudo snap connect openthread-border-router:network-control 
2024/06/10 17:21:13 [exec] sudo snap connect openthread-border-router:bluetooth-control 
2024/06/10 17:21:14 [exec] sudo snap connect openthread-border-router:bluez 
2024/06/10 17:21:15 [exec] sudo snap set openthread-border-router infra-if='enp2s0'
    snap.go:161: [exec] sudo snap start --enable openthread-border-router
    exec.go:140: [stdout] Started.
    local.go:105: Retry 1/10: Waiting for expected content in logs: Start Thread Border Agent: OK
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    local.go:109: Found expected content in logs: Start Thread Border Agent: OK
    local.go:57: [exec] sudo openthread-border-router.ot-ctl dataset init new
    local.go:58: [exec] sudo openthread-border-router.ot-ctl dataset commit active
    local.go:59: [exec] sudo openthread-border-router.ot-ctl ifconfig up
    local.go:60: [exec] sudo openthread-border-router.ot-ctl thread start
    config.go:59: Retry 1/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 2/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 3/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 4/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 5/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 6/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 7/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 8/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:59: Retry 9/10: Waiting for expected content in logs: Thread Network
    snap.go:138: [exec] sudo journalctl --since "2024-06-10 17:21:15" --no-pager | grep "openthread-border-router"|| true
    config.go:63: Found expected content in logs: Thread Network
    local.go:65: [exec] sudo openthread-border-router.ot-ctl dataset active -x | awk '{print $NF}' | grep --invert-match "Done"
    remote.go:102: SSH: connected to 192.168.1.24
    remote.go:127: [exec-ssh] sudo snap remove --purge openthread-border-router
    remote.go:127: [exec-ssh] sudo snap install openthread-border-router --edge
    remote.go:127: [exec-ssh] sudo snap set openthread-border-router infra-if='eth0'
    remote.go:127: [exec-ssh] sudo snap set openthread-border-router webgui-port=31190
    remote.go:127: [exec-ssh] sudo snap connect openthread-border-router:firewall-control
    remote.go:127: [exec-ssh] sudo snap connect openthread-border-router:raw-usb
    remote.go:127: [exec-ssh] sudo snap connect openthread-border-router:network-control
    remote.go:127: [exec-ssh] sudo snap start openthread-border-router
    remote.go:130: Retry 1/10: Waiting for expected content in logs: 'Start Thread Border Agent: OK'
    remote.go:130: [exec-ssh] sudo journalctl --utc --since "2024-06-10 15:21:27" --no-pager | grep "openthread-border-router"|| true
    remote.go:130: Found expected content in logs: 'Start Thread Border Agent: OK'
    remote.go:131: OTBR on remote device is ready
    remote.go:161: [exec-ssh] sudo snap remove --purge matter-pi-gpio-commander 
    remote.go:162: 
    remote.go:161: [exec-ssh] sudo snap install --dangerous matter-pi-gpio-commander_44.snap
    remote.go:162: matter-pi-gpio-commander 2.0.0 installed

    remote.go:161: [exec-ssh] sudo snap connect matter-pi-gpio-commander:custom-gpio matter-pi-gpio-commander:custom-gpio-dev
    remote.go:162: 
    remote.go:161: [exec-ssh] sudo snap set matter-pi-gpio-commander args="--thread"
    remote.go:162: 
    remote.go:161: [exec-ssh] sudo snap set matter-pi-gpio-commander gpiochip="4"
    remote.go:162: 
    remote.go:161: [exec-ssh] sudo snap set matter-pi-gpio-commander gpio="4"
    remote.go:162: 
    remote.go:161: [exec-ssh] sudo snap connect matter-pi-gpio-commander:avahi-control
    remote.go:162: 
    remote.go:161: [exec-ssh] sudo snap connect matter-pi-gpio-commander:otbr-dbus-wpan0 openthread-border-router:dbus-wpan0
    remote.go:162: 
    remote.go:161: [exec-ssh] sudo snap start matter-pi-gpio-commander
    remote.go:162: Started.

    remote.go:165: Retry 1/10: Waiting for expected content in logs: 'CHIP:IN: TransportMgr initialized'
    remote.go:165: [exec-ssh] sudo journalctl --utc --since "2024-06-10 15:21:50" --no-pager | grep "matter-pi-gpio-commander"|| true
    remote.go:165: Found expected content in logs: 'CHIP:IN: TransportMgr initialized'
    remote.go:166: Matter PI GPIO Commander on remote device is ready
=== RUN   TestThread/Commission
    thread_test.go:20: [exec] sudo chip-tool pairing code-thread 110 hex:0e080000000000010000000300001735060004001fffe0020844028cd07f34eba70708fd6b075fa3828463051017c6f1448c20e44b8ff83b06102e089d030f4f70656e5468726561642d633662380102c6b80410f600e926c698f13516e845026b654e5f0c0402a0f7f8 34970112332 2>&1
=== RUN   TestThread/Control
    thread_test.go:28: [exec] sudo chip-tool onoff toggle 110 1 2>&1
    thread_test.go:33: Retry 1/10: Waiting for expected content in logs: 'CHIP:ZCL: Toggle ep1 on/off'
    thread_test.go:33: [exec-ssh] sudo journalctl --utc --since "2024-06-10 15:22:13" --no-pager | grep "matter-pi-gpio-commander"|| true
    thread_test.go:33: Found expected content in logs: 'CHIP:ZCL: Toggle ep1 on/off'
=== NAME  TestThread
    thread_test.go:37: [exec] sudo chip-tool onoff off 110 1 2>&1
    remote.go:137: [exec-ssh] sudo snap remove --purge matter-pi-gpio-commander
    remote.go:108: [exec-ssh] sudo snap remove --purge openthread-border-router
    snap.go:62: [exec] sudo snap remove --purge openthread-border-router
    exec.go:140: [stdout] openthread-border-router removed
    snap.go:62: [exec] sudo snap remove --purge chip-tool
    exec.go:140: [stdout] chip-tool removed
--- PASS: TestThread (113.26s)
    --- PASS: TestThread/Commission (1.00s)
    --- PASS: TestThread/Control (1.46s)
PASS
ok      matter-pi-gpio-commander-tests/thread_tests     113.269s

I had to make sure the snap exists on the remote side, maybe something to document?

This is how I downloaded the revision on latest/edge on the Pi before running the tests:

$ snap download matter-pi-gpio-commander --edge
Fetching snap "matter-pi-gpio-commander"
Fetching assertions for "matter-pi-gpio-commander"
Install the snap with:
   snap ack matter-pi-gpio-commander_44.assert
   snap install matter-pi-gpio-commander_44.snap