Example #1
0
def perform_test(configs, log):
    core = Core(configs)
    try:
        core.configure()
        logger.info(
            'Starting test... You can interrupt test w/ Ctrl+C or SIGTERM signal'
        )
        core.start_test()

        while True:
            time.sleep(1)  # infinite loop until SIGTERM

    except KeyboardInterrupt:
        logger.info(
            'Keyboard interrupt, trying graceful shutdown. Do not press interrupt again, '
            'otherwise test might be broken')
        core.end_test()
    except Exception:
        logger.error('Uncaught exception in core\n', exc_info=True)
        core.end_test()
    finally:
        core.post_process()
        try:
            shutil.move(log, os.path.join(core.data_session.artifacts_dir,
                                          log))
        except Exception:
            logger.warning('Failed to move logfile %s to artifacts dir', log)
            logger.debug('Failed to move logfile %s to artifacts dir',
                         log,
                         exc_info=True)
Example #2
0
def main():
    import argparse
    parser = argparse.ArgumentParser(description='volta console worker')
    parser.add_argument('-d',
                        '--debug',
                        '-v',
                        '--verbose',
                        dest='verbose',
                        action='store_true',
                        default=False)
    parser.add_argument('-q',
                        '--quiet',
                        dest='quiet',
                        action='store_true',
                        default=False)
    parser.add_argument('-l', '--log', dest='log', default='volta.log')
    parser.add_argument('-c', '--config', dest='config')
    args = parser.parse_args()

    if not args.config:
        raise RuntimeError('Empty config')

    init_logging(args.log, args.verbose, args.quiet)
    cfg_dict = {}
    with open(args.config, 'r') as cfg_stream:
        try:
            cfg_dict = yaml.safe_load(cfg_stream)
        except:
            logger.debug('Config file format not yaml or json...',
                         exc_info=True)
            raise RuntimeError('Unknown config file format. Malformed?')

    core = Core(cfg_dict)

    try:
        core.configure()
        logger.info(
            'Starting test... You can interrupt test w/ Ctrl+C or SIGTERM signal'
        )
        core.start_test()

        while True:
            time.sleep(1)  # infinite loop until SIGTERM

    except KeyboardInterrupt:
        logger.info(
            'Keyboard interrupt, trying graceful shutdown. Do not press interrupt again...'
        )
        core.end_test()
    except:
        logger.error('Uncaught exception in core\n', exc_info=True)
    finally:
        core.post_process()
        core.collect_file(args.log)
Example #3
0
def main():
    import argparse
    parser = argparse.ArgumentParser(description='volta console worker')
    parser.add_argument('--debug',
                        dest='debug',
                        action='store_true',
                        default=False)
    parser.add_argument('-c', '--config', dest='config')
    args = parser.parse_args()

    logging.basicConfig(
        level="DEBUG" if args.debug else "INFO",
        format=
        '%(asctime)s [%(levelname)s] [Volta Core] %(filename)s:%(lineno)d %(message)s'
    )

    if not args.config:
        raise RuntimeError('Empty config')

    cfg_dict = {}
    with open(args.config, 'r') as cfg_stream:
        try:
            cfg_dict = yaml.safe_load(cfg_stream)
        except:
            logger.debug('Config file format not yaml or json...',
                         exc_info=True)
            raise RuntimeError('Unknown config file format. Malformed?')

    core = Core(cfg_dict)

    try:
        core.configure()
        logger.info(
            'Starting test... You can interrupt test w/ Ctrl+C or SIGTERM signal'
        )
        core.start_test()

        while True:
            time.sleep(1)  # infinite loop until SIGTERM

    except KeyboardInterrupt:
        logger.info(
            'Keyboard interrupt, trying graceful shutdown. Do not press interrupt again...'
        )
        core.end_test()
    except:
        logger.error('Uncaught exception in core\n', exc_info=True)
    finally:
        core.post_process()
Example #4
0
 def post(self):
     global active_test
     cfg, cfg_data = None, None
     try:
         cfg_data = self.get_body_argument("config")
         cfg = yaml.load(cfg_data)
     except Exception:
         self.set_status(400)
         self.write('Error parsing config: %s. \nTraceback: %s' % (cfg_data, traceback.format_exc()))
         return
     logger.debug('Received config: %s. Starting test', cfg)
     try:
         self.core = Core(cfg)
         self.core.configure()
         self.perform_test()
         active_test = self.core
         self.write(json.dumps(self.core.get_current_test_info()))
     except Exception:
         logger.warning('Failed to start the test', exc_info=True)
         self.set_status(500)
         self.write('Failed to start the test: %s' % traceback.format_exc())