#! /usr/bin/python3 # SPDX-License-Identifier: GPL-2.0-or-later # # tasst - Test A Simple Socket Transport # library of test helpers for passt & pasta # # tasst/metatest/veth - Test the veth creation helper # # These test code from tasst.site, but require additional support from # tasst.nstool. # # Copyright Red Hat # Author: David Gibson import ipaddress import avocado from tasst import Tasst from tasst.site import REAL_HOST from tasst.nstool import UnshareSite class VethTasst(Tasst): """ Test helpers for creating veths between namespaces :avocado: tags=meta """ def setUp(self): super().setUp() self.ns1 = UnshareSite(type(self).__name__ + '.1', '-Un') self.ns2 = UnshareSite(type(self).__name__ + '.2', '-n', parent=self.ns1, sudo=True) self.ns1.veth('veth1', 'veth2', self.ns2) def tearDown(self): self.ns2.close() self.ns1.close() super().tearDown() def test_ifs(self): self.assertCountEqual(self.ns1.ifs(), ['lo', 'veth1']) self.assertCountEqual(self.ns2.ifs(), ['lo', 'veth2']) def test_mtu(self): self.assertEquals(self.ns1.mtu('veth1'), 1500) self.assertEquals(self.ns2.mtu('veth2'), 1500) def test_slaac(self, dad=None): TESTMAC = '02:aa:bb:cc:dd:ee' TESTIP = ipaddress.ip_interface('fe80::aa:bbff:fecc:ddee/64') self.ns1.fg('ip link set dev veth1 address {}'.format(TESTMAC), sudo=True) self.ns1.ifup('veth1', dad=dad) self.ns2.ifup('veth2') addrs = self.ns1.addr_wait('veth1', family='inet6', scope='link') self.assertEqual(addrs, [TESTIP]) def test_optimistic_dad(self): self.test_slaac(dad='optimistic') def test_no_dad(self): self.test_slaac(dad='disable')