def test_filters(self): tree2 = copy.deepcopy(self.tree) exp = ['intel', 'amd', 'arm', 'fedora', 'mint', 'prod'] act = mux.apply_filters(tree2, filter_only=['/hw/cpu', '']).get_leaves() self.assertEqual(exp, act) tree2 = copy.deepcopy(self.tree) exp = ['scsi', 'virtio', 'fedora', 'mint', 'prod'] act = mux.apply_filters(tree2, filter_out=['/hw/cpu', '']).get_leaves() self.assertEqual(exp, act)
def discover(self, reference, which_tests=loader.DEFAULT): tests = [] try: root = mux.apply_filters(create_from_yaml([reference], False), getattr(self.args, "mux_suite_only", []), getattr(self.args, "mux_suite_out", [])) except Exception: return [] mux_tree = mux.MuxTree(root) for variant in mux_tree: params = varianter.AvocadoParams(variant, "YamlTestsuiteLoader", ["/run/*"], {}) reference = params.get("test_reference") test_loader = self._get_loader(params) if not test_loader: continue _tests = test_loader.discover(reference, which_tests) self._extra_type_label_mapping.update( test_loader.get_full_type_label_mapping()) self._extra_decorator_mapping.update( test_loader.get_full_decorator_mapping()) if _tests: for tst in _tests: tst[1]["params"] = (variant, ["/run/*"]) tests.extend(_tests) return tests
def test_filter_only(self): exp = (['intel', 'scsi'], ['intel', 'virtio']) act = yaml_to_mux.create_from_yaml(["/:" + PATH_PREFIX + 'examples/mux-selftest.yaml']) act = mux.apply_filters(act, ('/hw/cpu/intel', '/distro/fedora', '/hw')) act = tuple(varianter.MuxTree(act)) self.assertEqual(act, exp)
def test_filter_out(self): act = yaml_to_mux.create_from_yaml(["/:" + PATH_PREFIX + 'examples/mux-selftest.yaml']) act = mux.apply_filters(act, None, ('/hw/cpu/intel', '/distro/fedora', '/distro')) act = tuple(varianter.MuxTree(act)) self.assertEqual(len(act), 4) self.assertEqual(len(act[0]), 3) str_act = str(act) self.assertIn('amd', str_act) self.assertIn('prod', str_act) self.assertNotIn('intel', str_act) self.assertNotIn('fedora', str_act)
def initialize(self, args): # Deprecated filters only = getattr(args, "filter_only", None) if only: self._log_deprecation_msg("--filter-only", "--mux-filter-only") mux_filter_only = getattr(args, "mux_filter_only") if mux_filter_only: args.mux_filter_only = mux_filter_only + only else: args.mux_filter_only = only out = getattr(args, "filter_out", None) if out: self._log_deprecation_msg("--filter-out", "--mux-filter-out") mux_filter_out = getattr(args, "mux_filter_out") if mux_filter_out: args.mux_filter_out = mux_filter_out + out else: args.mux_filter_out = out if args.avocado_variants.debug: data = mux.MuxTreeNodeDebug() else: data = mux.MuxTreeNode() debug = getattr(args, "mux_debug", False) # Merge the multiplex multiplex_files = getattr(args, "mux_yaml", None) if multiplex_files: try: data.merge(create_from_yaml(multiplex_files, debug)) except IOError as details: error_msg = "%s : %s" % (details.strerror, details.filename) logging.getLogger("avocado.app").error(error_msg) if args.subcommand == 'run': sys.exit(exit_codes.AVOCADO_JOB_FAIL) else: sys.exit(exit_codes.AVOCADO_FAIL) # Deprecated --multiplex option multiplex_files = getattr(args, "multiplex", None) if multiplex_files: self._log_deprecation_msg("--multiplex", "--mux-yaml") try: data.merge(create_from_yaml(multiplex_files, debug)) from_yaml = create_from_yaml(multiplex_files, debug) args.avocado_variants.data_merge(from_yaml) except IOError as details: error_msg = "%s : %s" % (details.strerror, details.filename) logging.getLogger("avocado.app").error(error_msg) if args.subcommand == 'run': sys.exit(exit_codes.AVOCADO_JOB_FAIL) else: sys.exit(exit_codes.AVOCADO_FAIL) # Extend default multiplex tree of --mux-inject values for inject in getattr(args, "mux_inject", []): entry = inject.split(':', 3) if len(entry) < 2: raise ValueError("key:entry pairs required, found only %s" % (entry)) elif len(entry) == 2: # key, entry entry.insert(0, '') # add path='' (root) data.get_node(entry[0], True).value[entry[1]] = entry[2] mux_filter_only = getattr(args, 'mux_filter_only', None) mux_filter_out = getattr(args, 'mux_filter_out', None) data = mux.apply_filters(data, mux_filter_only, mux_filter_out) if data != mux.MuxTreeNode(): mux_path = getattr(args, "mux_path", ["/run/*"]) if mux_path is None: mux_path = ["/run/*"] self.initialize_mux(data, mux_path, debug)
def initialize(self, args): # Deprecated filters only = getattr(args, "filter_only", None) if only: self._log_deprecation_msg("--filter-only", "--mux-filter-only") mux_filter_only = getattr(args, "mux_filter_only") if mux_filter_only: args.mux_filter_only = mux_filter_only + only else: args.mux_filter_only = only out = getattr(args, "filter_out", None) if out: self._log_deprecation_msg("--filter-out", "--mux-filter-out") mux_filter_out = getattr(args, "mux_filter_out") if mux_filter_out: args.mux_filter_out = mux_filter_out + out else: args.mux_filter_out = out if args.avocado_variants.debug: data = mux.MuxTreeNodeDebug() else: data = mux.MuxTreeNode() debug = getattr(args, "mux_debug", False) # Merge the multiplex multiplex_files = getattr(args, "mux_yaml", None) if multiplex_files: try: data.merge(create_from_yaml(multiplex_files, debug)) except IOError as details: error_msg = "%s : %s" % (details.strerror, details.filename) LOG_UI.error(error_msg) if args.subcommand == 'run': sys.exit(exit_codes.AVOCADO_JOB_FAIL) else: sys.exit(exit_codes.AVOCADO_FAIL) # Deprecated --multiplex option multiplex_files = getattr(args, "multiplex", None) if multiplex_files: self._log_deprecation_msg("--multiplex", "--mux-yaml") try: data.merge(create_from_yaml(multiplex_files, debug)) from_yaml = create_from_yaml(multiplex_files, debug) args.avocado_variants.data_merge(from_yaml) except IOError as details: error_msg = "%s : %s" % (details.strerror, details.filename) LOG_UI.error(error_msg) if args.subcommand == 'run': sys.exit(exit_codes.AVOCADO_JOB_FAIL) else: sys.exit(exit_codes.AVOCADO_FAIL) # Extend default multiplex tree of --mux-inject values for inject in getattr(args, "mux_inject", []): entry = inject.split(':', 3) if len(entry) < 2: raise ValueError("key:entry pairs required, found only %s" % (entry)) elif len(entry) == 2: # key, entry entry.insert(0, '') # add path='' (root) data.get_node(entry[0], True).value[entry[1]] = entry[2] mux_filter_only = getattr(args, 'mux_filter_only', None) mux_filter_out = getattr(args, 'mux_filter_out', None) data = mux.apply_filters(data, mux_filter_only, mux_filter_out) if data != mux.MuxTreeNode(): mux_path = getattr(args, "mux_path", ["/run/*"]) if mux_path is None: mux_path = ["/run/*"] self.initialize_mux(data, mux_path, debug)