return f
+def expectedFailureIfNexthopIsNotAvailable():
+ def f(func):
+ rc = call('ip nexthop list')
+ if rc == 0:
+ return func
+ else:
+ return unittest.expectedFailure(func)
+
+ return f
+
def setUpModule():
global running_units
'dummy99',
'gretun97',
'ip6gretun97',
- 'test1'
+ 'test1',
+ 'veth99',
]
units = [
'25-neighbor-ipv6.network',
'25-neighbor-ip-dummy.network',
'25-neighbor-ip.network',
+ '25-nexthop.network',
'25-link-local-addressing-no.network',
'25-link-local-addressing-yes.network',
'25-link-section-unmanaged.network',
'25-gateway-next-static.network',
'25-sysctl-disable-ipv6.network',
'25-sysctl.network',
+ '25-veth-peer.network',
+ '25-veth.netdev',
'26-link-local-addressing-ipv6.network',
'configure-without-carrier.network',
'routing-policy-rule-dummy98.network',
self.assertRegex(output, 'inet 10.1.2.3/16 scope global dummy98')
self.assertNotRegex(output, 'inet 10.2.3.4/16 scope global dynamic dummy98')
+ @expectedFailureIfNexthopIsNotAvailable()
+ def test_nexthop(self):
+ copy_unit_to_networkd_unit_path('25-nexthop.network', '25-veth.netdev', '25-veth-peer.network')
+ start_networkd()
+ self.wait_online(['veth99:routable', 'veth-peer:routable'])
+
+ output = check_output('ip nexthop list dev veth99')
+ print(output)
+ self.assertRegex(output, '192.168.5.1')
+
class NetworkdStateFileTests(unittest.TestCase, Utilities):
links = [
'dummy98',