Added Network Rebuild Test
This commit is contained in:
parent
22a72ee02d
commit
864ffbbd7f
18
goTool/testrunner/esptool.go
Normal file
18
goTool/testrunner/esptool.go
Normal 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
|
||||
}
|
||||
@ -2,6 +2,7 @@ package testrunner
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"slices"
|
||||
"time"
|
||||
|
||||
"alox.tool/api"
|
||||
@ -60,3 +61,79 @@ func (tr *TestRunner) RunClientInputTest() error {
|
||||
// TODO: Real Check
|
||||
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
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user