aboutsummaryrefslogtreecommitdiff
path: root/transport/stream_conn_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'transport/stream_conn_test.go')
-rw-r--r--transport/stream_conn_test.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/transport/stream_conn_test.go b/transport/stream_conn_test.go
new file mode 100644
index 0000000..c0d996f
--- /dev/null
+++ b/transport/stream_conn_test.go
@@ -0,0 +1,69 @@
+package transport
+
+import (
+ pb "buf.build/gen/go/meshtastic/protobufs/protocolbuffers/go/meshtastic"
+ "bytes"
+ "github.com/stretchr/testify/require"
+ "golang.org/x/sync/errgroup"
+ "google.golang.org/protobuf/proto"
+ "net"
+ "testing"
+)
+
+func TestStreamConn(t *testing.T) {
+ radioNetConn, clientNetConn := net.Pipe()
+ var client *StreamConn
+ var radio *StreamConn
+
+ // Test client -> radio
+ sent := &pb.ToRadio{
+ PayloadVariant: &pb.ToRadio_WantConfigId{
+ WantConfigId: 123,
+ },
+ }
+ received := &pb.ToRadio{}
+ eg := errgroup.Group{}
+ eg.Go(func() error {
+ var err error
+ client, err = NewClientStreamConn(clientNetConn)
+ require.NoError(t, err)
+ return client.Write(sent)
+ })
+ eg.Go(func() error {
+ radio = NewRadioStreamConn(radioNetConn)
+ return radio.Read(received)
+ })
+ require.NoError(t, eg.Wait())
+ require.True(t, proto.Equal(sent, received))
+
+ // Test radio -> client
+ replySent := &pb.FromRadio{
+ Id: 123,
+ PayloadVariant: &pb.FromRadio_Config{
+ Config: &pb.Config{
+ PayloadVariant: &pb.Config_Device{
+ Device: &pb.Config_DeviceConfig{
+ Role: pb.Config_DeviceConfig_ROUTER,
+ },
+ },
+ },
+ },
+ }
+ replyReceived := &pb.FromRadio{}
+ eg = errgroup.Group{}
+ eg.Go(func() error {
+ return radio.Write(replySent)
+ })
+ eg.Go(func() error {
+ return client.Read(replyReceived)
+ })
+ require.NoError(t, eg.Wait())
+ require.True(t, proto.Equal(replySent, replyReceived))
+}
+
+func Test_writeStreamHeader(t *testing.T) {
+ out := bytes.NewBuffer(nil)
+ err := writeStreamHeader(out, 257)
+ require.NoError(t, err)
+ require.Equal(t, []byte{Start1, Start2, 0x01, 0x01}, out.Bytes())
+}