#! /usr/bin/env python3 # # SPDX-License-Identifier: GPL-2.0-or-later # # test/pasta/ndp.py - pasta NDP functionality # # Copyright Red Hat # Author: David Gibson import contextlib import dataclasses from typing import Iterator import exeter import tunbridge import tasst @dataclasses.dataclass class UnconfiguredScenario(exeter.Scenario): """Tests for a pasta instance without --config-net""" host: tunbridge.Site guest: tunbridge.Site ifname: str addr6: tunbridge.ip.AddrMask6 gw6: tunbridge.ip.Addr6 @exeter.scenariotest def test_ifname(self) -> None: ifs = tunbridge.ip.ifs(self.guest) exeter.assert_eq(set(ifs), {'lo', self.ifname}) @tunbridge.ndp.NdpScenario.subscenario def test_ndp(self) -> tunbridge.ndp.NdpScenario: tunbridge.ip.ifup(self.guest, self.ifname) return tunbridge.ndp.NdpScenario(client=self.guest, ifname=self.ifname, network=self.addr6.network, gateway=self.gw6) @UnconfiguredScenario.test @contextlib.contextmanager def simh_pasta_setup() -> Iterator[UnconfiguredScenario]: with (tunbridge.sample.simple_host('host') as simh, tunbridge.sample.isolated('guest', simh.site) as guest): assert simh.ip6 is not None assert simh.gw6_ll is not None with tasst.pasta.pasta(simh.site, guest): yield UnconfiguredScenario(host=simh.site, guest=guest, ifname=simh.ifname, addr6=simh.ip6, gw6=simh.gw6_ll) if __name__ == '__main__': exeter.main()