On Fri, Feb 17, 2023 at 6:44 PM Bruce Richardson
<bruce.richard...@intel.com> wrote:
>
> On Mon, Feb 13, 2023 at 04:28:37PM +0100, Juraj Linkeš wrote:
> > The abstraction model in DTS is as follows:
> > Node, defining and implementing methods common to and the base of SUT
> > (system under test) Node and TG (traffic generator) Node.
> > Remote Session, defining and implementing methods common to any remote
> > session implementation, such as SSH Session.
> > OSSession, defining and implementing methods common to any operating
> > system/distribution, such as Linux.
> >
> > OSSession uses a derived Remote Session and Node in turn uses a derived
> > OSSession. This split delegates OS-specific and connection-specific code
> > to specialized classes designed to handle the differences.
> >
> > The base classes implement the methods or parts of methods that are
> > common to all implementations and defines abstract methods that must be
> > implemented by derived classes.
> >
> > Part of the abstractions is the DTS test execution skeleton:
> > execution setup, build setup and then test execution.
> >
> > Signed-off-by: Juraj Linkeš <juraj.lin...@pantheon.tech>
> > ---
> >  dts/conf.yaml                                 |  11 +-
> >  dts/framework/config/__init__.py              |  73 +++++++-
> >  dts/framework/config/conf_yaml_schema.json    |  76 +++++++-
> >  dts/framework/dts.py                          | 162 ++++++++++++++----
> >  dts/framework/exception.py                    |  46 ++++-
> >  dts/framework/logger.py                       |  24 +--
> >  dts/framework/remote_session/__init__.py      |  30 +++-
> >  dts/framework/remote_session/linux_session.py |  11 ++
> >  dts/framework/remote_session/os_session.py    |  46 +++++
> >  dts/framework/remote_session/posix_session.py |  12 ++
> >  .../remote_session/remote/__init__.py         |  16 ++
> >  .../{ => remote}/remote_session.py            |  41 +++--
> >  .../{ => remote}/ssh_session.py               |  20 +--
> >  dts/framework/settings.py                     |  15 +-
> >  dts/framework/testbed_model/__init__.py       |  10 +-
> >  dts/framework/testbed_model/node.py           | 104 ++++++++---
> >  dts/framework/testbed_model/sut_node.py       |  13 ++
> >  17 files changed, 591 insertions(+), 119 deletions(-)
> >  create mode 100644 dts/framework/remote_session/linux_session.py
> >  create mode 100644 dts/framework/remote_session/os_session.py
> >  create mode 100644 dts/framework/remote_session/posix_session.py
> >  create mode 100644 dts/framework/remote_session/remote/__init__.py
> >  rename dts/framework/remote_session/{ => remote}/remote_session.py (61%)
> >  rename dts/framework/remote_session/{ => remote}/ssh_session.py (91%)
> >  create mode 100644 dts/framework/testbed_model/sut_node.py
> >
> <snip>
>
> > +
> > +def _exit_dts() -> None:
> > +    """
> > +    Process all errors and exit with the proper exit code.
> > +    """
> > +    if errors and dts_logger:
> > +        dts_logger.debug("Summary of errors:")
> > +        for error in errors:
> > +            dts_logger.debug(repr(error))
>
> This is nice to have at the end. However, what I think is a definite
> niceer-to-have here, is the actual commands which produced the errors. In my
> case, the summary just reports:
>
> 2023/02/17 16:59:59 - dts_runner - DEBUG - ValueError("invalid literal for 
> int() with base 10: '\\x1b[?2004l\\r\\r\\n0'")
>
> What is really missing and I had to hunt for, was what command produced the
> invalid literal. Perhaps that's the responsibility of the error message to
> include the details, but either way it would be great to get!
>

Yes, it should be in the error message. It's not there because this is
a corner case in code that will be replaced shortly.

> /Bruce

Reply via email to