mirror of
https://github.com/gortc/stun.git
synced 2025-09-26 20:41:36 +08:00
stun: test on packets from webrtc
This commit is contained in:
40
stun_test.go
40
stun_test.go
@@ -12,8 +12,11 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"encoding/base64"
|
||||
"encoding/csv"
|
||||
"github.com/pkg/errors"
|
||||
log "github.com/sirupsen/logrus"
|
||||
"hash/crc64"
|
||||
)
|
||||
|
||||
func bUint16(v uint16) string {
|
||||
@@ -576,3 +579,40 @@ func TestNearestLen(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestMessageFromBrowsers(t *testing.T) {
|
||||
// file contains udp-packets captured from browsers (WebRTC)
|
||||
reader := csv.NewReader(bytes.NewReader(loadData(t, "frombrowsers.csv")))
|
||||
reader.Comma = ','
|
||||
_, err := reader.Read() // skipping header
|
||||
if err != nil {
|
||||
t.Fatal("failed to skip header of csv: ", err)
|
||||
}
|
||||
m := AcquireMessage()
|
||||
crcTable := crc64.MakeTable(crc64.ISO)
|
||||
for {
|
||||
line, err := reader.Read()
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatal("failed to read csv line: ", err)
|
||||
}
|
||||
data, err := base64.StdEncoding.DecodeString(line[1])
|
||||
if err != nil {
|
||||
t.Fatal("failed to decode ", line[1], " as base64: ", err)
|
||||
}
|
||||
b, err := strconv.ParseUint(line[2], 10, 64)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if b != crc64.Checksum(data, crcTable) {
|
||||
t.Error("crc64 check failed for ", line[1])
|
||||
}
|
||||
if _, err = m.ReadBytes(data); err != nil {
|
||||
t.Error("failed to decode ", line[1], " as message: ", err)
|
||||
}
|
||||
m.Reset()
|
||||
}
|
||||
ReleaseMessage(m)
|
||||
}
|
||||
|
15
testdata/frombrowsers.csv
vendored
Normal file
15
testdata/frombrowsers.csv
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
ip,message,crc,browser,version,system
|
||||
213.87.135.35:5127,AAEAACESpEJaU3lNekUycUIveEc=,14955568470663943731,Chrome,55.0.2883.91,Android 5.1.1
|
||||
213.87.135.35:35359,AAEACCESpEL/qLJHuDKc5PsGghOAKAAEqgN+GQ==,10276095995276579762,Firefox,50.0,Mobile
|
||||
185.79.100.8:8337,AAEAACESpEIrY1h5L3p1UytKQkE=,12881067838541718227,Chrome,55.0.2883.91,Android 5.1.1
|
||||
185.79.100.8:8422,AAEAACESpEI1Y1NTdm9yQ3NOMng=,11436996053979164376,Chrome,55.0.2883.91,Android 5.1.1
|
||||
185.79.100.8:7986,AAEACCESpEJb5g0r4yyFhiAECkaAKAAEcmtDIA==,4014551455069599512,Firefox,50.0,Mobile
|
||||
185.79.100.22:13841,AAEAACESpEJzVFJiOEFpdzZkUDM=,17727708163432284316,Chrome,55.0.2883.91,Android 5.1.1
|
||||
213.87.161.132:10323,AAEAACESpEJUdGs3ckUvQkVwQTg=,4195490818417829438,Chrome,55.0.2883.91,Android 5.1.1
|
||||
213.87.161.132:49166,AAEAACESpEJBT2J3VXZmVEZGa24=,210244277659580892,Chrome,55.0.2883.91,Android 5.1.1
|
||||
91.208.134.1:59285,AAEACCESpEL8J+y5nwi+zNxNyuGAKAAEriExcw==,17182568428950801870,Firefox,51.0,Ubuntu
|
||||
91.208.134.1:35576,AAEACCESpELD+wYQw3maWaeQD+yAKAAEmQBHaw==,1298525217870091633,Firefox,51.0,Ubuntu
|
||||
51.15.40.89:39281,AAEAGCESpEJraER2VEl6aWJ1ZGiALwARaHR0cHM6Ly9jeWRldi5ydS8AAAA=,2038078914284839991,Chrome,55.0.2883.87,Linux x86_64
|
||||
51.15.40.89:52341,AAEAGCESpEJHbHEveWt0dzB4cHOALwARaHR0cHM6Ly9jeWRldi5ydS8AAAA=,15407862181367978708,Chrome,55.0.2883.87,Linux x86_64
|
||||
51.15.40.89:53197,AAEAGCESpEJQVkdXVHBjbjhBWlWALwARaHR0cHM6Ly9jeWRldi5ydS8AAAA=,17607978280141252653,Chrome,55.0.2883.87,Linux x86_64
|
||||
51.15.40.89:58269,AAEACCESpEIB2FbktZDEiHN0z0iAKAAEK2VeXA==,3485408176062718742,Firefox,51.0,Ubuntu
|
|
Reference in New Issue
Block a user