github.com/bluenviron/gomavlib/v2@v2.2.1-0.20240308101627-2c07e3da629c/node_streamrequest_test.go (about)

     1  package gomavlib
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/require"
     8  
     9  	"github.com/bluenviron/gomavlib/v2/pkg/dialect"
    10  	"github.com/bluenviron/gomavlib/v2/pkg/message"
    11  )
    12  
    13  func TestNodeStreamRequest(t *testing.T) {
    14  	dialect := &dialect.Dialect{
    15  		Version: 3,
    16  		Messages: []message.Message{
    17  			&MessageHeartbeat{},
    18  			&MessageRequestDataStream{},
    19  		},
    20  	}
    21  
    22  	node1, err := NewNode(NodeConf{
    23  		Dialect:     dialect,
    24  		OutVersion:  V2,
    25  		OutSystemID: 10,
    26  		Endpoints: []EndpointConf{
    27  			EndpointUDPServer{"127.0.0.1:5600"},
    28  		},
    29  		HeartbeatDisable:    true,
    30  		StreamRequestEnable: true,
    31  	})
    32  	require.NoError(t, err)
    33  	defer node1.Close()
    34  
    35  	go func() {
    36  		for range node1.Events() { //nolint:revive
    37  		}
    38  	}()
    39  
    40  	node2, err := NewNode(NodeConf{
    41  		Dialect:     dialect,
    42  		OutVersion:  V2,
    43  		OutSystemID: 11,
    44  		Endpoints: []EndpointConf{
    45  			EndpointUDPClient{"127.0.0.1:5600"},
    46  		},
    47  		HeartbeatDisable:       false,
    48  		HeartbeatPeriod:        500 * time.Millisecond,
    49  		HeartbeatAutopilotType: 3, // MAV_AUTOPILOT_ARDUPILOTMEGA
    50  	})
    51  	require.NoError(t, err)
    52  	defer node2.Close()
    53  
    54  	for evt := range node2.Events() {
    55  		if ee, ok := evt.(*EventFrame); ok {
    56  			if _, ok = ee.Message().(*MessageRequestDataStream); ok {
    57  				return
    58  			}
    59  		}
    60  	}
    61  }