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()
|
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)
|
||||||
}()
|
}()
|
||||||
|
@@ -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)
|
||||||
}()
|
}()
|
||||||
|
137
server_test.go
137
server_test.go
@@ -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)
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user