server: add SETUP path tests

This commit is contained in:
aler9
2021-03-14 15:24:44 +01:00
parent 99ef9a9cc0
commit 0706798d48
3 changed files with 242 additions and 8 deletions

View File

@@ -13,6 +13,91 @@ import (
"github.com/aler9/gortsplib/pkg/headers"
)
func TestServerConnReadSetupPath(t *testing.T) {
for _, ca := range []struct {
name string
url string
trackID int
}{
{
"normal",
"rtsp://localhost:8554/teststream/trackID=0",
0,
},
{
"unordered id",
"rtsp://localhost:8554/teststream/trackID=2",
2,
},
} {
t.Run(ca.name, func(t *testing.T) {
setupDone := make(chan int)
s, err := Serve("127.0.0.1:8554")
require.NoError(t, err)
defer s.Close()
serverDone := make(chan struct{})
defer func() { <-serverDone }()
go func() {
defer close(serverDone)
conn, err := s.Accept()
require.NoError(t, err)
defer conn.Close()
onSetup := func(req *base.Request, th *headers.Transport, trackID int) (*base.Response, error) {
setupDone <- trackID
return &base.Response{
StatusCode: base.StatusOK,
}, nil
}
err = <-conn.Read(ServerConnReadHandlers{
OnSetup: onSetup,
})
require.Equal(t, io.EOF, err)
}()
conn, err := net.Dial("tcp", "localhost:8554")
require.NoError(t, err)
defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
th := &headers.Transport{
Protocol: StreamProtocolTCP,
Delivery: func() *base.StreamDelivery {
v := base.StreamDeliveryUnicast
return &v
}(),
Mode: func() *headers.TransportMode {
v := headers.TransportModePlay
return &v
}(),
InterleavedIds: &[2]int{ca.trackID * 2, (ca.trackID * 2) + 1},
}
err = base.Request{
Method: base.Setup,
URL: base.MustParseURL(ca.url),
Header: base.Header{
"CSeq": base.HeaderValue{"1"},
"Transport": th.Write(),
},
}.Write(bconn.Writer)
require.NoError(t, err)
trackID := <-setupDone
require.Equal(t, ca.trackID, trackID)
var res base.Response
err = res.Read(bconn.Reader)
require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode)
})
}
}
func TestServerConnReadReceivePackets(t *testing.T) {
for _, proto := range []string{
"udp",