speed up tests

This commit is contained in:
aler9 2021-04-03 18:02:56 +02:00
parent 9287e0fe98
commit 5d57bd8165
3 changed files with 97 additions and 102 deletions

2
go.mod
View File

@ -5,7 +5,7 @@ go 1.15
require (
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
github.com/aler9/gortsplib v0.0.0-20210403142314-1f8d7a9ae761
github.com/aler9/gortsplib v0.0.0-20210403153532-1a229e138522
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/fsnotify/fsnotify v1.4.9
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51

4
go.sum
View File

@ -2,8 +2,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/aler9/gortsplib v0.0.0-20210403142314-1f8d7a9ae761 h1:Pr4W/DxrmzxYSIf2OwCO4+6NbwWcKOasv7ZmjkNLwbY=
github.com/aler9/gortsplib v0.0.0-20210403142314-1f8d7a9ae761/go.mod h1:zVCg+TQX445hh1pC5QgAuuBvvXZMWLY1XYz626dGFqY=
github.com/aler9/gortsplib v0.0.0-20210403153532-1a229e138522 h1:0D22MJm5Jp8iq0KZ08/zmOon3Te0XxvIQQgIxFr+3gw=
github.com/aler9/gortsplib v0.0.0-20210403153532-1a229e138522/go.mod h1:zVCg+TQX445hh1pC5QgAuuBvvXZMWLY1XYz626dGFqY=
github.com/aler9/rtmp v0.0.0-20210403095203-3be4a5535927 h1:95mXJ5fUCYpBRdSOnLAQAdJHHKxxxJrVCiaqDi965YQ=
github.com/aler9/rtmp v0.0.0-20210403095203-3be4a5535927/go.mod h1:vzuE21rowz+lT1NGsWbreIvYulgBpCGnQyeTyFblUHc=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=

View File

@ -448,91 +448,70 @@ func TestClientRTSPAutomaticProtocol(t *testing.T) {
}
func TestClientRTSPPublisherOverride(t *testing.T) {
t.Run("enabled", func(t *testing.T) {
p, ok := testProgram("rtmpDisable: yes\n")
require.Equal(t, true, ok)
defer p.close()
for _, ca := range []string{
"enabled",
"disabled",
} {
t.Run(ca, func(t *testing.T) {
conf := "rtmpDisable: yes\n" +
"protocols: [tcp]\n"
if ca == "disabled" {
conf += "paths:\n" +
" all:\n" +
" disablePublisherOverride: yes\n"
}
p, ok := testProgram(conf)
require.Equal(t, true, ok)
defer p.close()
source1, err := newContainer("ffmpeg", "source1", []string{
"-re",
"-stream_loop", "-1",
"-i", "emptyvideo.mkv",
"-c", "copy",
"-f", "rtsp",
"rtsp://" + ownDockerIP + ":8554/teststream",
track, err := gortsplib.NewTrackH264(68, []byte{0x01, 0x02, 0x03, 0x04}, []byte{0x01, 0x02, 0x03, 0x04})
require.NoError(t, err)
s1, err := gortsplib.DialPublish("rtsp://"+ownDockerIP+":8554/teststream",
gortsplib.Tracks{track})
require.NoError(t, err)
defer s1.Close()
s2, err := gortsplib.DialPublish("rtsp://"+ownDockerIP+":8554/teststream",
gortsplib.Tracks{track})
if ca == "enabled" {
require.NoError(t, err)
defer s2.Close()
} else {
require.Error(t, err)
}
d1, err := gortsplib.DialRead("rtsp://" + ownDockerIP + ":8554/teststream")
require.NoError(t, err)
defer d1.Close()
recv := make(chan struct{})
d1.ReadFrames(func(trackID int, streamType base.StreamType, payload []byte) {
if ca == "enabled" {
require.Equal(t, []byte{0x05, 0x06, 0x07, 0x08}, payload)
} else {
require.Equal(t, []byte{0x01, 0x02, 0x03, 0x04}, payload)
}
close(recv)
})
err = s1.WriteFrame(track.ID, gortsplib.StreamTypeRTP,
[]byte{0x01, 0x02, 0x03, 0x04})
if ca == "enabled" {
require.Error(t, err)
} else {
require.NoError(t, err)
}
if ca == "enabled" {
err = s2.WriteFrame(track.ID, gortsplib.StreamTypeRTP,
[]byte{0x05, 0x06, 0x07, 0x08})
require.NoError(t, err)
}
<-recv
})
require.NoError(t, err)
defer source1.close()
time.Sleep(1 * time.Second)
source2, err := newContainer("ffmpeg", "source2", []string{
"-re",
"-stream_loop", "-1",
"-i", "emptyvideo.mkv",
"-c", "copy",
"-f", "rtsp",
"rtsp://" + ownDockerIP + ":8554/teststream",
})
require.NoError(t, err)
defer source2.close()
time.Sleep(1 * time.Second)
dest, err := newContainer("ffmpeg", "dest", []string{
"-i", "rtsp://" + ownDockerIP + ":8554/teststream",
"-vframes", "1",
"-f", "image2",
"-y", "/dev/null",
})
require.NoError(t, err)
defer dest.close()
require.Equal(t, 0, dest.wait())
})
t.Run("disabled", func(t *testing.T) {
p, ok := testProgram("rtmpDisable: yes\n" +
"paths:\n" +
" all:\n" +
" disablePublisherOverride: yes\n")
require.Equal(t, true, ok)
defer p.close()
source1, err := newContainer("ffmpeg", "source1", []string{
"-re",
"-stream_loop", "-1",
"-i", "emptyvideo.mkv",
"-c", "copy",
"-f", "rtsp",
"rtsp://" + ownDockerIP + ":8554/teststream",
})
require.NoError(t, err)
defer source1.close()
time.Sleep(1 * time.Second)
source2, err := newContainer("ffmpeg", "source2", []string{
"-re",
"-stream_loop", "-1",
"-i", "emptyvideo.mkv",
"-c", "copy",
"-f", "rtsp",
"rtsp://" + ownDockerIP + ":8554/teststream",
})
require.NoError(t, err)
defer source2.close()
require.NotEqual(t, 0, source2.wait())
dest, err := newContainer("ffmpeg", "dest", []string{
"-i", "rtsp://" + ownDockerIP + ":8554/teststream",
"-vframes", "1",
"-f", "image2",
"-y", "/dev/null",
})
require.NoError(t, err)
defer dest.close()
require.Equal(t, 0, dest.wait())
})
}
}
func TestClientRTSPNonCompliantFrameSize(t *testing.T) {
@ -550,6 +529,7 @@ func TestClientRTSPNonCompliantFrameSize(t *testing.T) {
v := gortsplib.StreamProtocolTCP
return &v
}(),
ReadBufferSize: 4500,
}
source, err := conf.DialPublish("rtsp://"+ownDockerIP+":8554/teststream",
@ -557,14 +537,27 @@ func TestClientRTSPNonCompliantFrameSize(t *testing.T) {
require.NoError(t, err)
defer source.Close()
buf := bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04, 0x05}, 4096/5)
err = source.WriteFrame(track.ID, gortsplib.StreamTypeRTP, buf)
dest, err := conf.DialRead("rtsp://" + ownDockerIP + ":8554/teststream")
require.NoError(t, err)
defer dest.Close()
input := bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04, 0x05}, 4096/5)
recvDone := make(chan struct{})
recvErr := dest.ReadFrames(func(trackID int, streamType gortsplib.StreamType, payload []byte) {
require.Equal(t, gortsplib.StreamTypeRTP, streamType)
require.Equal(t, input, payload)
close(recvDone)
})
err = source.WriteFrame(track.ID, gortsplib.StreamTypeRTP, input)
require.NoError(t, err)
time.Sleep(100 * time.Millisecond)
err = source.WriteFrame(track.ID, gortsplib.StreamTypeRTP, buf)
require.NoError(t, err)
select {
case <-recvDone:
case err := <-recvErr:
t.Error(err)
}
})
t.Run("proxy", func(t *testing.T) {
@ -596,7 +589,8 @@ func TestClientRTSPNonCompliantFrameSize(t *testing.T) {
"rtspPort: 8555\n" +
"paths:\n" +
" teststream:\n" +
" source: rtsp://" + ownDockerIP + ":8554/teststream\n")
" source: rtsp://" + ownDockerIP + ":8554/teststream\n" +
" sourceProtocol: tcp\n")
require.Equal(t, true, ok)
defer p2.close()
@ -606,21 +600,22 @@ func TestClientRTSPNonCompliantFrameSize(t *testing.T) {
require.NoError(t, err)
defer dest.Close()
done := make(chan struct{})
cerr := dest.ReadFrames(func(trackID int, typ gortsplib.StreamType, buf []byte) {
if typ == gortsplib.StreamTypeRTP {
close(done)
}
input := bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04, 0x05}, 4096/5)
recvDone := make(chan struct{})
recvErr := dest.ReadFrames(func(trackID int, streamType gortsplib.StreamType, payload []byte) {
require.Equal(t, gortsplib.StreamTypeRTP, streamType)
require.Equal(t, input, payload)
close(recvDone)
})
buf := bytes.Repeat([]byte{0x01, 0x02, 0x03, 0x04, 0x05}, 4096/5)
err = source.WriteFrame(track.ID, gortsplib.StreamTypeRTP, buf)
err = source.WriteFrame(track.ID, gortsplib.StreamTypeRTP, input)
require.NoError(t, err)
select {
case err := <-cerr:
case <-recvDone:
case err := <-recvErr:
t.Error(err)
case <-done:
}
})
}