Add a set of bridgedomain unit tests, including a fully formed correct one. Fix one bug found along the way!

This commit is contained in:
Pim van Pelt
2022-03-13 18:55:00 +00:00
parent 6ce6718b34
commit 527b1ca95b
6 changed files with 131 additions and 1 deletions

View File

@ -0,0 +1,48 @@
test:
description: "A few correct examples of well formed bridgedomains"
errors:
count: 0
---
bondethernets:
BondEthernet0:
interfaces: [ GigabitEthernet3/0/0, GigabitEthernet3/0/1 ]
interfaces:
GigabitEthernet1/0/0:
mtu: 3000
GigabitEthernet1/0/1:
mtu: 3000
GigabitEthernet2/0/0:
mtu: 9000
sub-interfaces:
100:
mtu: 2000
GigabitEthernet2/0/1:
mtu: 9000
sub-interfaces:
100:
mtu: 2000
GigabitEthernet3/0/0:
mtu: 9000
GigabitEthernet3/0/1:
mtu: 9000
BondEthernet0:
mtu: 3000
sub-interfaces:
100:
mtu: 2000
bridgedomains:
bd10:
description: "Bridge Domain 10"
mtu: 3000
interfaces: [ GigabitEthernet1/0/0, GigabitEthernet1/0/1, BondEthernet0 ]
bd11:
description: "Bridge Domain 11"
mtu: 2000
interfaces: [ GigabitEthernet2/0/0.100, GigabitEthernet2/0/1.100, BondEthernet0.100 ]
lcp: "bvi11"
addresses: [ 192.0.2.1/24, 2001:db8::1/64 ]

View File

@ -0,0 +1,19 @@
test:
description: "Interfaces put into the bridge, must exist as phy or sub-interface"
errors:
expected:
- "bridgedomain .* member .* doesn't exist"
count: 2
---
interfaces:
GigabitEthernet1/0/0:
description: "This is the wrong interface, the bridge has Gi1/0/1, not Gi1/0/0"
GigabitEthernet2/0/0:
sub-interfaces:
101:
description: "This is the wrong interface, the bridge has Gi2/0/0.100, not Gi2/0/0.101"
bridgedomains:
bd10:
description: "Bridge Domain 10"
interfaces: [ GigabitEthernet1/0/1, GigabitEthernet2/0/0.100 ]

View File

@ -0,0 +1,20 @@
test:
description: "Interfaces put into the bridge, can't be L3 (so cannot have an LCP)"
errors:
expected:
- "bridgedomain .* member .* has an LCP"
count: 3
---
interfaces:
GigabitEthernet1/0/0:
lcp: "e1-0-0"
GigabitEthernet2/0/0:
lcp: "e2-0-0"
sub-interfaces:
101:
lcp: "v101"
bridgedomains:
bd10:
description: "Bridge Domain 10"
interfaces: [ GigabitEthernet1/0/0, GigabitEthernet2/0/0, GigabitEthernet2/0/0.101 ]

View File

@ -0,0 +1,22 @@
test:
description: "Interfaces put into the bridge, can't be L3 (so cannot have an address)"
errors:
expected:
- "interface .* has adddress.* but no LCP"
- "sub-interface .* has address.* but .* does not have LCP"
- "bridgedomain .* member .* has an address"
count: 6
---
interfaces:
GigabitEthernet1/0/0:
addresses: [ 192.0.2.1/29 ]
GigabitEthernet2/0/0:
addresses: [ 192.0.2.9/29 ]
sub-interfaces:
101:
addresses: [ 192.0.2.17/29 ]
bridgedomains:
bd10:
description: "Bridge Domain 10"
interfaces: [ GigabitEthernet1/0/0, GigabitEthernet2/0/0, GigabitEthernet2/0/0.101 ]

View File

@ -0,0 +1,21 @@
test:
description: "In a BridgeDomain, all members must have the same MTU as the bridge itself"
errors:
expected:
- "bridgedomain .* member .* has MTU (2000|3000|500), while bridge has 1500"
count: 3
---
interfaces:
GigabitEthernet1/0/0:
mtu: 2000
GigabitEthernet2/0/0:
mtu: 3000
sub-interfaces:
101:
mtu: 500
bridgedomains:
bd10:
description: "Bridge Domain 10"
mtu: 1500
interfaces: [ GigabitEthernet1/0/0, GigabitEthernet2/0/0, GigabitEthernet2/0/0.101 ]

View File

@ -215,7 +215,7 @@ def get_lcp(yaml, ifname):
return iface['lcp']
if not is_l3(yaml, ifname):
return None
if not 'lcp' in parent_iface:
if parent_iface and not 'lcp' in parent_iface:
return None
if not 'encapsulation' in iface:
if not '.' in ifname: