public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
blob ce6ecafc0c985337809dc033e57e6e84df8d2285 1692 bytes (raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
#! /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/static_ifup - Static address configuration
#
# These test code from tasst.site, but require additional support from
# tasst.nstool.
#
# Copyright Red Hat
# Author: David Gibson <david@gibson.dropbear.id.au>

import contextlib
import ipaddress

import avocado

from tasst import Tasst
from tasst.nstool import UnshareSite


class StaticNetTasst(Tasst):
    """
    Test helpers for static network configuration

    :avocado: tags=meta
    """

    IFNAME = 'testveth'
    TEST_IPS = [ipaddress.ip_interface('192.0.2.1/24'),
                ipaddress.ip_interface('2001:db8:9a55::1/112'),
                ipaddress.ip_interface('10.1.2.3/8')]

    @contextlib.contextmanager
    def setup_ns(self):
        with UnshareSite(type(self).__name__, '-Un') as ns:
            ns.veth(self.IFNAME, self.IFNAME + 'peer')
            ns.ifup(self.IFNAME, *self.TEST_IPS, dad='disable')
            yield ns

    def test_addr(self):
        with self.setup_ns() as ns:
            self.assertCountEqual(ns.addrs(self.IFNAME, scope='global'), self.TEST_IPS)

    def _test_routes(self, class_):
        expected_routes = [i.network for i in TEST_IPS
                           if isinstance(i, class_)]
        actual_routes = [class_(r['dst']).network
                         for r in self.ns.routes(dev=self.IFNAME))]
        self.assertCountEqual(expected_routes, actual_routes)

    def test_routes4(self):
        self._test_routes(IPv4Interface)

    def test_routes6(self):
        self._test_routes(IPv6Interface)

debug log:

solving ce6ecaf ...
found ce6ecaf in https://archives.passt.top/passt-dev/20230531015849.3229596-15-david@gibson.dropbear.id.au/
found eba8fef in https://archives.passt.top/passt-dev/20230531015849.3229596-14-david@gibson.dropbear.id.au/

applying [1/2] https://archives.passt.top/passt-dev/20230531015849.3229596-14-david@gibson.dropbear.id.au/
diff --git a/avocado/tasst/meta/static_ifup.py b/avocado/tasst/meta/static_ifup.py
new file mode 100644
index 0000000..eba8fef


applying [2/2] https://archives.passt.top/passt-dev/20230531015849.3229596-15-david@gibson.dropbear.id.au/
diff --git a/avocado/tasst/meta/static_ifup.py b/avocado/tasst/meta/static_ifup.py
index eba8fef..ce6ecaf 100644

Checking patch avocado/tasst/meta/static_ifup.py...
Applied patch avocado/tasst/meta/static_ifup.py cleanly.
Checking patch avocado/tasst/meta/static_ifup.py...
Applied patch avocado/tasst/meta/static_ifup.py cleanly.

index at:
100644 ce6ecafc0c985337809dc033e57e6e84df8d2285	avocado/tasst/meta/static_ifup.py

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).