diff --git a/server_publish_test.go b/server_publish_test.go index 30cad6e6..8d53bd04 100644 --- a/server_publish_test.go +++ b/server_publish_test.go @@ -234,10 +234,7 @@ func TestServerPublishErrorAnnounce(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = ca.req.Write(bconn.Writer) - require.NoError(t, err) - - _, err = readResponse(bconn.Reader) + _, err = writeReqReadRes(bconn, ca.req) require.NoError(t, err) <-connClosed @@ -297,8 +294,6 @@ func TestServerPublishSetupPath(t *testing.T) { }, } { t.Run(ca.name, func(t *testing.T) { - setupDone := make(chan struct{}) - s := &Server{ Handler: &testServerHandler{ onAnnounce: func(ctx *ServerHandlerOnAnnounceCtx) (*base.Response, error) { @@ -309,7 +304,6 @@ func TestServerPublishSetupPath(t *testing.T) { onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, error) { require.Equal(t, ca.path, ctx.Path) require.Equal(t, ca.trackID, ctx.TrackID) - close(setupDone) return &base.Response{ StatusCode: base.StatusOK, }, nil @@ -351,7 +345,7 @@ func TestServerPublishSetupPath(t *testing.T) { byts, _ := sout.Marshal() - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/" + ca.path), Header: base.Header{ @@ -359,10 +353,7 @@ func TestServerPublishSetupPath(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: byts, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -379,7 +370,7 @@ func TestServerPublishSetupPath(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL(ca.url), Header: base.Header{ @@ -387,12 +378,7 @@ func TestServerPublishSetupPath(t *testing.T) { "Transport": th.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - <-setupDone - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) }) @@ -440,7 +426,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -448,10 +434,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -468,7 +451,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/test2stream/trackID=0"), Header: base.Header{ @@ -476,10 +459,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) { "Transport": th.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) @@ -528,7 +508,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -536,10 +516,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -556,7 +533,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -564,14 +541,11 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { "Transport": th.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -579,10 +553,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) { "Transport": th.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) @@ -639,7 +610,7 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -647,10 +618,7 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -667,7 +635,7 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -675,24 +643,18 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) { "Transport": th.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Record, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) @@ -798,7 +760,7 @@ func TestServerPublish(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -806,10 +768,7 @@ func TestServerPublish(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -834,7 +793,7 @@ func TestServerPublish(t *testing.T) { inTH.InterleavedIDs = &[2]int{0, 1} } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -842,10 +801,7 @@ func TestServerPublish(t *testing.T) { "Transport": inTH.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -865,17 +821,14 @@ func TestServerPublish(t *testing.T) { defer l2.Close() } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Record, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -932,17 +885,14 @@ func TestServerPublish(t *testing.T) { require.Equal(t, []byte{0x09, 0x0A, 0x0B, 0x0C}, f.Payload) } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Teardown, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1000,7 +950,7 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -1008,10 +958,7 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1028,7 +975,7 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) { ClientPorts: &[2]int{35466, 35467}, } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -1036,10 +983,7 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) { "Transport": inTH.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1047,17 +991,14 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) { err = th.Read(res.Header["Transport"]) require.NoError(t, err) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Record, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1111,7 +1052,7 @@ func TestServerPublishRTCPReport(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -1119,10 +1060,7 @@ func TestServerPublishRTCPReport(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1139,7 +1077,7 @@ func TestServerPublishRTCPReport(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -1147,10 +1085,7 @@ func TestServerPublishRTCPReport(t *testing.T) { "Transport": inTH.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1158,17 +1093,14 @@ func TestServerPublishRTCPReport(t *testing.T) { err = th.Read(res.Header["Transport"]) require.NoError(t, err) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Record, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1281,7 +1213,7 @@ func TestServerPublishTimeout(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -1289,10 +1221,7 @@ func TestServerPublishTimeout(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1315,7 +1244,7 @@ func TestServerPublishTimeout(t *testing.T) { inTH.InterleavedIDs = &[2]int{0, 1} } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -1323,10 +1252,7 @@ func TestServerPublishTimeout(t *testing.T) { "Transport": inTH.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1334,17 +1260,14 @@ func TestServerPublishTimeout(t *testing.T) { err = th.Read(res.Header["Transport"]) require.NoError(t, err) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Record, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1417,7 +1340,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -1425,10 +1348,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1451,7 +1371,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) { inTH.InterleavedIDs = &[2]int{0, 1} } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -1459,10 +1379,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) { "Transport": inTH.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1470,17 +1387,14 @@ func TestServerPublishWithoutTeardown(t *testing.T) { err = th.Read(res.Header["Transport"]) require.NoError(t, err) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Record, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1545,7 +1459,7 @@ func TestServerPublishUDPChangeConn(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -1553,10 +1467,7 @@ func TestServerPublishUDPChangeConn(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1573,7 +1484,7 @@ func TestServerPublishUDPChangeConn(t *testing.T) { ClientPorts: &[2]int{35466, 35467}, } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -1581,24 +1492,18 @@ func TestServerPublishUDPChangeConn(t *testing.T) { "Transport": inTH.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Record, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) sxID = res.Header["Session"][0] @@ -1610,17 +1515,14 @@ func TestServerPublishUDPChangeConn(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.GetParameter, URL: base.MustParseURL("rtsp://localhost:8554/teststream/"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Session": base.HeaderValue{sxID}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) }() diff --git a/server_read_test.go b/server_read_test.go index 86ec945d..1681f8a2 100644 --- a/server_read_test.go +++ b/server_read_test.go @@ -59,14 +59,11 @@ func TestServerReadSetupPath(t *testing.T) { }, } { t.Run(ca.name, func(t *testing.T) { - setupDone := make(chan struct{}) - s := &Server{ Handler: &testServerHandler{ onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, error) { require.Equal(t, ca.path, ctx.Path) require.Equal(t, ca.trackID, ctx.TrackID) - close(setupDone) return &base.Response{ StatusCode: base.StatusOK, }, nil @@ -96,19 +93,14 @@ func TestServerReadSetupPath(t *testing.T) { InterleavedIDs: &[2]int{ca.trackID * 2, (ca.trackID * 2) + 1}, } - err = base.Request{ + res, err := writeReqReadRes(bconn, 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) - - <-setupDone - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) }) @@ -154,23 +146,20 @@ func TestServerReadErrorSetupDifferentPaths(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Transport": th.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) th.InterleavedIDs = &[2]int{2, 3} - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/test12stream/trackID=1"), Header: base.Header{ @@ -178,10 +167,7 @@ func TestServerReadErrorSetupDifferentPaths(t *testing.T) { "Transport": th.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) @@ -227,23 +213,20 @@ func TestServerReadErrorSetupTrackTwice(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Transport": th.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) th.InterleavedIDs = &[2]int{2, 3} - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -251,10 +234,7 @@ func TestServerReadErrorSetupTrackTwice(t *testing.T) { "Transport": th.Write(), "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) @@ -362,17 +342,14 @@ func TestServerRead(t *testing.T) { inTH.InterleavedIDs = &[2]int{0, 1} } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Transport": inTH.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -394,17 +371,14 @@ func TestServerRead(t *testing.T) { defer l2.Close() } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -456,47 +430,38 @@ func TestServerRead(t *testing.T) { if proto == "udp" { // ping with OPTIONS - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Options, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"4"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) // ping with GET_PARAMETER - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.GetParameter, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"5"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) } - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Teardown, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"6"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -560,7 +525,7 @@ func TestServerReadTCPResponseBeforeFrames(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -578,24 +543,18 @@ func TestServerReadTCPResponseBeforeFrames(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -632,7 +591,7 @@ func TestServerReadPlayPlay(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -650,38 +609,29 @@ func TestServerReadPlayPlay(t *testing.T) { ClientPorts: &[2]int{30450, 30451}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) } @@ -743,7 +693,7 @@ func TestServerReadPlayPausePlay(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -761,52 +711,40 @@ func TestServerReadPlayPausePlay(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Pause, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) } @@ -864,7 +802,7 @@ func TestServerReadPlayPausePause(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -882,24 +820,18 @@ func TestServerReadPlayPausePause(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -913,7 +845,7 @@ func TestServerReadPlayPausePause(t *testing.T) { }.Write(bconn.Writer) require.NoError(t, err) - res, err = readResponseIgnoreFrames(bconn.Reader) + res, err = readResIgnoreFrames(bconn.Reader) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -927,7 +859,7 @@ func TestServerReadPlayPausePause(t *testing.T) { }.Write(bconn.Writer) require.NoError(t, err) - res, err = readResponseIgnoreFrames(bconn.Reader) + res, err = readResIgnoreFrames(bconn.Reader) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) } @@ -991,31 +923,25 @@ func TestServerReadTimeout(t *testing.T) { inTH.Protocol = StreamProtocolUDP inTH.ClientPorts = &[2]int{35466, 35467} - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Transport": inTH.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1094,31 +1020,25 @@ func TestServerReadWithoutTeardown(t *testing.T) { inTH.InterleavedIDs = &[2]int{0, 1} } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Transport": inTH.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1180,31 +1100,25 @@ func TestServerReadUDPChangeConn(t *testing.T) { ClientPorts: &[2]int{35466, 35467}, } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Transport": inTH.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) sxID = res.Header["Session"][0] @@ -1216,17 +1130,14 @@ func TestServerReadUDPChangeConn(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.GetParameter, URL: base.MustParseURL("rtsp://localhost:8554/teststream/"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, "Session": base.HeaderValue{sxID}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) }() diff --git a/server_test.go b/server_test.go index 793bb35d..9ddfb38c 100644 --- a/server_test.go +++ b/server_test.go @@ -17,13 +17,18 @@ import ( "github.com/aler9/gortsplib/pkg/headers" ) -func readResponse(br *bufio.Reader) (*base.Response, error) { +func writeReqReadRes(bconn *bufio.ReadWriter, req base.Request) (*base.Response, error) { + err := req.Write(bconn.Writer) + if err != nil { + return nil, err + } + var res base.Response - err := res.Read(br) + err = res.Read(bconn.Reader) return &res, err } -func readResponseIgnoreFrames(br *bufio.Reader) (*base.Response, error) { +func readResIgnoreFrames(br *bufio.Reader) (*base.Response, error) { buf := make([]byte, 2048) var res base.Response err := res.ReadIgnoreFrames(br, buf) @@ -490,16 +495,13 @@ func TestServerCSeq(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Options, URL: base.MustParseURL("rtsp://localhost:8554/"), Header: base.Header{ "CSeq": base.HeaderValue{"5"}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -526,14 +528,11 @@ func TestServerErrorCSeqMissing(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Options, URL: base.MustParseURL("rtsp://localhost:8554/"), Header: base.Header{}, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) @@ -557,16 +556,13 @@ func TestServerErrorInvalidMethod(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: "INVALID", URL: base.MustParseURL("rtsp://localhost:8554/"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) } @@ -601,7 +597,7 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) { defer conn1.Close() bconn1 := bufio.NewReadWriter(bufio.NewReader(conn1), bufio.NewWriter(conn1)) - err = base.Request{ + res, err := writeReqReadRes(bconn1, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -619,24 +615,18 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn1.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn1.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn1, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn1.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn1.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -645,7 +635,7 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) { defer conn2.Close() bconn2 := bufio.NewReadWriter(bufio.NewReader(conn2), bufio.NewWriter(conn2)) - err = base.Request{ + res, err = writeReqReadRes(bconn2, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -664,10 +654,7 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) { }.Write(), "Session": res.Header["Session"], }, - }.Write(bconn2.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn2.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) } @@ -702,7 +689,7 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -720,28 +707,22 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": res.Header["Session"], }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -759,10 +740,7 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) } @@ -796,44 +774,35 @@ func TestServerGetSetParameter(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Options, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.SetParameter, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"12"}, }, Body: []byte("param1: 123456\r\n"), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) - err = base.Request{ + res, err = writeReqReadRes(bconn, base.Request{ Method: base.GetParameter, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, }, Body: []byte("param1\r\n"), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err = readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, []byte("param1: 123456\r\n"), res.Body) @@ -876,16 +845,13 @@ func TestServerErrorInvalidSession(t *testing.T) { defer conn.Close() bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: method, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ "CSeq": base.HeaderValue{"1"}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) }) @@ -969,7 +935,7 @@ func TestServerSessionAutoClose(t *testing.T) { require.NoError(t, err) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -987,10 +953,7 @@ func TestServerSessionAutoClose(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) @@ -1056,7 +1019,7 @@ func TestServerErrorInvalidPath(t *testing.T) { }) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Announce, URL: base.MustParseURL("rtsp://localhost:8554/teststream"), Header: base.Header{ @@ -1064,17 +1027,14 @@ func TestServerErrorInvalidPath(t *testing.T) { "Content-Type": base.HeaderValue{"application/sdp"}, }, Body: tracks.Write(), - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) sxID = res.Header["Session"][0] } if method == base.Play || method == base.Record || method == base.Pause { - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Setup, URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), Header: base.Header{ @@ -1097,42 +1057,33 @@ func TestServerErrorInvalidPath(t *testing.T) { InterleavedIDs: &[2]int{0, 1}, }.Write(), }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) sxID = res.Header["Session"][0] } if method == base.Pause { - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: base.Play, URL: base.MustParseURL("rtsp://localhost:8554/teststream/"), Header: base.Header{ "CSeq": base.HeaderValue{"2"}, "Session": base.HeaderValue{sxID}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusOK, res.StatusCode) } - err = base.Request{ + res, err := writeReqReadRes(bconn, base.Request{ Method: method, URL: base.MustParseURL("rtsp://localhost:8554"), Header: base.Header{ "CSeq": base.HeaderValue{"3"}, "Session": base.HeaderValue{sxID}, }, - }.Write(bconn.Writer) - require.NoError(t, err) - - res, err := readResponse(bconn.Reader) + }) require.NoError(t, err) require.Equal(t, base.StatusBadRequest, res.StatusCode) })