def test_receive_and_unpack_on_worker(self): obj = Unpacker() obj.engine = EngineEmul() obj.engine.config.merge({ "execution": { "executor": "selenium", "concurrency": 5500, "scenario": { "script": "java_package.zip"}}, "modules": { "selenium": "bzt.modules.selenium.SeleniumExecutor", "cloud": "bzt.modules.blazemeter.CloudProvisioning"}, "provisioning": "local" }) obj.engine.file_search_paths = [obj.engine.artifacts_dir] obj.parameters["files"] = ["java_package.zip"] # create archive and put it in artifact dir source = __dir__() + "/../selenium/java_package" zip_name = obj.engine.create_artifact('java_package', '.zip') with zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_STORED) as zip_file: for filename in get_files_recursive(source): zip_file.write(filename, filename[len(os.path.dirname(source)):]) obj.prepare() # check unpacked tree destination = obj.engine.artifacts_dir + '/java_package' result_tree = set(filename[len(destination):] for filename in get_files_recursive(destination)) original_tree = set(filename[len(source):] for filename in get_files_recursive(source)) self.assertEqual(result_tree, original_tree)
def __pack_dirs(self, source_list): result_list = [] # files for upload packed_list = [] # files for unpacking for source in source_list: source = get_full_path(source) if os.path.isfile(source): result_list.append(source) else: # source is dir self.log.debug("Compress directory '%s'", source) base_dir_name = os.path.basename(source) zip_name = self.engine.create_artifact(base_dir_name, '.zip') relative_prefix_len = len(os.path.dirname(source)) with zipfile.ZipFile(zip_name, 'w') as zip_file: for _file in get_files_recursive(source): zip_file.write(_file, _file[relative_prefix_len:]) result_list.append(zip_name) packed_list.append(base_dir_name + '.zip') if packed_list: services = self.engine.config.get(Service.SERV, [], force_set=True) unpacker = BetterDict.from_dict({ 'module': Unpacker.UNPACK, Unpacker.FILES: packed_list, 'run-at': 'local' }) services.append(unpacker) return result_list
def detect_script_type(script_path): if not isinstance(script_path, string_types) and not isinstance( script_path, text_type): raise ValueError( "Nothing to test, no files were provided in scenario") if not os.path.exists(script_path): raise ValueError("Script %s doesn't exist" % script_path) file_types = set() if os.path.isfile(script_path): # regular file received file_types.add(os.path.splitext(script_path)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(script_path): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types: file_ext = '.java' elif '.py' in file_types: file_ext = '.py' elif '.jar' in file_types: file_ext = '.jar' else: raise ValueError("Unsupported script type: %s" % script_path) return file_ext
def detect_script_type(self, script_path): if not isinstance(script_path, string_types) and not isinstance( script_path, text_type): raise ValueError( "Nothing to test, no files were provided in scenario") if not os.path.exists(script_path): raise ValueError("Script %s doesn't exist" % script_path) if "language" in self.execution: lang = self.execution["language"] if lang not in self.SUPPORTED_TYPES: tmpl = "Language '%s' is not supported. Supported languages are: %s" raise ValueError(tmpl % (lang, self.SUPPORTED_TYPES)) self.log.debug("Using script type: %s", lang) return lang file_types = set() if os.path.isfile(script_path): # regular file received file_types.add(os.path.splitext(script_path)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(script_path): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types or '.jar' in file_types: script_type = 'java-junit' elif '.py' in file_types: script_type = 'python-nose' else: raise ValueError("Unsupported script type: %s" % script_path) self.log.debug("Detected script type: %s", script_type) return script_type
def detect_script_type(script_path): if not isinstance(script_path, string_types) and not isinstance(script_path, text_type): raise ValueError("Nothing to test, no files were provided in scenario") if not os.path.exists(script_path): raise ValueError("Script %s doesn't exist" % script_path) file_types = set() if os.path.isfile(script_path): # regular file received file_types.add(os.path.splitext(script_path)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(script_path): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types: file_ext = '.java' elif '.py' in file_types: file_ext = '.py' elif '.jar' in file_types: file_ext = '.jar' else: raise ValueError("Unsupported script type: %s" % script_path) return file_ext
def detect_script_type(self, script_name): if not os.path.exists(script_name): raise TaurusConfigError("Script '%s' doesn't exist" % script_name) file_types = set() # gather file extensions and choose script_type according to priority if os.path.isfile(script_name): # regular file received file_types.add(os.path.splitext(script_name)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(script_name): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types or '.jar' in file_types: # todo: next detection logic is duplicated in TestNGTester - can we avoid it? script_dir = get_full_path(self.get_script_path(), step_up=1) if os.path.exists(os.path.join( script_dir, 'testng.xml')) or self.execution.get( 'testng-xml', None): script_type = 'testng' else: script_type = 'junit' elif '.py' in file_types: script_type = 'nose' elif '.rb' in file_types: script_type = 'rspec' elif '.js' in file_types: script_type = 'mocha' else: raise TaurusConfigError( "Supported script files not found, script detection is failed") self.log.debug("Detected script type: %s", script_type) return script_type
def detect_script_type(self): if not self.script and "requests" in self.scenario: return "nose" if not os.path.exists(self.script): raise TaurusConfigError("Script '%s' doesn't exist" % self.script) if "runner" in self.execution: runner = self.execution["runner"] if runner not in SeleniumExecutor.SUPPORTED_RUNNERS: msg = "Runner '%s' is not supported. Supported runners: %s" raise TaurusConfigError( msg % (runner, SeleniumExecutor.SUPPORTED_RUNNERS)) self.log.debug("Using script type: %s", runner) return runner file_types = set() if os.path.isfile(self.script): # regular file received file_types.add(os.path.splitext(self.script)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(self.script): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types or '.jar' in file_types: if self._get_testng_xml() is not None: script_type = 'testng' else: script_type = 'junit' elif '.py' in file_types: script_type = 'nose' elif '.rb' in file_types: script_type = 'rspec' elif '.js' in file_types: script_type = 'mocha' else: raise TaurusConfigError("Unsupported script type: %s" % self.script) self.log.debug("Detected script type: %s", script_type) return script_type
def detect_script_type(self, script_name): if not os.path.exists(script_name): raise TaurusConfigError("Script '%s' doesn't exist" % script_name) file_types = set() # gather file extensions and choose script_type according to priority if os.path.isfile(script_name): # regular file received file_types.add(os.path.splitext(script_name)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(script_name): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types or '.jar' in file_types: script_dir = get_full_path(self.get_script_path(), step_up=1) if os.path.exists(os.path.join( script_dir, 'testng.xml')) or self.execution.get('testng-xml'): script_type = 'testng' else: script_type = 'junit' elif '.py' in file_types: script_type = 'apiritif' elif '.rb' in file_types: script_type = 'rspec' elif '.js' in file_types: script_type = 'mocha' elif '.dll' in file_types or '.exe' in file_types: script_type = 'nunit' else: if os.path.isfile(script_name): message = "Unsupported script type: %r" % script_name else: message = "Directory %r doesn't contain supported scripts" % script_name raise TaurusConfigError(message) self.log.debug("Detected script type: %s", script_type) return script_type
def detect_script_type(self, script_name): if not os.path.exists(script_name): raise TaurusConfigError("Script '%s' doesn't exist" % script_name) file_types = set() # gather file extensions and choose script_type according to priority if os.path.isfile(script_name): # regular file received file_types.add(os.path.splitext(script_name)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(script_name): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types or '.jar' in file_types: # todo: next detection logic is duplicated in TestNGTester - can we avoid it? script_dir = get_full_path(self.get_script_path(), step_up=1) if os.path.exists(os.path.join(script_dir, 'testng.xml')) or self.execution.get('testng-xml'): script_type = 'testng' else: script_type = 'junit' elif '.py' in file_types: script_type = 'nose' elif '.rb' in file_types: script_type = 'rspec' elif '.js' in file_types: script_type = 'mocha' elif '.dll' in file_types or '.exe' in file_types: script_type = 'nunit' else: if os.path.isfile(script_name): message = "Unsupported script type: %r" % script_name else: message = "Directory %r doesn't contain supported scripts" % script_name raise TaurusConfigError(message) self.log.debug("Detected script type: %s", script_type) return script_type
def detect_script_type(self, script_path): if not isinstance(script_path, string_types) and not isinstance(script_path, text_type): raise ValueError("Nothing to test, no files were provided in scenario") if not os.path.exists(script_path): raise ValueError("Script %s doesn't exist" % script_path) if "language" in self.execution: lang = self.execution["language"] if lang not in self.SUPPORTED_TYPES: tmpl = "Language '%s' is not supported. Supported languages are: %s" raise ValueError(tmpl % (lang, self.SUPPORTED_TYPES)) self.log.debug("Using script type: %s", lang) return lang file_types = set() if os.path.isfile(script_path): # regular file received file_types.add(os.path.splitext(script_path)[1].lower()) else: # dir received: check contained files for file_name in get_files_recursive(script_path): file_types.add(os.path.splitext(file_name)[1].lower()) if '.java' in file_types or '.jar' in file_types: script_type = 'java-junit' elif '.py' in file_types: script_type = 'python-nose' elif '.rb' in file_types: script_type = 'ruby-rspec' elif '.js' in file_types: script_type = 'js-mocha' else: raise ValueError("Unsupported script type: %s" % script_path) self.log.debug("Detected script type: %s", script_type) return script_type