1
0
mirror of https://github.com/alice-lg/alice-lg.git synced 2024-05-11 05:55:03 +00:00
2021-11-01 11:26:22 +01:00

93 lines
2.1 KiB
Go

package openbgpd
import (
"encoding/json"
"io/ioutil"
"path/filepath"
"testing"
)
func readTestData(filename string) map[string]interface{} {
data, _ := ioutil.ReadFile(filepath.Join("testdata", filename))
payload := make(map[string]interface{})
_ = json.Unmarshal(data, &payload)
return payload
}
func TestDecodeAPIStatus(t *testing.T) {
res := readTestData("status.json")
s := decodeAPIStatus(res)
t.Log(s.ServerTime)
t.Log(s.LastReboot)
}
func TestDecodeNeighbors(t *testing.T) {
res := readTestData("show.neighbor.json")
n, err := decodeNeighbors(res)
if err != nil {
t.Fatal(err)
}
t.Log(n[0])
}
func TestDecodeNeighborsStatus(t *testing.T) {
res := readTestData("show.summary.json")
n, err := decodeNeighborsStatus(res)
if err != nil {
t.Fatal(err)
}
if len(n) != 3 {
t.Error("unexpected length:", len(n))
}
t.Log(*n[0])
}
func TestDecodeRoutes(t *testing.T) {
res := readTestData("rib.json")
routes, err := decodeRoutes(res)
if err != nil {
t.Fatal(err)
}
if len(routes) != 2 {
t.Error("unexpected length:", len(routes))
}
// Check first route
r := routes[0]
if r.Network != "23.42.1.0/24" {
t.Error("unexpected network:", r.Network)
}
// Community decoding
if r.BGP.Communities[0][0] != 20119 {
t.Error("unexpected community:", r.BGP.Communities[0])
}
if r.BGP.Communities[0][1] != 3 {
t.Error("unexpected community:", r.BGP.Communities[0])
}
if r.BGP.ExtCommunities[1][0] != "rt" {
t.Error("unexpected community:", r.BGP.ExtCommunities[0])
}
if r.BGP.ExtCommunities[1][1] != 65000 {
t.Error("unexpected community:", r.BGP.ExtCommunities[0])
}
if r.BGP.ExtCommunities[1][2] != 11000 {
t.Error("unexpected community:", r.BGP.ExtCommunities[0])
}
if r.BGP.AsPath[0] != 1111 {
t.Error("unexpected as_path:", r.BGP.AsPath)
}
t.Log(r.Age)
}
func TestDecodeExtendedCommunities(t *testing.T) {
data := []interface{}{"rt 123:456", "error invalid community"}
comms := decodeExtendedCommunities(data)
if len(comms) != 1 {
t.Fatal("expected 1 valid community")
}
if comms[0][0] != "rt" && comms[0][1] != 123 && comms[0][2] != 456 {
t.Fatal("unexpected result:", comms[0])
}
}