mirror of https://github.com/q191201771/lal.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
1.8 KiB
Go
93 lines
1.8 KiB
Go
// Copyright 2020, Chef. All rights reserved.
|
|
// https://github.com/q191201771/lal
|
|
//
|
|
// Use of this source code is governed by a MIT-style license
|
|
// that can be found in the License file.
|
|
//
|
|
// Author: Chef (191201771@qq.com)
|
|
|
|
package stun_test
|
|
|
|
import (
|
|
"sync"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/q191201771/lal/pkg/alpha/stun"
|
|
|
|
"github.com/q191201771/naza/pkg/nazalog"
|
|
)
|
|
|
|
var serverAddrList = []string{
|
|
// dial udp: lookup stun01.sipphone.com: no such host
|
|
// ----------
|
|
//"stun01.sipphone.com",
|
|
|
|
// XOR-MAPPED-ADDRESS
|
|
// ----------
|
|
"stun.l.google.com:19302",
|
|
"stun4.l.google.com:19302",
|
|
|
|
// XOR-MAPPED-ADDRESS
|
|
// MAPPED-ADDRESS
|
|
// RESPONSE-ORIGIN
|
|
// OTHER-ADDRESS
|
|
// SOFTWARE
|
|
// FINGERPRINT
|
|
// ----------
|
|
"stun.freeswitch.org:3478",
|
|
|
|
// MAPPED-ADDRESS
|
|
// SOURCE_ADDRESS
|
|
// CHANGED_ADDRESS
|
|
// XOR-MAPPED-ADDRESS
|
|
// SOFTWARE
|
|
// ----------
|
|
"stun.xten.com",
|
|
"stun.ekiga.net",
|
|
"stun.schlund.de",
|
|
|
|
// MAPPED-ADDRESS
|
|
// SOURCE_ADDRESS
|
|
// CHANGED_ADDRESS
|
|
// ----------
|
|
"stun.ideasip.com",
|
|
"stun.voiparound.com",
|
|
"stun.voipbuster.com",
|
|
"stun.voipstunt.com",
|
|
}
|
|
|
|
func TestClient(t *testing.T) {
|
|
var wg sync.WaitGroup
|
|
for _, s := range serverAddrList {
|
|
wg.Add(1)
|
|
go func(ss string) {
|
|
var c stun.Client
|
|
ip, port, err := c.Query(ss, 200)
|
|
nazalog.Debugf("server=%s, addr=%s:%d, err=%+v", ss, ip, port, err)
|
|
wg.Done()
|
|
}(s)
|
|
}
|
|
wg.Wait()
|
|
}
|
|
|
|
func TestServer(t *testing.T) {
|
|
var wg sync.WaitGroup
|
|
wg.Add(1)
|
|
s, err := stun.NewServer(":3478")
|
|
go func() {
|
|
err := s.RunLoop()
|
|
nazalog.Errorf("server loop done. err=%+v", err)
|
|
wg.Done()
|
|
}()
|
|
|
|
time.Sleep(100 * time.Millisecond)
|
|
|
|
var c stun.Client
|
|
ip, port, err := c.Query(":3478", 100)
|
|
nazalog.Debugf("query result: %s %d %+v", ip, port, err)
|
|
err = s.Dispose()
|
|
nazalog.Debugf("dispose server. err=%+v", err)
|
|
wg.Wait()
|
|
}
|