ghostream/stream/webrtc/webrtc_test.go

59 lines
1.7 KiB
Go
Raw Normal View History

package webrtc
2020-10-14 16:57:37 +00:00
import (
"math/rand"
"testing"
"github.com/pion/webrtc/v3"
"gitlab.crans.org/nounous/ghostream/messaging"
2020-10-14 16:57:37 +00:00
)
func TestServe(t *testing.T) {
// Init streams messaging and WebRTC server
streams := messaging.New()
2020-10-14 16:57:37 +00:00
cfg := Options{
Enabled: true,
MinPortUDP: 10000,
MaxPortUDP: 10005,
STUNServers: []string{"stun:stun.l.google.com:19302"},
}
2020-10-19 19:45:23 +00:00
go Serve(streams, &cfg)
2020-10-14 16:57:37 +00:00
// New client connection
mediaEngine := webrtc.MediaEngine{}
mediaEngine.RegisterDefaultCodecs()
api := webrtc.NewAPI(webrtc.WithMediaEngine(mediaEngine))
peerConnection, _ := api.NewPeerConnection(webrtc.Configuration{})
// Create video track
codec, payloadType := getPayloadType(mediaEngine, webrtc.RTPCodecTypeVideo, "H264")
2020-10-14 16:57:37 +00:00
videoTrack, err := webrtc.NewTrack(payloadType, rand.Uint32(), "video", "pion", codec)
if err != nil {
t.Error("Failed to create new video track", err)
}
if _, err = peerConnection.AddTrack(videoTrack); err != nil {
t.Error("Failed to add video track", err)
}
// Create audio track
codec, payloadType = getPayloadType(mediaEngine, webrtc.RTPCodecTypeAudio, "opus")
audioTrack, err := webrtc.NewTrack(payloadType, rand.Uint32(), "audio", "pion", codec)
if err != nil {
t.Error("Failed to create new audio track", err)
}
if _, err = peerConnection.AddTrack(audioTrack); err != nil {
t.Error("Failed to add audio track", err)
}
// Create offer
offer, _ := peerConnection.CreateOffer(nil)
// Create channel that is blocked until ICE Gathering is complete
gatherComplete := webrtc.GatheringCompletePromise(peerConnection)
peerConnection.SetLocalDescription(offer)
<-gatherComplete
2020-10-19 19:45:23 +00:00
// FIXME: Send offer to server
2020-10-14 16:57:37 +00:00
// FIXME: verify connection did work
}