improve coverage

This commit is contained in:
aler9
2022-12-09 12:31:18 +01:00
parent 8515d62735
commit e6e7f11ee1
4 changed files with 405 additions and 54 deletions

View File

@@ -1485,15 +1485,18 @@ func TestServerPublishUDPChangeConn(t *testing.T) {
}
func TestServerPublishDecodeErrors(t *testing.T) {
for _, ca := range []string{
"rtp invalid",
"rtcp invalid",
"rtp packets lost",
"rtp too big",
"rtcp too big",
"rtcp too big tcp",
for _, ca := range []struct {
proto string
name string
}{
{"udp", "rtp invalid"},
{"udp", "rtcp invalid"},
{"udp", "rtp packets lost"},
{"udp", "rtp too big"},
{"udp", "rtcp too big"},
{"tcp", "rtcp too big"},
} {
t.Run(ca, func(t *testing.T) {
t.Run(ca.proto+" "+ca.name, func(t *testing.T) {
errorRecv := make(chan struct{})
s := &Server{
@@ -1514,18 +1517,23 @@ func TestServerPublishDecodeErrors(t *testing.T) {
}, nil
},
onDecodeError: func(ctx *ServerHandlerOnDecodeErrorCtx) {
switch ca {
case "rtp invalid":
switch {
case ca.proto == "udp" && ca.name == "rtp invalid":
require.EqualError(t, ctx.Error, "RTP header size insufficient: 2 < 4")
case "rtcp invalid":
case ca.proto == "udp" && ca.name == "rtcp invalid":
require.EqualError(t, ctx.Error, "rtcp: packet too short")
case "rtp packets lost":
case ca.proto == "udp" && ca.name == "rtp packets lost":
require.EqualError(t, ctx.Error, "69 RTP packet(s) lost")
case "rtp too big":
case ca.proto == "udp" && ca.name == "rtp too big":
require.EqualError(t, ctx.Error, "RTP packet is too big to be read with UDP")
case "rtcp too big":
case ca.proto == "udp" && ca.name == "rtcp too big":
require.EqualError(t, ctx.Error, "RTCP packet is too big to be read with UDP")
case "rtcp too big tcp":
case ca.proto == "tcp" && ca.name == "rtcp too big":
require.EqualError(t, ctx.Error, "RTCP packet size (2000) is greater than maximum allowed (1472)")
}
close(errorRecv)
@@ -1577,7 +1585,7 @@ func TestServerPublishDecodeErrors(t *testing.T) {
}(),
}
if ca != "rtcp too big tcp" {
if ca.proto == "udp" {
inTH.Protocol = headers.TransportProtocolUDP
inTH.ClientPorts = &[2]int{35466, 35467}
} else {
@@ -1588,7 +1596,7 @@ func TestServerPublishDecodeErrors(t *testing.T) {
var l1 net.PacketConn
var l2 net.PacketConn
if ca != "rtcp too big tcp" {
if ca.proto == "udp" {
l1, err = net.ListenPacket("udp", "127.0.0.1:35466")
require.NoError(t, err)
defer l1.Close()
@@ -1628,20 +1636,20 @@ func TestServerPublishDecodeErrors(t *testing.T) {
require.NoError(t, err)
require.Equal(t, base.StatusOK, res.StatusCode)
switch ca { //nolint:dupl
case "rtp invalid":
switch { //nolint:dupl
case ca.proto == "udp" && ca.name == "rtp invalid":
l1.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: resTH.ServerPorts[0],
})
case "rtcp invalid":
case ca.proto == "udp" && ca.name == "rtcp invalid":
l2.WriteTo([]byte{0x01, 0x02}, &net.UDPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: resTH.ServerPorts[1],
})
case "rtp packets lost":
case ca.proto == "udp" && ca.name == "rtp packets lost":
byts, _ := rtp.Packet{
Header: rtp.Header{
SequenceNumber: 30,
@@ -1662,19 +1670,19 @@ func TestServerPublishDecodeErrors(t *testing.T) {
Port: resTH.ServerPorts[0],
})
case "rtp too big":
case ca.proto == "udp" && ca.name == "rtp too big":
l1.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: resTH.ServerPorts[0],
})
case "rtcp too big":
case ca.proto == "udp" && ca.name == "rtcp too big":
l2.WriteTo(bytes.Repeat([]byte{0x01, 0x02}, 2000/2), &net.UDPAddr{
IP: net.ParseIP("127.0.0.1"),
Port: resTH.ServerPorts[1],
})
case "rtcp too big tcp":
case ca.proto == "tcp" && ca.name == "rtcp too big":
err = conn.WriteInterleavedFrame(&base.InterleavedFrame{
Channel: 1,
Payload: bytes.Repeat([]byte{0x01, 0x02}, 2000/2),