mirror of
https://github.com/aler9/gortsplib
synced 2025-10-05 15:16:51 +08:00
simplify tests
This commit is contained in:
@@ -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)
|
||||
}()
|
||||
|
@@ -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)
|
||||
}()
|
||||
|
137
server_test.go
137
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)
|
||||
})
|
||||
|
Reference in New Issue
Block a user