@@ -2891,3 +2891,60 @@ func TestMDNSLocalAddressFromTCPMux(t *testing.T) {
28912891 require .Nil (t , mDNSLocalAddressFromTCPMux (& stubTCPMux {}, []NetworkType {NetworkTypeTCP4 }))
28922892 })
28932893}
2894+
2895+ func TestSped (t * testing.T ) {
2896+ defer test .CheckRoutines (t )()
2897+
2898+ t .Run ("Basic embedding" , func (t * testing.T ) {
2899+ aNotifier , aConnected := onConnected ()
2900+ aAgent , err := NewAgent (& AgentConfig {
2901+ NetworkTypes : supportedNetworkTypes (),
2902+ })
2903+ require .NoError (t , err )
2904+ require .NoError (t , aAgent .OnConnectionStateChange (aNotifier ))
2905+
2906+ var toA string
2907+ fromA := "Hello from A"
2908+ aAgent .SetDtlsCallback (func (packet []byte , rAddr net.Addr ) {
2909+ toA = string (packet )
2910+ })
2911+ require .True (t , aAgent .Piggyback ([]byte (fromA ), true ))
2912+
2913+ bNotifier , bConnected := onConnected ()
2914+ bAgent , err := NewAgent (& AgentConfig {
2915+ NetworkTypes : supportedNetworkTypes (),
2916+ })
2917+ require .NoError (t , err )
2918+ require .NoError (t , bAgent .OnConnectionStateChange (bNotifier ))
2919+
2920+ var toB string
2921+ fromB := "Hello from B"
2922+ bAgent .SetDtlsCallback (func (packet []byte , rAddr net.Addr ) {
2923+ toB = string (packet )
2924+ })
2925+ require .True (t , bAgent .Piggyback ([]byte (fromB ), true ))
2926+
2927+ gatherAndExchangeCandidates (t , aAgent , bAgent )
2928+ go func () {
2929+ bUfrag , bPwd , err := bAgent .GetLocalUserCredentials ()
2930+ require .NoError (t , err )
2931+ _ , err = aAgent .Accept (context .TODO (), bUfrag , bPwd )
2932+ require .NoError (t , err )
2933+ }()
2934+
2935+ go func () {
2936+ aUfrag , aPwd , err := aAgent .GetLocalUserCredentials ()
2937+ require .NoError (t , err )
2938+ _ , err = bAgent .Dial (context .TODO (), aUfrag , aPwd )
2939+ require .NoError (t , err )
2940+ }()
2941+
2942+ <- aConnected
2943+ <- bConnected
2944+ require .NoError (t , aAgent .Close ())
2945+ require .NoError (t , bAgent .Close ())
2946+
2947+ require .Equal (t , toA , fromB )
2948+ require .Equal (t , toB , fromA )
2949+ })
2950+ }
0 commit comments