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 (
|
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
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user