Skip to content

Commit

Permalink
test-network: extend tests for [BridgeVLAN] settings
Browse files Browse the repository at this point in the history
  • Loading branch information
yuwata authored and pull[bot] committed Jan 31, 2024
1 parent f2e4091 commit 1217112
Show file tree
Hide file tree
Showing 9 changed files with 162 additions and 11 deletions.
6 changes: 5 additions & 1 deletion test/test-network/conf/26-bridge-vlan-master.network
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@ Name=bridge99
IPv6AcceptRA=false

[BridgeVLAN]
VLAN=4060-4094
PVID=1020
VLAN=1018-1023
VLAN=1200-1210
EgressUntagged=1022-1025
EgressUntagged=1203-1208
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[BridgeVLAN]
PVID=
VLAN=
EgressUntagged=

PVID=2020
VLAN=2018-2023
VLAN=2200-2210
EgressUntagged=2022-2025
EgressUntagged=2203-2208
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[BridgeVLAN]
PVID=
VLAN=
EgressUntagged=

PVID=2020
VLAN=2018-2023
EgressUntagged=2022-2025
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[BridgeVLAN]
PVID=no
VLAN=
EgressUntagged=
6 changes: 5 additions & 1 deletion test/test-network/conf/26-bridge-vlan-slave.network
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,8 @@ IPv6AcceptRA=no
Bridge=bridge99

[BridgeVLAN]
VLAN=4064-4094
PVID=1010
VLAN=1008-1013
VLAN=1100-1110
EgressUntagged=1012-1015
EgressUntagged=1103-1108
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[BridgeVLAN]
PVID=
VLAN=
EgressUntagged=

PVID=2010
VLAN=2008-2013
VLAN=2100-2110
EgressUntagged=2012-2015
EgressUntagged=2103-2108
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[BridgeVLAN]
PVID=
VLAN=
EgressUntagged=

PVID=2010
VLAN=2008-2013
EgressUntagged=2012-2015
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# SPDX-License-Identifier: LGPL-2.1-or-later
[BridgeVLAN]
PVID=no
VLAN=
EgressUntagged=
111 changes: 102 additions & 9 deletions test/test-network/systemd-networkd-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -4415,23 +4415,116 @@ def tearDown(self):

def test_bridge_vlan(self):
copy_network_unit('11-dummy.netdev', '26-bridge-vlan-slave.network',
'26-bridge.netdev', '26-bridge-vlan-master.network')
'26-bridge.netdev', '26-bridge-vlan-master.network',
copy_dropins=False)
start_networkd()
self.wait_online(['test1:enslaved', 'bridge99:degraded'])

output = check_output('bridge vlan show dev test1')
print(output)
self.assertNotRegex(output, '4063')
for i in range(4064, 4095):
self.assertRegex(output, f'{i}')
self.assertNotRegex(output, '4095')
# check if the default VID is removed
self.assertNotIn('1 Egress Untagged', output)
for i in range(1000, 3000):
if i == 1010:
self.assertIn(f'{i} PVID', output)
elif i in range(1012, 1016) or i in range(1103, 1109):
self.assertIn(f'{i} Egress Untagged', output)
elif i in range(1008, 1014) or i in range(1100, 1111):
self.assertIn(f'{i}', output)
else:
self.assertNotIn(f'{i}', output)

output = check_output('bridge vlan show dev bridge99')
print(output)
# check if the default VID is removed
self.assertNotIn('1 Egress Untagged', output)
for i in range(1000, 3000):
if i == 1020:
self.assertIn(f'{i} PVID', output)
elif i in range(1022, 1026) or i in range(1203, 1209):
self.assertIn(f'{i} Egress Untagged', output)
elif i in range(1018, 1024) or i in range(1200, 1211):
self.assertIn(f'{i}', output)
else:
self.assertNotIn(f'{i}', output)

# Change vlan IDs
copy_network_unit('26-bridge-vlan-slave.network.d/10-override.conf',
'26-bridge-vlan-master.network.d/10-override.conf')
networkctl_reload()
self.wait_online(['test1:enslaved', 'bridge99:degraded'])

output = check_output('bridge vlan show dev test1')
print(output)
for i in range(1000, 3000):
if i == 2010:
self.assertIn(f'{i} PVID', output)
elif i in range(2012, 2016) or i in range(2103, 2109):
self.assertIn(f'{i} Egress Untagged', output)
elif i in range(2008, 2014) or i in range(2100, 2111):
self.assertIn(f'{i}', output)
else:
self.assertNotIn(f'{i}', output)

output = check_output('bridge vlan show dev bridge99')
print(output)
for i in range(1000, 3000):
if i == 2020:
self.assertIn(f'{i} PVID', output)
elif i in range(2022, 2026) or i in range(2203, 2209):
self.assertIn(f'{i} Egress Untagged', output)
elif i in range(2018, 2024) or i in range(2200, 2211):
self.assertIn(f'{i}', output)
else:
self.assertNotIn(f'{i}', output)

# Remove several vlan IDs
copy_network_unit('26-bridge-vlan-slave.network.d/20-override.conf',
'26-bridge-vlan-master.network.d/20-override.conf')
networkctl_reload()
self.wait_online(['test1:enslaved', 'bridge99:degraded'])

output = check_output('bridge vlan show dev test1')
print(output)
for i in range(1000, 3000):
if i == 2010:
self.assertIn(f'{i} PVID', output)
elif i in range(2012, 2016):
self.assertIn(f'{i} Egress Untagged', output)
elif i in range(2008, 2014):
self.assertIn(f'{i}', output)
else:
self.assertNotIn(f'{i}', output)

output = check_output('bridge vlan show dev bridge99')
print(output)
for i in range(1000, 3000):
if i == 2020:
self.assertIn(f'{i} PVID', output)
elif i in range(2022, 2026):
self.assertIn(f'{i} Egress Untagged', output)
elif i in range(2018, 2024):
self.assertIn(f'{i}', output)
else:
self.assertNotIn(f'{i}', output)

# Remove all vlan IDs
copy_network_unit('26-bridge-vlan-slave.network.d/30-override.conf',
'26-bridge-vlan-master.network.d/30-override.conf')
networkctl_reload()
self.wait_online(['test1:enslaved', 'bridge99:degraded'])

output = check_output('bridge vlan show dev test1')
print(output)
self.assertNotIn('PVID', output)
for i in range(1000, 3000):
self.assertNotIn(f'{i}', output)

output = check_output('bridge vlan show dev bridge99')
print(output)
self.assertNotRegex(output, '4059')
for i in range(4060, 4095):
self.assertRegex(output, f'{i}')
self.assertNotRegex(output, '4095')
self.assertNotIn('PVID', output)
for i in range(1000, 3000):
self.assertNotIn(f'{i}', output)

def test_bridge_vlan_issue_20373(self):
copy_network_unit('11-dummy.netdev', '26-bridge-vlan-slave-issue-20373.network',
Expand Down

0 comments on commit 1217112

Please sign in to comment.