| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- // SPDX-FileCopyrightText: 2023 The Pion community <https://pion.ly>
- // SPDX-License-Identifier: MIT
- //go:build !js
- // +build !js
- package ice
- import (
- "net"
- "strconv"
- "testing"
- "time"
- "github.com/pion/stun"
- "github.com/pion/transport/v2/test"
- "github.com/pion/turn/v2"
- "github.com/stretchr/testify/assert"
- )
- func optimisticAuthHandler(string, string, net.Addr) (key []byte, ok bool) {
- return turn.GenerateAuthKey("username", "pion.ly", "password"), true
- }
- func TestRelayOnlyConnection(t *testing.T) {
- // Limit runtime in case of deadlocks
- lim := test.TimeOut(time.Second * 30)
- defer lim.Stop()
- report := test.CheckRoutines(t)
- defer report()
- serverPort := randomPort(t)
- serverListener, err := net.ListenPacket("udp", "127.0.0.1:"+strconv.Itoa(serverPort))
- assert.NoError(t, err)
- server, err := turn.NewServer(turn.ServerConfig{
- Realm: "pion.ly",
- AuthHandler: optimisticAuthHandler,
- PacketConnConfigs: []turn.PacketConnConfig{
- {
- PacketConn: serverListener,
- RelayAddressGenerator: &turn.RelayAddressGeneratorNone{Address: "127.0.0.1"},
- },
- },
- })
- assert.NoError(t, err)
- cfg := &AgentConfig{
- NetworkTypes: supportedNetworkTypes(),
- Urls: []*stun.URI{
- {
- Scheme: stun.SchemeTypeTURN,
- Host: "127.0.0.1",
- Username: "username",
- Password: "password",
- Port: serverPort,
- Proto: stun.ProtoTypeUDP,
- },
- },
- CandidateTypes: []CandidateType{CandidateTypeRelay},
- }
- aAgent, err := NewAgent(cfg)
- if err != nil {
- t.Fatal(err)
- }
- aNotifier, aConnected := onConnected()
- if err = aAgent.OnConnectionStateChange(aNotifier); err != nil {
- t.Fatal(err)
- }
- bAgent, err := NewAgent(cfg)
- if err != nil {
- t.Fatal(err)
- }
- bNotifier, bConnected := onConnected()
- if err = bAgent.OnConnectionStateChange(bNotifier); err != nil {
- t.Fatal(err)
- }
- connect(aAgent, bAgent)
- <-aConnected
- <-bConnected
- assert.NoError(t, aAgent.Close())
- assert.NoError(t, bAgent.Close())
- assert.NoError(t, server.Close())
- }
|