mirror of
https://github.com/aler9/rtsp-simple-server
synced 2025-10-21 14:49:36 +08:00
remove PathManager.StartPublisher and StopPublisher (#4766)
simplify path manager usage.
This commit is contained in:
@@ -20,10 +20,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type dummyPath struct {
|
||||
stream *stream.Stream
|
||||
streamCreated chan struct{}
|
||||
}
|
||||
type dummyPath struct{}
|
||||
|
||||
func (p *dummyPath) Name() string {
|
||||
return "teststream"
|
||||
@@ -37,26 +34,6 @@ func (p *dummyPath) ExternalCmdEnv() externalcmd.Environment {
|
||||
return externalcmd.Environment{}
|
||||
}
|
||||
|
||||
func (p *dummyPath) StartPublisher(req defs.PathStartPublisherReq) (*stream.Stream, error) {
|
||||
p.stream = &stream.Stream{
|
||||
WriteQueueSize: 512,
|
||||
RTPMaxPayloadSize: 1450,
|
||||
Desc: req.Desc,
|
||||
GenerateRTPPackets: true,
|
||||
Parent: test.NilLogger,
|
||||
}
|
||||
err := p.stream.Initialize()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
close(p.streamCreated)
|
||||
return p.stream, nil
|
||||
}
|
||||
|
||||
func (p *dummyPath) StopPublisher(_ defs.PathStopPublisherReq) {
|
||||
}
|
||||
|
||||
func (p *dummyPath) RemovePublisher(_ defs.PathRemovePublisherReq) {
|
||||
}
|
||||
|
||||
@@ -83,17 +60,29 @@ func TestServerPublish(t *testing.T) {
|
||||
defer os.Remove(serverKeyFpath)
|
||||
}
|
||||
|
||||
path := &dummyPath{
|
||||
streamCreated: make(chan struct{}),
|
||||
}
|
||||
var strm *stream.Stream
|
||||
streamCreated := make(chan struct{})
|
||||
|
||||
pathManager := &test.PathManager{
|
||||
AddPublisherImpl: func(req defs.PathAddPublisherReq) (defs.Path, error) {
|
||||
AddPublisherImpl: func(req defs.PathAddPublisherReq) (defs.Path, *stream.Stream, error) {
|
||||
require.Equal(t, "teststream", req.AccessRequest.Name)
|
||||
require.Equal(t, "user=myuser&pass=mypass¶m=value", req.AccessRequest.Query)
|
||||
require.Equal(t, "myuser", req.AccessRequest.Credentials.User)
|
||||
require.Equal(t, "mypass", req.AccessRequest.Credentials.Pass)
|
||||
return path, nil
|
||||
|
||||
strm = &stream.Stream{
|
||||
WriteQueueSize: 512,
|
||||
RTPMaxPayloadSize: 1450,
|
||||
Desc: req.Desc,
|
||||
GenerateRTPPackets: true,
|
||||
Parent: test.NilLogger,
|
||||
}
|
||||
err := strm.Initialize()
|
||||
require.NoError(t, err)
|
||||
|
||||
close(streamCreated)
|
||||
|
||||
return &dummyPath{}, strm, nil
|
||||
},
|
||||
}
|
||||
|
||||
@@ -152,16 +141,16 @@ func TestServerPublish(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
<-path.streamCreated
|
||||
<-streamCreated
|
||||
|
||||
recv := make(chan struct{})
|
||||
|
||||
reader := test.NilLogger
|
||||
|
||||
path.stream.AddReader(
|
||||
strm.AddReader(
|
||||
reader,
|
||||
path.stream.Desc.Medias[0],
|
||||
path.stream.Desc.Medias[0].Formats[0],
|
||||
strm.Desc.Medias[0],
|
||||
strm.Desc.Medias[0].Formats[0],
|
||||
func(u unit.Unit) error {
|
||||
require.Equal(t, [][]byte{
|
||||
test.FormatH264.SPS,
|
||||
@@ -172,8 +161,8 @@ func TestServerPublish(t *testing.T) {
|
||||
return nil
|
||||
})
|
||||
|
||||
path.stream.StartReader(reader)
|
||||
defer path.stream.RemoveReader(reader)
|
||||
strm.StartReader(reader)
|
||||
defer strm.RemoveReader(reader)
|
||||
|
||||
err = w.WriteH264(
|
||||
3*time.Second, 3*time.Second, [][]byte{
|
||||
@@ -217,15 +206,13 @@ func TestServerRead(t *testing.T) {
|
||||
err := strm.Initialize()
|
||||
require.NoError(t, err)
|
||||
|
||||
path := &dummyPath{stream: strm}
|
||||
|
||||
pathManager := &test.PathManager{
|
||||
AddReaderImpl: func(req defs.PathAddReaderReq) (defs.Path, *stream.Stream, error) {
|
||||
require.Equal(t, "teststream", req.AccessRequest.Name)
|
||||
require.Equal(t, "user=myuser&pass=mypass¶m=value", req.AccessRequest.Query)
|
||||
require.Equal(t, "myuser", req.AccessRequest.Credentials.User)
|
||||
require.Equal(t, "mypass", req.AccessRequest.Credentials.Pass)
|
||||
return path, path.stream, nil
|
||||
return &dummyPath{}, strm, nil
|
||||
},
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user