Commit 54338929 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

selftests: drv-net: factor out parsing of the env



The tests with a remote end will use a different class,
for clarity, but will also need to parse the env.
So factor parsing the env out to a function.

Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
Link: https://lore.kernel.org/r/20240420025237.3309296-3-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 1a20a9a0
Loading
Loading
Loading
Loading
+27 −18
Original line number Diff line number Diff line
@@ -6,12 +6,36 @@ from pathlib import Path
from lib.py import ip
from lib.py import NetdevSimDev


def _load_env_file(src_path):
    env = os.environ.copy()

    src_dir = Path(src_path).parent.resolve()
    if not (src_dir / "net.config").exists():
        return env

    lexer = shlex.shlex(open((src_dir / "net.config").as_posix(), 'r').read())
    k = None
    for token in lexer:
        if k is None:
            k = token
            env[k] = ""
        elif token == "=":
            pass
        else:
            env[k] = token
            k = None
    return env


class NetDrvEnv:
    """
    Class for a single NIC / host env, with no remote end
    """
    def __init__(self, src_path):
        self._ns = None

        self.env = os.environ.copy()
        self._load_env_file(src_path)
        self.env = _load_env_file(src_path)

        if 'NETIF' in self.env:
            self.dev = ip("link show dev " + self.env['NETIF'], json=True)[0]
@@ -34,19 +58,4 @@ class NetDrvEnv:
            self._ns.remove()
            self._ns = None

    def _load_env_file(self, src_path):
        src_dir = Path(src_path).parent.resolve()
        if not (src_dir / "net.config").exists():
            return
        lexer = shlex.shlex(open((src_dir / "net.config").as_posix(), 'r').read())
        k = None
        for token in lexer:
            if k is None:
                k = token
                self.env[k] = ""
            elif token == "=":
                pass
            else:
                self.env[k] = token
                k = None