simplify tests

This commit is contained in:
aler9
2021-05-09 19:14:56 +02:00
parent 0c8e04641a
commit 034eee1c8a
3 changed files with 163 additions and 399 deletions

View File

@@ -234,10 +234,7 @@ func TestServerPublishErrorAnnounce(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = ca.req.Write(bconn.Writer) _, err = writeReqReadRes(bconn, ca.req)
require.NoError(t, err)
_, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
<-connClosed <-connClosed
@@ -297,8 +294,6 @@ func TestServerPublishSetupPath(t *testing.T) {
}, },
} { } {
t.Run(ca.name, func(t *testing.T) { t.Run(ca.name, func(t *testing.T) {
setupDone := make(chan struct{})
s := &Server{ s := &Server{
Handler: &testServerHandler{ Handler: &testServerHandler{
onAnnounce: func(ctx *ServerHandlerOnAnnounceCtx) (*base.Response, error) { onAnnounce: func(ctx *ServerHandlerOnAnnounceCtx) (*base.Response, error) {
@@ -309,7 +304,6 @@ func TestServerPublishSetupPath(t *testing.T) {
onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, error) { onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, error) {
require.Equal(t, ca.path, ctx.Path) require.Equal(t, ca.path, ctx.Path)
require.Equal(t, ca.trackID, ctx.TrackID) require.Equal(t, ca.trackID, ctx.TrackID)
close(setupDone)
return &base.Response{ return &base.Response{
StatusCode: base.StatusOK, StatusCode: base.StatusOK,
}, nil }, nil
@@ -351,7 +345,7 @@ func TestServerPublishSetupPath(t *testing.T) {
byts, _ := sout.Marshal() byts, _ := sout.Marshal()
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Announce, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/" + ca.path), URL: base.MustParseURL("rtsp://localhost:8554/" + ca.path),
Header: base.Header{ Header: base.Header{
@@ -359,10 +353,7 @@ func TestServerPublishSetupPath(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: byts, Body: byts,
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -379,7 +370,7 @@ func TestServerPublishSetupPath(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL(ca.url), URL: base.MustParseURL(ca.url),
Header: base.Header{ Header: base.Header{
@@ -387,12 +378,7 @@ func TestServerPublishSetupPath(t *testing.T) {
"Transport": th.Write(), "Transport": th.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
<-setupDone
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -448,10 +434,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -468,7 +451,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/test2stream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/test2stream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -476,10 +459,7 @@ func TestServerPublishErrorSetupDifferentPaths(t *testing.T) {
"Transport": th.Write(), "Transport": th.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -536,10 +516,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -556,7 +533,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -564,14 +541,11 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) {
"Transport": th.Write(), "Transport": th.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -579,10 +553,7 @@ func TestServerPublishErrorSetupTrackTwice(t *testing.T) {
"Transport": th.Write(), "Transport": th.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -647,10 +618,7 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -667,7 +635,7 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -675,24 +643,18 @@ func TestServerPublishErrorRecordPartialTracks(t *testing.T) {
"Transport": th.Write(), "Transport": th.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Record, Method: base.Record,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -806,10 +768,7 @@ func TestServerPublish(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -834,7 +793,7 @@ func TestServerPublish(t *testing.T) {
inTH.InterleavedIDs = &[2]int{0, 1} inTH.InterleavedIDs = &[2]int{0, 1}
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -842,10 +801,7 @@ func TestServerPublish(t *testing.T) {
"Transport": inTH.Write(), "Transport": inTH.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -865,17 +821,14 @@ func TestServerPublish(t *testing.T) {
defer l2.Close() defer l2.Close()
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Record, Method: base.Record,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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) require.Equal(t, []byte{0x09, 0x0A, 0x0B, 0x0C}, f.Payload)
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Teardown, Method: base.Teardown,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -1008,10 +958,7 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1028,7 +975,7 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) {
ClientPorts: &[2]int{35466, 35467}, ClientPorts: &[2]int{35466, 35467},
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -1036,10 +983,7 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) {
"Transport": inTH.Write(), "Transport": inTH.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1047,17 +991,14 @@ func TestServerPublishErrorWrongProtocol(t *testing.T) {
err = th.Read(res.Header["Transport"]) err = th.Read(res.Header["Transport"])
require.NoError(t, err) require.NoError(t, err)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Record, Method: base.Record,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -1119,10 +1060,7 @@ func TestServerPublishRTCPReport(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1139,7 +1077,7 @@ func TestServerPublishRTCPReport(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -1147,10 +1085,7 @@ func TestServerPublishRTCPReport(t *testing.T) {
"Transport": inTH.Write(), "Transport": inTH.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1158,17 +1093,14 @@ func TestServerPublishRTCPReport(t *testing.T) {
err = th.Read(res.Header["Transport"]) err = th.Read(res.Header["Transport"])
require.NoError(t, err) require.NoError(t, err)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Record, Method: base.Record,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -1289,10 +1221,7 @@ func TestServerPublishTimeout(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1315,7 +1244,7 @@ func TestServerPublishTimeout(t *testing.T) {
inTH.InterleavedIDs = &[2]int{0, 1} inTH.InterleavedIDs = &[2]int{0, 1}
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -1323,10 +1252,7 @@ func TestServerPublishTimeout(t *testing.T) {
"Transport": inTH.Write(), "Transport": inTH.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1334,17 +1260,14 @@ func TestServerPublishTimeout(t *testing.T) {
err = th.Read(res.Header["Transport"]) err = th.Read(res.Header["Transport"])
require.NoError(t, err) require.NoError(t, err)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Record, Method: base.Record,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -1425,10 +1348,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1451,7 +1371,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) {
inTH.InterleavedIDs = &[2]int{0, 1} inTH.InterleavedIDs = &[2]int{0, 1}
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -1459,10 +1379,7 @@ func TestServerPublishWithoutTeardown(t *testing.T) {
"Transport": inTH.Write(), "Transport": inTH.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1470,17 +1387,14 @@ func TestServerPublishWithoutTeardown(t *testing.T) {
err = th.Read(res.Header["Transport"]) err = th.Read(res.Header["Transport"])
require.NoError(t, err) require.NoError(t, err)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Record, Method: base.Record,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -1553,10 +1467,7 @@ func TestServerPublishUDPChangeConn(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1573,7 +1484,7 @@ func TestServerPublishUDPChangeConn(t *testing.T) {
ClientPorts: &[2]int{35466, 35467}, ClientPorts: &[2]int{35466, 35467},
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -1581,24 +1492,18 @@ func TestServerPublishUDPChangeConn(t *testing.T) {
"Transport": inTH.Write(), "Transport": inTH.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Record, Method: base.Record,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
sxID = res.Header["Session"][0] sxID = res.Header["Session"][0]
@@ -1610,17 +1515,14 @@ func TestServerPublishUDPChangeConn(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.GetParameter, Method: base.GetParameter,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Session": base.HeaderValue{sxID}, "Session": base.HeaderValue{sxID},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
}() }()

View File

@@ -59,14 +59,11 @@ func TestServerReadSetupPath(t *testing.T) {
}, },
} { } {
t.Run(ca.name, func(t *testing.T) { t.Run(ca.name, func(t *testing.T) {
setupDone := make(chan struct{})
s := &Server{ s := &Server{
Handler: &testServerHandler{ Handler: &testServerHandler{
onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, error) { onSetup: func(ctx *ServerHandlerOnSetupCtx) (*base.Response, error) {
require.Equal(t, ca.path, ctx.Path) require.Equal(t, ca.path, ctx.Path)
require.Equal(t, ca.trackID, ctx.TrackID) require.Equal(t, ca.trackID, ctx.TrackID)
close(setupDone)
return &base.Response{ return &base.Response{
StatusCode: base.StatusOK, StatusCode: base.StatusOK,
}, nil }, nil
@@ -96,19 +93,14 @@ func TestServerReadSetupPath(t *testing.T) {
InterleavedIDs: &[2]int{ca.trackID * 2, (ca.trackID * 2) + 1}, InterleavedIDs: &[2]int{ca.trackID * 2, (ca.trackID * 2) + 1},
} }
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL(ca.url), URL: base.MustParseURL(ca.url),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Transport": th.Write(), "Transport": th.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
<-setupDone
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
}) })
@@ -154,23 +146,20 @@ func TestServerReadErrorSetupDifferentPaths(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
} }
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Transport": th.Write(), "Transport": th.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
th.InterleavedIDs = &[2]int{2, 3} th.InterleavedIDs = &[2]int{2, 3}
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/test12stream/trackID=1"), URL: base.MustParseURL("rtsp://localhost:8554/test12stream/trackID=1"),
Header: base.Header{ Header: base.Header{
@@ -178,10 +167,7 @@ func TestServerReadErrorSetupDifferentPaths(t *testing.T) {
"Transport": th.Write(), "Transport": th.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
@@ -227,23 +213,20 @@ func TestServerReadErrorSetupTrackTwice(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
} }
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Transport": th.Write(), "Transport": th.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
th.InterleavedIDs = &[2]int{2, 3} th.InterleavedIDs = &[2]int{2, 3}
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -251,10 +234,7 @@ func TestServerReadErrorSetupTrackTwice(t *testing.T) {
"Transport": th.Write(), "Transport": th.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
@@ -362,17 +342,14 @@ func TestServerRead(t *testing.T) {
inTH.InterleavedIDs = &[2]int{0, 1} inTH.InterleavedIDs = &[2]int{0, 1}
} }
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Transport": inTH.Write(), "Transport": inTH.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -394,17 +371,14 @@ func TestServerRead(t *testing.T) {
defer l2.Close() defer l2.Close()
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -456,47 +430,38 @@ func TestServerRead(t *testing.T) {
if proto == "udp" { if proto == "udp" {
// ping with OPTIONS // ping with OPTIONS
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Options, Method: base.Options,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"4"}, "CSeq": base.HeaderValue{"4"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
// ping with GET_PARAMETER // ping with GET_PARAMETER
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.GetParameter, Method: base.GetParameter,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"5"}, "CSeq": base.HeaderValue{"5"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
} }
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Teardown, Method: base.Teardown,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"6"}, "CSeq": base.HeaderValue{"6"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -560,7 +525,7 @@ func TestServerReadTCPResponseBeforeFrames(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -578,24 +543,18 @@ func TestServerReadTCPResponseBeforeFrames(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -632,7 +591,7 @@ func TestServerReadPlayPlay(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -650,38 +609,29 @@ func TestServerReadPlayPlay(t *testing.T) {
ClientPorts: &[2]int{30450, 30451}, ClientPorts: &[2]int{30450, 30451},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
} }
@@ -743,7 +693,7 @@ func TestServerReadPlayPausePlay(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -761,52 +711,40 @@ func TestServerReadPlayPausePlay(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Pause, Method: base.Pause,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
} }
@@ -864,7 +802,7 @@ func TestServerReadPlayPausePause(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -882,24 +820,18 @@ func TestServerReadPlayPausePause(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -913,7 +845,7 @@ func TestServerReadPlayPausePause(t *testing.T) {
}.Write(bconn.Writer) }.Write(bconn.Writer)
require.NoError(t, err) require.NoError(t, err)
res, err = readResponseIgnoreFrames(bconn.Reader) res, err = readResIgnoreFrames(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -927,7 +859,7 @@ func TestServerReadPlayPausePause(t *testing.T) {
}.Write(bconn.Writer) }.Write(bconn.Writer)
require.NoError(t, err) require.NoError(t, err)
res, err = readResponseIgnoreFrames(bconn.Reader) res, err = readResIgnoreFrames(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
} }
@@ -991,31 +923,25 @@ func TestServerReadTimeout(t *testing.T) {
inTH.Protocol = StreamProtocolUDP inTH.Protocol = StreamProtocolUDP
inTH.ClientPorts = &[2]int{35466, 35467} inTH.ClientPorts = &[2]int{35466, 35467}
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Transport": inTH.Write(), "Transport": inTH.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1094,31 +1020,25 @@ func TestServerReadWithoutTeardown(t *testing.T) {
inTH.InterleavedIDs = &[2]int{0, 1} inTH.InterleavedIDs = &[2]int{0, 1}
} }
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Transport": inTH.Write(), "Transport": inTH.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -1180,31 +1100,25 @@ func TestServerReadUDPChangeConn(t *testing.T) {
ClientPorts: &[2]int{35466, 35467}, ClientPorts: &[2]int{35466, 35467},
} }
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Transport": inTH.Write(), "Transport": inTH.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
sxID = res.Header["Session"][0] sxID = res.Header["Session"][0]
@@ -1216,17 +1130,14 @@ func TestServerReadUDPChangeConn(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.GetParameter, Method: base.GetParameter,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
"Session": base.HeaderValue{sxID}, "Session": base.HeaderValue{sxID},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
}() }()

View File

@@ -17,13 +17,18 @@ import (
"github.com/aler9/gortsplib/pkg/headers" "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 var res base.Response
err := res.Read(br) err = res.Read(bconn.Reader)
return &res, err return &res, err
} }
func readResponseIgnoreFrames(br *bufio.Reader) (*base.Response, error) { func readResIgnoreFrames(br *bufio.Reader) (*base.Response, error) {
buf := make([]byte, 2048) buf := make([]byte, 2048)
var res base.Response var res base.Response
err := res.ReadIgnoreFrames(br, buf) err := res.ReadIgnoreFrames(br, buf)
@@ -490,16 +495,13 @@ func TestServerCSeq(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Options, Method: base.Options,
URL: base.MustParseURL("rtsp://localhost:8554/"), URL: base.MustParseURL("rtsp://localhost:8554/"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"5"}, "CSeq": base.HeaderValue{"5"},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -526,14 +528,11 @@ func TestServerErrorCSeqMissing(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Options, Method: base.Options,
URL: base.MustParseURL("rtsp://localhost:8554/"), URL: base.MustParseURL("rtsp://localhost:8554/"),
Header: base.Header{}, Header: base.Header{},
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
@@ -557,16 +556,13 @@ func TestServerErrorInvalidMethod(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: "INVALID", Method: "INVALID",
URL: base.MustParseURL("rtsp://localhost:8554/"), URL: base.MustParseURL("rtsp://localhost:8554/"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
} }
@@ -601,7 +597,7 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) {
defer conn1.Close() defer conn1.Close()
bconn1 := bufio.NewReadWriter(bufio.NewReader(conn1), bufio.NewWriter(conn1)) bconn1 := bufio.NewReadWriter(bufio.NewReader(conn1), bufio.NewWriter(conn1))
err = base.Request{ res, err := writeReqReadRes(bconn1, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -619,24 +615,18 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn1.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn1.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn1, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn1.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn1.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
@@ -645,7 +635,7 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) {
defer conn2.Close() defer conn2.Close()
bconn2 := bufio.NewReadWriter(bufio.NewReader(conn2), bufio.NewWriter(conn2)) bconn2 := bufio.NewReadWriter(bufio.NewReader(conn2), bufio.NewWriter(conn2))
err = base.Request{ res, err = writeReqReadRes(bconn2, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -664,10 +654,7 @@ func TestServerErrorTCPTwoConnOneSession(t *testing.T) {
}.Write(), }.Write(),
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn2.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn2.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
} }
@@ -702,7 +689,7 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -720,28 +707,22 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": res.Header["Session"], "Session": res.Header["Session"],
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -759,10 +740,7 @@ func TestServerErrorTCPOneConnTwoSessions(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
} }
@@ -796,44 +774,35 @@ func TestServerGetSetParameter(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Options, Method: base.Options,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.SetParameter, Method: base.SetParameter,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"12"}, "CSeq": base.HeaderValue{"12"},
}, },
Body: []byte("param1: 123456\r\n"), Body: []byte("param1: 123456\r\n"),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
err = base.Request{ res, err = writeReqReadRes(bconn, base.Request{
Method: base.GetParameter, Method: base.GetParameter,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
}, },
Body: []byte("param1\r\n"), Body: []byte("param1\r\n"),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err = readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
require.Equal(t, []byte("param1: 123456\r\n"), res.Body) require.Equal(t, []byte("param1: 123456\r\n"), res.Body)
@@ -876,16 +845,13 @@ func TestServerErrorInvalidSession(t *testing.T) {
defer conn.Close() defer conn.Close()
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: method, Method: method,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"1"}, "CSeq": base.HeaderValue{"1"},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
}) })
@@ -969,7 +935,7 @@ func TestServerSessionAutoClose(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)) bconn := bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn))
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -987,10 +953,7 @@ func TestServerSessionAutoClose(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) 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, Method: base.Announce,
URL: base.MustParseURL("rtsp://localhost:8554/teststream"), URL: base.MustParseURL("rtsp://localhost:8554/teststream"),
Header: base.Header{ Header: base.Header{
@@ -1064,17 +1027,14 @@ func TestServerErrorInvalidPath(t *testing.T) {
"Content-Type": base.HeaderValue{"application/sdp"}, "Content-Type": base.HeaderValue{"application/sdp"},
}, },
Body: tracks.Write(), Body: tracks.Write(),
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
sxID = res.Header["Session"][0] sxID = res.Header["Session"][0]
} }
if method == base.Play || method == base.Record || method == base.Pause { if method == base.Play || method == base.Record || method == base.Pause {
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Setup, Method: base.Setup,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/trackID=0"),
Header: base.Header{ Header: base.Header{
@@ -1097,42 +1057,33 @@ func TestServerErrorInvalidPath(t *testing.T) {
InterleavedIDs: &[2]int{0, 1}, InterleavedIDs: &[2]int{0, 1},
}.Write(), }.Write(),
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
sxID = res.Header["Session"][0] sxID = res.Header["Session"][0]
} }
if method == base.Pause { if method == base.Pause {
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: base.Play, Method: base.Play,
URL: base.MustParseURL("rtsp://localhost:8554/teststream/"), URL: base.MustParseURL("rtsp://localhost:8554/teststream/"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"2"}, "CSeq": base.HeaderValue{"2"},
"Session": base.HeaderValue{sxID}, "Session": base.HeaderValue{sxID},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode) require.Equal(t, base.StatusOK, res.StatusCode)
} }
err = base.Request{ res, err := writeReqReadRes(bconn, base.Request{
Method: method, Method: method,
URL: base.MustParseURL("rtsp://localhost:8554"), URL: base.MustParseURL("rtsp://localhost:8554"),
Header: base.Header{ Header: base.Header{
"CSeq": base.HeaderValue{"3"}, "CSeq": base.HeaderValue{"3"},
"Session": base.HeaderValue{sxID}, "Session": base.HeaderValue{sxID},
}, },
}.Write(bconn.Writer) })
require.NoError(t, err)
res, err := readResponse(bconn.Reader)
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, base.StatusBadRequest, res.StatusCode) require.Equal(t, base.StatusBadRequest, res.StatusCode)
}) })