Files
webrtc/track_test.go
Sean DuBois 6c0e8b8851 Return io.EOF when Track has no RTPSenders
Using this enum allows people to more gracefully handle shutdown,
also add a test to assert io.EOF is returned in other places

Resolves #511
2019-03-31 12:00:40 -07:00

120 lines
2.7 KiB
Go

// +build !js
package webrtc
import (
"math/rand"
"testing"
)
func TestNewVideoTrack(t *testing.T) {
m := MediaEngine{}
m.RegisterCodec(NewRTPVP8Codec(DefaultPayloadTypeVP8, 90000))
api := NewAPI(WithMediaEngine(m))
peerConfig := Configuration{
ICEServers: []ICEServer{
{
URLs: []string{"stun:stun.l.google.com:19302"},
},
},
}
peer, _ := api.NewPeerConnection(peerConfig)
_, err := peer.NewTrack(DefaultPayloadTypeVP8, rand.Uint32(), "video", "pion")
if err != nil {
t.Error("Failed to new video track")
}
}
func TestNewAudioTrack(t *testing.T) {
m := MediaEngine{}
m.RegisterCodec(NewRTPOpusCodec(DefaultPayloadTypeOpus, 48000))
api := NewAPI(WithMediaEngine(m))
peerConfig := Configuration{
ICEServers: []ICEServer{
{
URLs: []string{"stun:stun.l.google.com:19302"},
},
},
}
peer, _ := api.NewPeerConnection(peerConfig)
_, err := peer.NewTrack(DefaultPayloadTypeOpus, rand.Uint32(), "audio", "pion")
if err != nil {
t.Error("Failed to new audio track")
}
}
func TestNewTracks(t *testing.T) {
m := MediaEngine{}
m.RegisterCodec(NewRTPOpusCodec(DefaultPayloadTypeOpus, 48000))
m.RegisterCodec(NewRTPVP8Codec(DefaultPayloadTypeVP8, 90000))
api := NewAPI(WithMediaEngine(m))
peerConfig := Configuration{
ICEServers: []ICEServer{
{
URLs: []string{"stun:stun.l.google.com:19302"},
},
},
}
peer, _ := api.NewPeerConnection(peerConfig)
_, err := peer.NewTrack(DefaultPayloadTypeOpus, rand.Uint32(), "audio", "pion")
if err != nil {
t.Error("Failed to new audio track")
}
_, err = peer.NewTrack(DefaultPayloadTypeVP8, rand.Uint32(), "video", "pion")
if err != nil {
t.Error("Failed to new video track")
}
}
func TestNewTracksWrite(t *testing.T) {
m := MediaEngine{}
m.RegisterCodec(NewRTPOpusCodec(DefaultPayloadTypeOpus, 48000))
m.RegisterCodec(NewRTPVP8Codec(DefaultPayloadTypeVP8, 90000))
api := NewAPI(WithMediaEngine(m))
peerConfig := Configuration{
ICEServers: []ICEServer{
{
URLs: []string{"stun:stun.l.google.com:19302"},
},
},
}
peer, _ := api.NewPeerConnection(peerConfig)
videoTrack, err := peer.NewTrack(DefaultPayloadTypeOpus, rand.Uint32(), "audio", "pion")
if err != nil {
t.Error("Failed to new video track")
}
audioTrack, err := peer.NewTrack(DefaultPayloadTypeVP8, rand.Uint32(), "video", "pion")
if err != nil {
t.Error("Failed to new audio track")
}
if _, err = peer.AddTrack(audioTrack); err != nil {
t.Fatal(err)
} else if _, err = peer.AddTrack(videoTrack); err != nil {
t.Fatal(err)
}
rtpBuf := make([]byte, 1400)
_, err = videoTrack.Write(rtpBuf)
if err != nil {
t.Error("Failed to write to video track")
}
_, err = audioTrack.Write(rtpBuf)
if err != nil {
t.Error("Failed to write to audio track")
}
}