transdep/graph/analysis_test.go
2018-01-23 21:25:00 +01:00

64 lines
No EOL
1.2 KiB
Go

package graph
import (
"testing"
"net"
"bytes"
)
func TestGetBitsFromIP(t *testing.T) {
ip := net.ParseIP("10.0.0.1")
bstr := getIPBitsInBytes(ip)
vector := []byte{
0, 0, 0, 0, 1, 0 ,1, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1,
}
for i, b := range bstr {
if b != vector[i] {
t.Fail()
}
}
}
func TestIsInTree(t *testing.T) {
buf := new(bytes.Buffer)
buf.WriteString("12345 192.168.10.0/24")
tr, err := BuildRadixTree(buf)
if err != nil {
t.Fatal("Failed tree building")
}
asn, err := getASNFor(tr, net.ParseIP("192.168.0.1"))
if err == nil {
t.Fatal("Got a match for 192.168.0.1")
}
asn, ok := getASNFor(tr, net.ParseIP("192.168.10.1"))
if ok != nil || asn != 12345 {
t.Fatal("Did not discover 12345")
}
}
func TestIsInAS(t *testing.T) {
buf := new(bytes.Buffer)
buf.WriteString("12345 192.168.10.0/24")
tr, err := BuildRadixTree(buf)
if err != nil {
t.Fatal("Failed tree building")
}
n := NewIPNode("192.168.10.1")
f := getASNFilteringFunc(tr)
f2 := getASNTestFunc(f, 12345)
f3 := getASNTestFunc(f, 12346)
if !f2(n) {
t.Fatal("Not in 12345")
}
if f3(n) {
t.Fatal("In 12346")
}
}