Files
akvorado/outlet/routing/provider/bmp/utils_test.go
2025-11-04 08:22:43 +01:00

67 lines
2.2 KiB
Go

// SPDX-FileCopyrightText: 2022 Free Mobile
// SPDX-License-Identifier: AGPL-3.0-only
package bmp
import (
"testing"
"akvorado/common/helpers"
"github.com/osrg/gobgp/v4/pkg/packet/bgp"
)
func TestASPathFlat(t *testing.T) {
cases := []struct {
AsPath *bgp.PathAttributeAsPath
Expected []uint32
}{
{
AsPath: bgp.NewPathAttributeAsPath([]bgp.AsPathParamInterface{}),
Expected: []uint32{},
}, {
AsPath: bgp.NewPathAttributeAsPath([]bgp.AsPathParamInterface{
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_SEQ, []uint16{65402, 65403, 65404}),
}),
Expected: []uint32{65402, 65403, 65404},
}, {
AsPath: bgp.NewPathAttributeAsPath([]bgp.AsPathParamInterface{
bgp.NewAs4PathParam(bgp.BGP_ASPATH_ATTR_TYPE_SEQ, []uint32{65402, 65536, 65537}),
}),
Expected: []uint32{65402, 65536, 65537},
}, {
AsPath: bgp.NewPathAttributeAsPath([]bgp.AsPathParamInterface{
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_SET, []uint16{65402, 65403, 65404}),
}),
Expected: []uint32{65402},
}, {
AsPath: bgp.NewPathAttributeAsPath([]bgp.AsPathParamInterface{
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_CONFED_SEQ, []uint16{65402, 65403, 65404}),
}),
Expected: []uint32{65402, 65403, 65404},
}, {
AsPath: bgp.NewPathAttributeAsPath([]bgp.AsPathParamInterface{
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_CONFED_SET, []uint16{65402, 65403, 65404}),
}),
Expected: []uint32{65402},
}, {
AsPath: bgp.NewPathAttributeAsPath([]bgp.AsPathParamInterface{
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_SEQ, []uint16{65402, 65403, 65404}),
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_SET, []uint16{65405, 65406}),
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_CONFED_SEQ, []uint16{65407, 65408}),
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_CONFED_SET, []uint16{65409, 65410}),
bgp.NewAsPathParam(bgp.BGP_ASPATH_ATTR_TYPE_SEQ, []uint16{65411}),
}),
Expected: []uint32{65402, 65403, 65404, 65405, 65407, 65408, 65409, 65411},
},
}
for _, tc := range cases {
t.Run(tc.AsPath.String(), func(t *testing.T) {
got := asPathFlat(tc.AsPath)
if diff := helpers.Diff(got, tc.Expected); diff != "" {
t.Fatalf("asPathFlat() (-got, +want):\n%s", diff)
}
})
}
}