# Path: igor/log.py
# def configure(fn):
# def backlog():
# def getLogger(name):
# 
# Path: igor/utils.py
# def run(cmd, with_retval=False):
# def dict_to_args(d):
# def cmdline_to_dict(cmdline):
#     def __init__(self, f):
#     def __enter__(self):
#     def __exit__(self, typ, value, traceback):
#     def mount(self, iso):
#     def umount(self):
#     def mount(self, iso):
#     def umount(self):
#     def mount(self, iso):
#     def umount(self):
# def surl(number):
#     def __init__(self, cleanfiles=[]):
#     def __enter__(self):
#     def __exit__(self, typ, value, traceback):
#     def cleanfile(self, f):
#     def clean(self):
# def scanf(pat, txt):
# def synchronized(lock):
#     def wrap(f):
#         def newFunction(*args, **kw):
# def xor(a, b):
# def parse_bool(s):
#     def __init__(self, interval=10):
#     def _debug(self, msg):
#     def run(self):
#     def stop(self):
#     def is_stopped(self):
#     def work(self):
#     def __init__(self, n):
#     def transition(self, val):
#     def __str__(self):
#     def __eq__(self, other):
#     def __ne__(self, other):
# def obj2xml(root, obj, as_string=False):
#     def __open(filename, fileobj=None):
#     def __read_yaml(filename, fileobj=None):
# def update_properties_only(obj, kwargs):
# class MountedArchive:
# class GvfsMountedArchive(MountedArchive):
# class LosetupMountedArchive(MountedArchive):
# class TemporaryDirectory:
# class PollingWorkerDaemon(threading.Thread):
# class State(object):
# class Factory(object):


from igor import log, utils
import main
import os
import threading
import time
import yaml
            raise Exception("Expected a different step to finish.")

        last_timestamp = self.created_at
        if len(self.results) > 0:
            last_timestamp = self.results[n - 1]["created_at"]

        current_testcase = self.testsuite.testcases()[n]
        is_passed = not is_success == current_testcase.expect_failure

        log = "(log output suppressed, only for failed testcases)"
        if not is_passed:
            try:
                log = unicode(str(self.get_artifact("log")), errors='ignore')
            except:
                log = "(no log output)"

        annotations = ""
        try:
            annotations = unicode(str(self.annotations()), errors='ignore')
        except Exception as e:
            logger.debug("No annotation or error: %s" % e.message)

        self.results.append({"created_at": time.time(),
                             "testcase": current_testcase.__to_dict__(),
                             "is_success": is_success,
                             "is_passed": is_passed,
                             "is_abort": is_abort,
                             "is_skipped": is_skipped,
                             "note": note,
                             "runtime": time.time() - last_timestamp,

# Path: igor/log.py
# def configure(fn):
# def backlog():
# def getLogger(name):
# 
# Path: igor/utils.py
# def run(cmd, with_retval=False):
# def dict_to_args(d):
# def cmdline_to_dict(cmdline):
#     def __init__(self, f):
#     def __enter__(self):
#     def __exit__(self, typ, value, traceback):
#     def mount(self, iso):
#     def umount(self):
#     def mount(self, iso):
#     def umount(self):
#     def mount(self, iso):
#     def umount(self):
# def surl(number):
#     def __init__(self, cleanfiles=[]):
#     def __enter__(self):
#     def __exit__(self, typ, value, traceback):
#     def cleanfile(self, f):
#     def clean(self):
# def scanf(pat, txt):
# def synchronized(lock):
#     def wrap(f):
#         def newFunction(*args, **kw):
# def xor(a, b):
# def parse_bool(s):
#     def __init__(self, interval=10):
#     def _debug(self, msg):
#     def run(self):
#     def stop(self):
#     def is_stopped(self):
#     def work(self):
#     def __init__(self, n):
#     def transition(self, val):
#     def __str__(self):
#     def __eq__(self, other):
#     def __ne__(self, other):
# def obj2xml(root, obj, as_string=False):
#     def __open(filename, fileobj=None):
#     def __read_yaml(filename, fileobj=None):
# def update_properties_only(obj, kwargs):
# class MountedArchive:
# class GvfsMountedArchive(MountedArchive):
# class LosetupMountedArchive(MountedArchive):
# class TemporaryDirectory:
# class PollingWorkerDaemon(threading.Thread):
# class State(object):
# class Factory(object):


# Path: igor/daemon/job.py
from igor import log, utils
import main
import os
import threading
import time
import yaml

            raise Exception("Expected a different step to finish.")

        last_timestamp = self.created_at
        if len(self.results) > 0:
            last_timestamp = self.results[n - 1]["created_at"]

        current_testcase = self.testsuite.testcases()[n]
        is_passed = not is_success == current_testcase.expect_failure

        log = "(log output suppressed, only for failed testcases)"
        if not is_passed:
            try:
                log = unicode(str(self.get_artifact("log")), errors='ignore')
            except:
                log = "(no log output)"

        annotations = ""
        try:
            annotations = unicode(str(self.annotations()), errors='ignore')
        except Exception as e:
            logger.debug("No annotation or error: %s" % e.message)

        self.results.append({"created_at": time.time(),
                             "testcase": current_testcase.__to_dict__(),
                             "is_success": is_success,
                             "is_passed": is_passed,
                             "is_abort": is_abort,
                             "is_skipped": is_skipped,
                             "note": note,
                             "runtime": time.time() - last_timestamp,

                             "log": log,