Message ID | 20240424221444.4194069-5-kuba@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | selftests: drv-net: round some sharp edges | expand |
Jakub Kicinski wrote: > Throw a slightly more helpful exception when env variables > are partially populated. Prior to this change we'd get > a dictionary key exception somewhere later on. > > Signed-off-by: Jakub Kicinski <kuba@kernel.org> > --- > .../selftests/drivers/net/lib/py/env.py | 20 +++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/tools/testing/selftests/drivers/net/lib/py/env.py b/tools/testing/selftests/drivers/net/lib/py/env.py > index a6a5a5f9c6db..fda4967503de 100644 > --- a/tools/testing/selftests/drivers/net/lib/py/env.py > +++ b/tools/testing/selftests/drivers/net/lib/py/env.py > @@ -88,6 +88,7 @@ from .remote import Remote > self._ns_peer = None > > if "NETIF" in self.env: > + self._check_env() > self.dev = ip("link show dev " + self.env['NETIF'], json=True)[0] > > self.v4 = self.env.get("LOCAL_V4") > @@ -143,6 +144,25 @@ from .remote import Remote > ip(f"-6 addr add dev {self._ns_peer.nsims[0].ifname} {self.nsim_v6_pfx}2/64 nodad", ns=self._netns) > ip(f" link set dev {self._ns_peer.nsims[0].ifname} up", ns=self._netns) > > + def _check_env(self): > + vars_needed = [ > + ["LOCAL_V4", "LOCAL_V6"], > + ["REMOTE_V4", "REMOTE_V6"], > + ["REMOTE_TYPE"], > + ["REMOTE_ARGS"] > + ] > + missing = [] > + > + for choice in vars_needed: > + for entry in choice: > + if entry in self.env: > + break > + else: > + missing.append(choice) > + if missing: > + raise Exception("Invalid environment, missing configuration:", missing, > + "Please see tools/testing/selftests/drivers/net/README.rst") > + I suppose this could still reach the exception if a file contains LOCAL_V4 and REMOTE_V6 or vice versa. But this is best effort anyway.
diff --git a/tools/testing/selftests/drivers/net/lib/py/env.py b/tools/testing/selftests/drivers/net/lib/py/env.py index a6a5a5f9c6db..fda4967503de 100644 --- a/tools/testing/selftests/drivers/net/lib/py/env.py +++ b/tools/testing/selftests/drivers/net/lib/py/env.py @@ -88,6 +88,7 @@ from .remote import Remote self._ns_peer = None if "NETIF" in self.env: + self._check_env() self.dev = ip("link show dev " + self.env['NETIF'], json=True)[0] self.v4 = self.env.get("LOCAL_V4") @@ -143,6 +144,25 @@ from .remote import Remote ip(f"-6 addr add dev {self._ns_peer.nsims[0].ifname} {self.nsim_v6_pfx}2/64 nodad", ns=self._netns) ip(f" link set dev {self._ns_peer.nsims[0].ifname} up", ns=self._netns) + def _check_env(self): + vars_needed = [ + ["LOCAL_V4", "LOCAL_V6"], + ["REMOTE_V4", "REMOTE_V6"], + ["REMOTE_TYPE"], + ["REMOTE_ARGS"] + ] + missing = [] + + for choice in vars_needed: + for entry in choice: + if entry in self.env: + break + else: + missing.append(choice) + if missing: + raise Exception("Invalid environment, missing configuration:", missing, + "Please see tools/testing/selftests/drivers/net/README.rst") + def __enter__(self): return self
Throw a slightly more helpful exception when env variables are partially populated. Prior to this change we'd get a dictionary key exception somewhere later on. Signed-off-by: Jakub Kicinski <kuba@kernel.org> --- .../selftests/drivers/net/lib/py/env.py | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+)