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)
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)
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()
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())