Best Python code snippet using yandex-tank
plugin.py
Source:plugin.py
...482 connection_timeout=int(self.get_option('connection_timeout', 30)),483 user_agent=self._get_user_agent(),484 api_token=self.api_token)485 @property486 def lp_job(self):487 if self._lp_job is None:488 self._lp_job = self.__get_lp_job()489 return self._lp_job490 def __get_lp_job(self):491 api_client = self.__get_api_client()492 info = self.generator_info493 port = info.port494 loadscheme = [] if isinstance(info.rps_schedule,495 str) else info.rps_schedule496 return LPJob(client=api_client,497 target_host=self.target,498 target_port=port,499 number=self.get_option('jobno', ''),500 token=self.get_option('upload_token', ''),501 person=self.__get_operator(),502 task=self.task,503 name=self.get_option('job_name', 'none').decode('utf8'),504 description=self.get_option('job_dsc', '').decode('utf8'),...
cli.py
Source:cli.py
1import ConfigParser2import argparse3import glob4import json5import logging6import os7import socket8import sys9import pwd10from StringIO import StringIO11from urlparse import urljoin12from datetime import datetime13import pkg_resources14from .client import APIClient15from .plugin import LPJob16CONFIG_FILE = 'saved_conf.ini'17DATA_LOG = 'test_data.log'18MONITORING_LOG = 'monitoring.log'19SECTION = 'meta'20logger = logging.getLogger('')21logger.setLevel(logging.DEBUG)22handler = logging.StreamHandler(stream=sys.stdout)23handler.setLevel(logging.INFO)24logger.addHandler(handler)25verbose_handler = logging.FileHandler(26 datetime.now().strftime("post_loader_%Y-%m-%d_%H-%M-%S.log"), 'w')27verbose_handler.setLevel(logging.DEBUG)28logger.addHandler(verbose_handler)29def read_config(shooting_dir):30 config_file = glob.glob(os.path.join(shooting_dir, CONFIG_FILE))[0]31 logger.info('Config file found: %s' % config_file)32 config = ConfigParser.ConfigParser()33 config.read(config_file)34 return config35def get_lp_config(config):36 """37 looks for config file in shooting_dir,38 returns config dict of section 'meta'39 :rtype: dict40 """41 lp_config = dict(config.items(SECTION))42 for key in sorted(lp_config.keys()):43 logger.debug('%s: %s' % (key, lp_config[key]))44 return lp_config45def check_log(log_name):46 assert os.path.exists(log_name), \47 'Data log {} not found\n'.format(log_name) + \48 'JsonReport plugin should be enabled when launching Yandex-tank'49def upload_data(shooting_dir, log_name, lp_job):50 data_log = os.path.join(shooting_dir, log_name)51 check_log(data_log)52 sys.stdout.write('Uploading test data')53 with open(data_log, 'r') as f:54 for line in f:55 data = json.loads(line.strip())56 lp_job.push_test_data(data['data'], data['stats'])57 sys.stdout.write('.')58 sys.stdout.flush()59 sys.stdout.write('\n')60def upload_monitoring(shooting_dir, log_name, lp_job):61 data_log = os.path.join(shooting_dir, log_name)62 check_log(data_log)63 sys.stdout.write('Uploading monitoring data')64 with open(data_log, 'r') as f:65 for line in f:66 lp_job.push_monitoring_data(line.strip())67 sys.stdout.write('.')68 sys.stdout.flush()69 sys.stdout.write('\n')70def send_config_snapshot(config, lp_job):71 config.set(SECTION, 'launched_from', 'post-loader')72 output = StringIO()73 config.write(output)74 lp_job.send_config_snapshot(output.getvalue())75def edit_metainfo(lp_config, lp_job):76 lp_job.edit_metainfo(is_regression=lp_config.get('regress'),77 regression_component=lp_config.get('component'),78 cmdline=lp_config.get('cmdline'),79 ammo_path=lp_config.get('ammo_path'),80 loop_count=lp_config.get('loop_count'))81def get_plugin_dir(shooting_dir):82 DIRNAME = 'lunapark'83 parent = os.path.abspath(os.path.join(shooting_dir, os.pardir))84 if os.path.basename(parent) == DIRNAME:85 return parent86 else:87 plugin_dir = os.path.join(parent, DIRNAME)88 if not os.path.exists(plugin_dir):89 os.makedirs(plugin_dir)90 return plugin_dir91def make_symlink(shooting_dir, name):92 plugin_dir = get_plugin_dir(shooting_dir)93 link_name = os.path.join(plugin_dir, str(name))94 os.symlink(os.path.relpath(shooting_dir, plugin_dir), link_name)95 logger.info('Symlink created: {}'.format(os.path.abspath(link_name)))96def post_loader():97 parser = argparse.ArgumentParser()98 parser.add_argument('shooting_dir',99 help='Directory containing shooting artifacts')100 shooting_dir = parser.parse_args().shooting_dir101 assert os.path.exists(shooting_dir), 'Directory not found'102 config = read_config(shooting_dir)103 lp_config = get_lp_config(config)104 api_client = APIClient(base_url=lp_config['api_address'],105 user_agent='Lunapark/{}'.format(pkg_resources.require('yatank-internal-lunapark')[0].version)106 # todo: add timeouts107 )108 lp_job = LPJob(109 client=api_client,110 target_host=lp_config.get('target_host'),111 target_port=lp_config.get('target_port'),112 person=lp_config.get(113 'operator',114 '') or pwd.getpwuid(115 os.geteuid())[0],116 task=lp_config['task'],117 name=lp_config['job_name'],118 description=lp_config['job_dsc'],119 tank=socket.getfqdn())120 edit_metainfo(lp_config, lp_job)121 upload_data(shooting_dir, DATA_LOG, lp_job)122 send_config_snapshot(config, lp_job)123 try:124 upload_monitoring(shooting_dir, MONITORING_LOG, lp_job)125 except AssertionError as e:126 logger.error(e)127 lp_job.close(0)128 make_symlink(shooting_dir, lp_job.number)129 logger.info(130 'LP job created: {}'.format(131 urljoin(132 api_client.base_url, str(133 lp_job.number))))134if __name__ == '__main__':...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!