Replaces MAC-byte self-IDs with master allocation (1–255), slave preferred-ID reconnect, debug reset via UART/UI, and rate-limited ASSIGN to avoid ESP-NOW NO_MEM storms. Co-authored-by: Cursor <cursoragent@cursor.com>
64 lines
1.2 KiB
Go
64 lines
1.2 KiB
Go
package autotest
|
|
|
|
import "testing"
|
|
|
|
func TestNewBenchNoDefaultClientIDFromMAC(t *testing.T) {
|
|
cfg := Config{
|
|
ID: "t",
|
|
Network: 1,
|
|
MasterMAC: "aa:bb:cc:dd:ee:ff",
|
|
UART: UARTConfig{
|
|
Master: "/dev/ttyUSB0",
|
|
},
|
|
Slaves: []SlaveNode{{
|
|
ID: "pod",
|
|
MAC: "50:78:7d:18:01:10",
|
|
}},
|
|
}
|
|
b, err := NewBench(cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
s, _ := b.Slave("pod")
|
|
if s.ClientID != nil {
|
|
t.Fatalf("client_id should be unset, got %d", *s.ClientID)
|
|
}
|
|
if _, err := b.ResolveClientID("pod"); err == nil {
|
|
t.Fatal("ResolveClientID should fail without client_id")
|
|
}
|
|
}
|
|
|
|
func TestNewBenchExplicitClientID(t *testing.T) {
|
|
id := uint(3)
|
|
cfg := Config{
|
|
ID: "t",
|
|
Network: 1,
|
|
MasterMAC: "aa:bb:cc:dd:ee:ff",
|
|
UART: UARTConfig{
|
|
Master: "/dev/ttyUSB0",
|
|
},
|
|
Slaves: []SlaveNode{{
|
|
ID: "pod",
|
|
MAC: "50:78:7d:18:01:10",
|
|
ClientID: &id,
|
|
}},
|
|
}
|
|
b, err := NewBench(cfg)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
got, err := b.ResolveClientID("pod")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got != 3 {
|
|
t.Fatalf("client_id=%d want 3", got)
|
|
}
|
|
}
|
|
|
|
func TestMACEqual(t *testing.T) {
|
|
if !MACEqual("50:78:7D:18:01:10", "50-78-7d-18-01-10") {
|
|
t.Fatal("MACEqual failed")
|
|
}
|
|
}
|