Пример #1
0
def get_log_files(out_dir, app_name):
    if log.get_level() > 2:
        flog_out = open(os.path.join(out_dir, app_name + '_out.log'), 'wt')
        flog_err = open(os.path.join(out_dir, app_name + '_err.log'), 'wt')
        logger.debug('Redirecting ' + app_name + ' output to ' + app_name +
                     '*.log')
    else:
        flog_out = flog_err = DEVNULL
    return (flog_out, flog_err)
Пример #2
0
def get_windows(all=False):
    cmd = ['search', '--name', '.*']
    if not all:
        cmd.insert(1, '--onlyvisible')
    ids = xdotool(cmd).splitlines()
    res = []
    for i in ids:
        name = ''
        try:
            name = xdotool(['getwindowname', i])[:-1]
        except CalledProcessError:
            name = '** No longer there **'
        res.append((i, name))
        if log.get_level() >= 2:
            logger.debug('get_windows {} {}'.format(i, name))
    if log.get_level() >= 2:
        logger.debug('get_windows end of list')
    return res
Пример #3
0
def debug_window(id=None):  # pragma: no cover
    if log.get_level() < 2:
        return
    if shutil.which('xprop'):
        if id is None:
            try:
                id = xdotool(['getwindowfocus']).rstrip()
            except CalledProcessError:
                logger.debug('xdotool getwindowfocus failed!')
                pass
        if id:
            call(['xprop', '-id', id])
Пример #4
0
def debug_window(id=None):  # pragma: no cover
    if log.get_level() < 2:
        return
    if shutil.which('xprop'):
        if id is None:
            try:
                id = xdotool(['getwindowfocus']).rstrip()
            except CalledProcessError:
                logger.debug('xdotool getwindowfocus failed!')
                pass
        if id:
            call(['xprop', '-id', id])
    if shutil.which('vmstat'):
        call(['vmstat', '-s'])
    if shutil.which('uptime'):
        call(['uptime'])
    logger.debug("Visible windows:")
    for i in get_windows():
        logger.debug("Window ID: `{}` ; name: `{}`".format(i[0], i[1]))
    logger.debug("All windows:")
    for i in get_windows(all=True):
        logger.debug("Window ID: `{}` ; name: `{}`".format(i[0], i[1]))
Пример #5
0
def wait_xserver(out_dir, num_try):
    global time_out_scale
    timeout = 10 * time_out_scale
    DELAY = 0.5
    logger.debug('Waiting for virtual X server ...')
    try:
        logger.debug('Current DISPLAY is ' + os.environ['DISPLAY'])
    except KeyError:
        logger.error('Missing DISPLAY on wait_xserver!')
    if shutil.which('setxkbmap'):
        cmd = ['setxkbmap', '-query']
    elif shutil.which('xset'):  # pragma: no cover
        cmd = ['xset', 'q']
    else:  # pragma: no cover
        cmd = ['ls']
        logger.warning(
            'No setxkbmap nor xset available, unable to verify if X is running'
        )
    for i in range(int(timeout / DELAY)):
        logger.debug('Checking using ' + str(cmd))
        flog_out, flog_err = get_log_files(out_dir, cmd[0])
        ret = call(cmd, stdout=flog_out, stderr=flog_err, close_fds=True)
        if not ret:
            time_wait = 0.5 * (num_try + 1) * (num_try + 1) * time_out_scale
            if log.get_level() > 2:
                logger.debug(str(cmd) + ' returned 0')
                logger.debug(
                    'Waiting {} seconds before using the X server'.format(
                        time_wait))
            # On GitLab I saw setxkbmap success and recordmydesktop and KiCad failing to connect to X
            # One possible solution is a wait here.
            # Another is detecting KiCad exited.
            time.sleep(time_wait)
            return
        logger.debug('   Retry')
        time.sleep(DELAY)
    raise RuntimeError('Timed out waiting for virtual X server')