Added Network Rebuild Test

This commit is contained in:
simon 2026-03-03 17:42:51 +01:00
parent 22a72ee02d
commit 864ffbbd7f
2 changed files with 95 additions and 0 deletions

View File

@ -0,0 +1,18 @@
package testrunner
import (
"os/exec"
)
const (
ESPTOOLPATH = "/home/simon/.espressif/python_env/idf5.5_py3.14_env/bin/esptool.py"
)
func RestartESPOnPort(port string) error {
cmd := exec.Command(ESPTOOLPATH, "--port", port, "run")
err := cmd.Run()
if err != nil {
return err
}
return nil
}

View File

@ -2,6 +2,7 @@ package testrunner
import ( import (
"fmt" "fmt"
"slices"
"time" "time"
"alox.tool/api" "alox.tool/api"
@ -60,3 +61,79 @@ func (tr *TestRunner) RunClientInputTest() error {
// TODO: Real Check // TODO: Real Check
return nil return nil
} }
func (tr *TestRunner) RebuildNetwork() error {
// Hardcoded for now
Clients := map[string]string{
"C1": "/dev/ttyACM1",
"C2": "/dev/ttyACM2",
"C3": "/dev/ttyACM3",
"C4": "/dev/ttyACM4",
}
// Hardcoded for now
macAddresses := [][6]byte{
{0x50, 0x78, 0x7D, 0x18, 0x85, 0xA0},
{0x50, 0x78, 0x7D, 0x18, 0x7D, 0x74},
{0x50, 0x78, 0x7D, 0x18, 0x1D, 0x14},
{0x50, 0x78, 0x7D, 0x18, 0x00, 0x10},
}
// Hardcoded for now
err := RestartESPOnPort("/dev/ttyACM0")
if err != nil {
return fmt.Errorf("Could not Restart Master!")
}
time.Sleep(500 * time.Millisecond)
for c, p := range Clients {
fmt.Printf("Restarting Client %v", c)
err = RestartESPOnPort(p)
if err != nil {
fmt.Printf("Could not Restart Client %v on Port %v", c, p)
return err
}
time.Sleep(500 * time.Millisecond)
}
success := false
var frame *api.Frame
var clientInfos []api.PayloadClientInfo
var lastError string
for i := 0; i <= 5; i++ {
time.Sleep(1000 * time.Millisecond) // inital sleep for first network setup
var err error // for local error scope
frame, err = tr.Expect(api.CmdClientInfo, nil, api.CmdClientInfo, 1*time.Second)
if err != nil {
lastError = "No Uart Message"
continue
}
clientInfos, err = uart.ParseFrameClientInfo(*frame)
if err != nil {
lastError = fmt.Sprintf("Could not parse Message: %v", err)
continue
}
if len(clientInfos) != len(macAddresses) {
lastError = fmt.Sprintf("Want %v Clients, got %v Clients", len(macAddresses), len(clientInfos))
continue
}
success = true
break
}
if !success {
return fmt.Errorf("%v", lastError)
}
for _, client := range clientInfos {
if !slices.Contains(macAddresses, client.MACAddr) {
return fmt.Errorf("Client %v not found in expected list %v", client.MACAddr, macAddresses)
}
}
return nil
}