1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
package report
import (
"testing"
"time"
"github.com/pion/interceptor"
"github.com/pion/interceptor/internal/ntp"
"github.com/pion/interceptor/internal/test"
"github.com/pion/logging"
"github.com/pion/rtcp"
"github.com/pion/rtp"
"github.com/stretchr/testify/assert"
)
func TestSenderInterceptor(t *testing.T) {
t.Run("before any packet", func(t *testing.T) {
mt := &test.MockTime{}
f, err := NewSenderInterceptor(
SenderInterval(time.Millisecond*50),
SenderLog(logging.NewDefaultLoggerFactory().NewLogger("test")),
SenderNow(mt.Now),
)
assert.NoError(t, err)
i, err := f.NewInterceptor("")
assert.NoError(t, err)
stream := test.NewMockStream(&interceptor.StreamInfo{
SSRC: 123456,
ClockRate: 90000,
}, i)
defer func() {
assert.NoError(t, stream.Close())
}()
mt.SetNow(time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC))
pkts := <-stream.WrittenRTCP()
assert.Equal(t, len(pkts), 1)
sr, ok := pkts[0].(*rtcp.SenderReport)
assert.True(t, ok)
assert.Equal(t, &rtcp.SenderReport{
SSRC: 123456,
NTPTime: ntp.ToNTP(mt.Now()),
RTPTime: 2269117121,
PacketCount: 0,
OctetCount: 0,
}, sr)
})
t.Run("after RTP packets", func(t *testing.T) {
mt := &test.MockTime{}
f, err := NewSenderInterceptor(
SenderInterval(time.Millisecond*50),
SenderLog(logging.NewDefaultLoggerFactory().NewLogger("test")),
SenderNow(mt.Now),
)
assert.NoError(t, err)
i, err := f.NewInterceptor("")
assert.NoError(t, err)
stream := test.NewMockStream(&interceptor.StreamInfo{
SSRC: 123456,
ClockRate: 90000,
}, i)
defer func() {
assert.NoError(t, stream.Close())
}()
for i := 0; i < 10; i++ {
assert.NoError(t, stream.WriteRTP(&rtp.Packet{
Header: rtp.Header{SequenceNumber: uint16(i)},
Payload: []byte("\x00\x00"),
}))
}
mt.SetNow(time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC))
pkts := <-stream.WrittenRTCP()
assert.Equal(t, len(pkts), 1)
sr, ok := pkts[0].(*rtcp.SenderReport)
assert.True(t, ok)
assert.Equal(t, &rtcp.SenderReport{
SSRC: 123456,
NTPTime: ntp.ToNTP(mt.Now()),
RTPTime: 2269117121,
PacketCount: 10,
OctetCount: 20,
}, sr)
})
}
|