Exemplo n.º 1
0
    def construct_from_uptime_report(cls, report):
        if report is None:
            return None

        # uptime...
        match = re.match(r'.*up (\d+)?\s*(day)?(?:s)?(?:,)?\s*(\d+)?\s*(min)?(?:s)?(?:,)?\s*(\d+)?(?::)?(\d+)?,',
                         report)

        if match:
            fields = match.groups()

            try:
                if fields[1] == 'day' and fields[3] == 'min':
                    days = int(fields[0])
                    hours = 0
                    minutes = int(fields[2])

                elif fields[1] == 'day' and fields[3] is None:
                    days = int(fields[0])
                    hours = 0 if fields[2] is None else int(fields[2])
                    minutes = 0 if fields[5] is None else int(fields[5])

                elif fields[1] is None and fields[3] == 'min':
                    days = 0
                    hours = 0
                    minutes = int(fields[0])

                else:
                    days = 0
                    hours = int(fields[0] if fields[0] is not None else fields[2])
                    minutes = int(fields[5])

            except TypeError as ex:
                print('Timedelta: unparsable:[%s]' % report.strip(), file=sys.stderr)
                print('Timedelta: fields:%s' % str(fields), file=sys.stderr)
                print(ExceptionReport.construct(ex), file=sys.stderr)
                return None

            return cls(days=days, hours=hours, minutes=minutes)
Exemplo n.º 2
0
        print(cmd, file=sys.stderr)
        sys.stderr.flush()

    try:
        # ------------------------------------------------------------------------------------------------------------
        # run...

        for line in sys.stdin:
            datum = PathDict.construct_from_jstr(line)

            if datum is None:
                continue

            if cmd.ignore and not datum.has_path(cmd.path):
                continue

            node = datum.node(cmd.path)

            print(JSONify.dumps(node))
            sys.stdout.flush()

    # ----------------------------------------------------------------------------------------------------------------
    # end...

    except KeyboardInterrupt:
        if cmd.verbose:
            print("node: KeyboardInterrupt", file=sys.stderr)

    except Exception as ex:
        print(JSONify.dumps(ExceptionReport.construct(ex)), file=sys.stderr)
        print(cmd, file=sys.stderr)

    try:
        # ------------------------------------------------------------------------------------------------------------
        # resources...

        agent = OSIOTopicAgent(cmd.path, cmd.verbose)

        if cmd.verbose:
            print(agent, file=sys.stderr)

        # ------------------------------------------------------------------------------------------------------------
        # run...

        agent.subscribe()

    # ----------------------------------------------------------------------------------------------------------------
    # end...

    except KeyboardInterrupt:
        if cmd.verbose:
            print("osio_topic_stream: KeyboardInterrupt", file=sys.stderr)

    except Exception as ex:
        if not ex.__class__.__name__ == "error":  # TODO: needs cleaner handling
            print(JSONify.dumps(ExceptionReport.construct(ex)),
                  file=sys.stderr)

    finally:
        agent.close()
Exemplo n.º 4
0
#!/usr/bin/env python3
"""
Created on 9 Jan 2017

@author: Bruno Beloff ([email protected])

command line example:
./test/exception_report_test.py 2>> ex.log
"""

import sys

from scs_core.data.json import JSONify
from scs_core.sys.exception_report import ExceptionReport

# --------------------------------------------------------------------------------------------------------------------
# run...

try:
    raise RuntimeError("test exception")

except Exception as ex:
    exr = ExceptionReport.construct(ex)
    print(exr)
    print("-")

    print(JSONify.dumps(exr), file=sys.stderr)

finally:
    print("done.")