stun: test on packets from webrtc

This commit is contained in:
Aleksandr Razumov
2017-02-01 10:16:04 +03:00
parent 6daaab4871
commit e6a7705ef9
2 changed files with 55 additions and 0 deletions

View File

@@ -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
View 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
1 ip message crc browser version system
2 213.87.135.35:5127 AAEAACESpEJaU3lNekUycUIveEc= 14955568470663943731 Chrome 55.0.2883.91 Android 5.1.1
3 213.87.135.35:35359 AAEACCESpEL/qLJHuDKc5PsGghOAKAAEqgN+GQ== 10276095995276579762 Firefox 50.0 Mobile
4 185.79.100.8:8337 AAEAACESpEIrY1h5L3p1UytKQkE= 12881067838541718227 Chrome 55.0.2883.91 Android 5.1.1
5 185.79.100.8:8422 AAEAACESpEI1Y1NTdm9yQ3NOMng= 11436996053979164376 Chrome 55.0.2883.91 Android 5.1.1
6 185.79.100.8:7986 AAEACCESpEJb5g0r4yyFhiAECkaAKAAEcmtDIA== 4014551455069599512 Firefox 50.0 Mobile
7 185.79.100.22:13841 AAEAACESpEJzVFJiOEFpdzZkUDM= 17727708163432284316 Chrome 55.0.2883.91 Android 5.1.1
8 213.87.161.132:10323 AAEAACESpEJUdGs3ckUvQkVwQTg= 4195490818417829438 Chrome 55.0.2883.91 Android 5.1.1
9 213.87.161.132:49166 AAEAACESpEJBT2J3VXZmVEZGa24= 210244277659580892 Chrome 55.0.2883.91 Android 5.1.1
10 91.208.134.1:59285 AAEACCESpEL8J+y5nwi+zNxNyuGAKAAEriExcw== 17182568428950801870 Firefox 51.0 Ubuntu
11 91.208.134.1:35576 AAEACCESpELD+wYQw3maWaeQD+yAKAAEmQBHaw== 1298525217870091633 Firefox 51.0 Ubuntu
12 51.15.40.89:39281 AAEAGCESpEJraER2VEl6aWJ1ZGiALwARaHR0cHM6Ly9jeWRldi5ydS8AAAA= 2038078914284839991 Chrome 55.0.2883.87 Linux x86_64
13 51.15.40.89:52341 AAEAGCESpEJHbHEveWt0dzB4cHOALwARaHR0cHM6Ly9jeWRldi5ydS8AAAA= 15407862181367978708 Chrome 55.0.2883.87 Linux x86_64
14 51.15.40.89:53197 AAEAGCESpEJQVkdXVHBjbjhBWlWALwARaHR0cHM6Ly9jeWRldi5ydS8AAAA= 17607978280141252653 Chrome 55.0.2883.87 Linux x86_64
15 51.15.40.89:58269 AAEACCESpEIB2FbktZDEiHN0z0iAKAAEK2VeXA== 3485408176062718742 Firefox 51.0 Ubuntu