Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
    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)
Ejemplo n.º 7
0
    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)