On Fri, Jun 21, 2019 at 3:46 PM Tom Hromatka <tom.hroma...@oracle.com> wrote:
>
> This commit adds a Run() class that can invoke Python's Popen
> command.
>

Same comment here. More information.

> Signed-off-by: Tom Hromatka <tom.hroma...@oracle.com>

You can add my reviewed-by once the commit log is fixed up.

> ---
>  tests/ftests/run.py | 73 
> +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 73 insertions(+)
>  create mode 100644 tests/ftests/run.py
>
> diff --git a/tests/ftests/run.py b/tests/ftests/run.py
> new file mode 100644
> index 0000000..477770d
> --- /dev/null
> +++ b/tests/ftests/run.py
> @@ -0,0 +1,73 @@
> +#!/usr/bin/env python
> +#
> +# Run class for the libcgroup functional tests
> +#
> +# Copyright (c) 2019 Oracle and/or its affiliates.  All rights reserved.
> +# Author: Tom Hromatka <tom.hroma...@oracle.com>
> +#
> +
> +#
> +# This library is free software; you can redistribute it and/or modify it
> +# under the terms of version 2.1 of the GNU Lesser General Public License as
> +# published by the Free Software Foundation.
> +#
> +# This library is distributed in the hope that it will be useful, but WITHOUT
> +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public 
> License
> +# for more details.
> +#
> +# You should have received a copy of the GNU Lesser General Public License
> +# along with this library; if not, see <http://www.gnu.org/licenses>.
> +#
> +
> +from log import Log
> +import subprocess
> +import time
> +import types
> +
> +
> +class Run(object):
> +    @staticmethod
> +    def run(command, shell_bool=False):
> +        if shell_bool:
> +            if type(command) is types.StringType:
> +                # nothing to do.  command is already formatted as a string
> +                pass
> +            elif type(command) is types.ListType:
> +                command = " ".join(command)
> +            else:
> +                raise ValueError('Unsupported command type')
> +
> +        subproc = subprocess.Popen(command, shell=shell_bool,
> +                                   stdout=subprocess.PIPE,
> +                                   stderr=subprocess.PIPE)
> +        out, err = subproc.communicate()
> +        ret = subproc.returncode
> +
> +        out = out.strip()
> +        err = err.strip()
> +
> +        if shell_bool:
> +            Log.log_debug("run:\n\tcommand = %s\n\tret = %d\n\tstdout = 
> %s\n\tstderr = %s" %
> +                          (command, ret, out, err))
> +        else:
> +            Log.log_debug("run:\n\tcommand = %s\n\tret = %d\n\tstdout = 
> %s\n\tstderr = %s" %
> +                          (" ".join(command), ret, out, err))
> +
> +        if ret != 0:
> +            raise RunError("Command '%s' failed" % " ".join(command), ret, 
> out, err)
> +
> +        return out
> +
> +class RunError(Exception):
> +    def __init__(self, message, ret, stdout, stderr):
> +        super(RunError, self).__init__(message)
> +
> +        self.ret = ret
> +        self.stdout = stdout
> +        self.stderr = stderr
> +
> +    def __str__(self):
> +        out_str = "RunError:\n\tmessage = %s\n\tret = %d" % (self.message, 
> self.ret)
> +        out_str += "\n\tstdout = %s\n\tstderr = %s" % (self.stdout, 
> self.stderr)
> +        return out_str
> --
> 1.8.3.1
>
>
>
> _______________________________________________
> Libcg-devel mailing list
> Libcg-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/libcg-devel


_______________________________________________
Libcg-devel mailing list
Libcg-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to