64 lines
No EOL
1.2 KiB
Go
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")
|
|
}
|
|
|
|
} |