mirror of
https://github.com/pion/ice.git
synced 2025-10-27 01:10:39 +08:00
Go encourages short names. And a quick survey through the Pion code bases reveals, that we have been using buf more often than buffer. So this change will harmonize the different spellings.
89 lines
2.0 KiB
Go
89 lines
2.0 KiB
Go
//go:build !js
|
|
// +build !js
|
|
|
|
package ice
|
|
|
|
import (
|
|
"net"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/pion/logging"
|
|
"github.com/pion/transport/test"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
// TestMuxAgent is an end to end test over UDP mux, ensuring two agents could connect over mux
|
|
func TestMuxAgent(t *testing.T) {
|
|
report := test.CheckRoutines(t)
|
|
defer report()
|
|
|
|
lim := test.TimeOut(time.Second * 30)
|
|
defer lim.Stop()
|
|
|
|
const muxPort = 7686
|
|
|
|
caseAddrs := map[string]*net.UDPAddr{
|
|
"unspecified": {Port: muxPort},
|
|
"ipv4Loopback": {IP: net.IPv4(127, 0, 0, 1), Port: muxPort},
|
|
}
|
|
|
|
for subTest, addr := range caseAddrs {
|
|
muxAddr := addr
|
|
t.Run(subTest, func(t *testing.T) {
|
|
c, err := net.ListenUDP("udp", muxAddr)
|
|
require.NoError(t, err)
|
|
|
|
loggerFactory := logging.NewDefaultLoggerFactory()
|
|
udpMux := NewUDPMuxDefault(UDPMuxParams{
|
|
Logger: loggerFactory.NewLogger("ice"),
|
|
UDPConn: c,
|
|
})
|
|
|
|
muxedA, err := NewAgent(&AgentConfig{
|
|
UDPMux: udpMux,
|
|
CandidateTypes: []CandidateType{CandidateTypeHost},
|
|
NetworkTypes: []NetworkType{
|
|
NetworkTypeUDP4,
|
|
},
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
a, err := NewAgent(&AgentConfig{
|
|
CandidateTypes: []CandidateType{CandidateTypeHost},
|
|
NetworkTypes: supportedNetworkTypes(),
|
|
})
|
|
require.NoError(t, err)
|
|
|
|
conn, muxedConn := connect(a, muxedA)
|
|
|
|
pair := muxedA.getSelectedPair()
|
|
require.NotNil(t, pair)
|
|
require.Equal(t, muxPort, pair.Local.Port())
|
|
|
|
// send a packet to Mux
|
|
data := []byte("hello world")
|
|
_, err = conn.Write(data)
|
|
require.NoError(t, err)
|
|
|
|
buf := make([]byte, 1024)
|
|
n, err := muxedConn.Read(buf)
|
|
require.NoError(t, err)
|
|
require.Equal(t, data, buf[:n])
|
|
|
|
// send a packet from Mux
|
|
_, err = muxedConn.Write(data)
|
|
require.NoError(t, err)
|
|
|
|
n, err = conn.Read(buf)
|
|
require.NoError(t, err)
|
|
require.Equal(t, data, buf[:n])
|
|
|
|
// close it down
|
|
require.NoError(t, conn.Close())
|
|
require.NoError(t, muxedConn.Close())
|
|
require.NoError(t, udpMux.Close())
|
|
})
|
|
}
|
|
}
|