Files
funknetz/station/lab_reflector_test.go
T
konradandCursor f8cad55e9c Switch the lab reflector to jayReflector and harden local station use.
Build DJ1JAY’s fork with an optional Satellite/Trunk stub, allow -c/--config, open capture and playback as separate devices, and add a lab start helper.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-07 12:14:41 +02:00

57 lines
1.4 KiB
Go

package station_test
import (
"context"
"net"
"os"
"strconv"
"testing"
"time"
"gitea.neitzel.de/konrad/funknetz/station"
)
// Lab defaults match svxlink-docker/.env and config/svxreflector.conf.
const (
labHost = "127.0.0.1"
labPort = 5300
labCallsign = "DL0FN-1"
labAuthKey = "local-lab-secret-change-me"
labTalkGroup = 9
)
func TestConnectsToLabReflector(t *testing.T) {
if os.Getenv("FUNKNETZ_LAB") == "0" {
t.Skip("FUNKNETZ_LAB=0")
}
addr := net.JoinHostPort(labHost, strconv.Itoa(labPort))
conn, err := net.DialTimeout("tcp", addr, 500*time.Millisecond)
if err != nil {
t.Skipf("lab reflector not listening on %s: %v", addr, err)
}
conn.Close()
path := writeConfigFile(t, configJSON(t, labHost, labPort, labCallsign, labAuthKey, labTalkGroup))
st, err := station.New(station.Options{ConfigPath: path})
if err != nil {
t.Fatal(err)
}
ctx, cancel := context.WithTimeout(t.Context(), 15*time.Second)
defer cancel()
go func() { _ = st.Run(ctx) }()
state, err := st.Wait(ctx, func(s station.State) bool {
return s.Connection == "Connected"
})
if err != nil {
t.Fatalf("did not reach Connected: %v (last state %#v)", err, st.State())
}
if state.Callsign != labCallsign {
t.Fatalf("callsign = %q, want %q", state.Callsign, labCallsign)
}
if state.TalkGroup != labTalkGroup {
t.Fatalf("talkGroup = %d, want %d", state.TalkGroup, labTalkGroup)
}
}