Skip to content

Commit d2e8978

Browse files
authored
BMP: Cover router ready check with tests (#376)
1 parent ea9e89e commit d2e8978

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed

protocols/bgp/server/bmp_router_test.go

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,141 @@
11
package server
22

3+
import (
4+
"sync/atomic"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func TestReady(t *testing.T) {
11+
atomicTrue := atomic.Bool{}
12+
atomicTrue.Store(true)
13+
14+
tests := []struct {
15+
name string
16+
r *Router
17+
vrf uint64
18+
afi uint16
19+
expected bool
20+
}{
21+
{
22+
name: "No neighbors",
23+
r: &Router{
24+
neighborManager: &neighborManager{
25+
neighbors: []*neighbor{},
26+
},
27+
},
28+
vrf: 100,
29+
afi: 4,
30+
expected: false,
31+
},
32+
{
33+
name: "No neighbor matches VRF",
34+
r: &Router{
35+
neighborManager: &neighborManager{
36+
neighbors: []*neighbor{
37+
{
38+
vrfID: 99,
39+
},
40+
},
41+
},
42+
},
43+
vrf: 100,
44+
afi: 4,
45+
expected: false,
46+
},
47+
{
48+
name: "Neighbors not ready",
49+
r: &Router{
50+
neighborManager: &neighborManager{
51+
neighbors: []*neighbor{
52+
{
53+
vrfID: 100,
54+
fsm: &FSM{
55+
ipv4Unicast: &fsmAddressFamily{
56+
endOfRIBMarkerReceived: atomic.Bool{},
57+
},
58+
},
59+
},
60+
{
61+
vrfID: 99,
62+
fsm: &FSM{
63+
ipv4Unicast: &fsmAddressFamily{
64+
endOfRIBMarkerReceived: atomic.Bool{},
65+
},
66+
},
67+
},
68+
},
69+
},
70+
},
71+
vrf: 100,
72+
afi: 4,
73+
expected: false,
74+
},
75+
{
76+
name: "Neighbors half ready",
77+
r: &Router{
78+
neighborManager: &neighborManager{
79+
neighbors: []*neighbor{
80+
{
81+
vrfID: 100,
82+
fsm: &FSM{
83+
ipv4Unicast: &fsmAddressFamily{
84+
endOfRIBMarkerReceived: atomic.Bool{},
85+
},
86+
},
87+
},
88+
{
89+
vrfID: 99,
90+
fsm: &FSM{
91+
ipv4Unicast: &fsmAddressFamily{
92+
endOfRIBMarkerReceived: atomicTrue,
93+
},
94+
},
95+
},
96+
},
97+
},
98+
},
99+
vrf: 100,
100+
afi: 4,
101+
expected: false,
102+
},
103+
{
104+
name: "Neighbors ready",
105+
r: &Router{
106+
neighborManager: &neighborManager{
107+
neighbors: []*neighbor{
108+
{
109+
vrfID: 100,
110+
fsm: &FSM{
111+
ipv4Unicast: &fsmAddressFamily{
112+
endOfRIBMarkerReceived: atomicTrue,
113+
},
114+
},
115+
},
116+
{
117+
vrfID: 100,
118+
fsm: &FSM{
119+
ipv4Unicast: &fsmAddressFamily{
120+
endOfRIBMarkerReceived: atomicTrue,
121+
},
122+
},
123+
},
124+
},
125+
},
126+
},
127+
vrf: 100,
128+
afi: 4,
129+
expected: true,
130+
},
131+
}
132+
133+
for _, test := range tests {
134+
res := test.r.Ready(test.vrf, test.afi)
135+
assert.Equal(t, test.expected, res, test.name)
136+
}
137+
}
138+
3139
/*func TestBMPRouterServe(t *testing.T) {
4140
tests := []struct {
5141
name string

0 commit comments

Comments
 (0)