示例#1
0
    def test_commented_monitor_cfg_tpl(self):
        """Doc, monitor configuration template (commented)"""

        try:
            r = build_monitor_cfg_tpl(comment_optional=True)
        except Exception as e:
            raise self.failureException(e)

        cfg = yaml.load(r)

        self.assertIsInstance(cfg, dict)

        self.assertIn("matching_rules", cfg)
        self.assertIsInstance(cfg["matching_rules"], list)
示例#2
0
    def test_monitor_cfg_tpl(self):
        """Doc, monitor configuration template"""

        try:
            r = build_monitor_cfg_tpl(comment_optional=False)
        except Exception as e:
            raise self.failureException(e)

        cfg = yaml.load(r)

        self.assertIsInstance(cfg, dict)

        self.assertIn("matching_rules", cfg)
        self.assertIsInstance(cfg["matching_rules"], list)

        self.assertIn("expected_results", cfg)
        self.assertIsInstance(cfg["expected_results"], dict)

        self.assertIn("actions", cfg)
        self.assertIsInstance(cfg["actions"], dict)

        # monitors' configuration fields that are lists
        exp_list_fields = ["matching_rules"]

        list_fields = [_ for _ in cfg if isinstance(cfg[_], list)]

        self.assertListEqual(sorted(exp_list_fields), sorted(list_fields))

        for _ in exp_list_fields:
            self.assertEqual(len(cfg[_]), 2)

        self.assertEqual(len(cfg["expected_results"].keys()), 2)

        self.assertEqual(len(cfg["actions"].keys()), 2)

        for rule in cfg["matching_rules"]:
            self.assertIsInstance(rule, dict)
            self.assertIn("expected_results", rule)
            self.assertIsInstance(rule["expected_results"], list)

            self.assertIn("actions", rule)
            self.assertIsInstance(rule["actions"], list)

            # rules configuration fields that are lists
            exp_list_fields = ["src_country", "src_as", "probe_id",
                               "internal_labels", "expected_results",
                               "actions"]

            list_fields = [_ for _ in rule if isinstance(rule[_], list)]

            self.assertListEqual(sorted(exp_list_fields), sorted(list_fields))

            for _ in exp_list_fields:
                self.assertEqual(len(rule[_]), 3)

        for expres in cfg["expected_results"].keys():
            self.assertIsInstance(cfg["expected_results"][expres], dict)
            expres = cfg["expected_results"][expres]

            # expected results' configuration fields that are lists
            exp_list_fields = ["dst_ip", "dst_as", "as_path", "upstream_as",
                               "cert_fp", "dns_rcode", "dns_flags", "edns_nsid"]

            list_fields = [_ for _ in expres if isinstance(expres[_], list)]

            self.assertListEqual(sorted(exp_list_fields), sorted(list_fields))

            for _ in exp_list_fields:
                self.assertEqual(len(expres[_]), 3)

            self.assertIsInstance(expres["dns_answers"], dict)

            dns_answers = expres["dns_answers"]

            for dns_section in dns_answers:
                dns_section = dns_answers[dns_section]
                self.assertIsInstance(dns_section, list)

                for record in dns_section:
                    # expected results' configuration fields that are lists
                    exp_list_fields = ["name", "address", "target"]

                    list_fields = [_ for _ in record if isinstance(record[_], list)]

                    self.assertListEqual(sorted(exp_list_fields), sorted(list_fields))

        for action in cfg["actions"].keys():
            self.assertIsInstance(cfg["actions"][action], dict)