Ejemplo n.º 1
0
    def test__build_similar_elements__service_check_tags(self, aggregator):
        check = AgentCheck()

        check.service_check('test.similar2',
                            AgentCheck.OK,
                            tags=['name:less_similar_tag'])
        check.service_check('test.similar1',
                            AgentCheck.OK,
                            tags=['name:similar_tag'])
        check.service_check('test.similar3',
                            AgentCheck.OK,
                            tags=['something:different'])

        expected_service_check = ServiceCheckStub(None,
                                                  "test.similar",
                                                  status=AgentCheck.OK,
                                                  tags=['name:similar_tag'],
                                                  hostname=None,
                                                  message=None)
        similar_service_checks = similar._build_similar_elements(
            expected_service_check, aggregator._service_checks)

        # expect similar metrics in a similarity order
        assert similar_service_checks[0][1].name == 'test.similar1'
        assert similar_service_checks[1][1].name == 'test.similar2'
        assert similar_service_checks[2][1].name == 'test.similar3'
Ejemplo n.º 2
0
    def test__build_similar_elements__service_check_name(self, aggregator):
        check = AgentCheck()

        check.service_check('test.second_similar_service_check', AgentCheck.OK)
        check.service_check('test.very_different_service_check', AgentCheck.OK)
        check.service_check('test.most_similar_service_check', AgentCheck.OK)
        check.service_check('test.very_very_different', AgentCheck.OK)

        expected_service_check = ServiceCheckStub(None,
                                                  "test.similar_service_check",
                                                  status=AgentCheck.OK,
                                                  tags=None,
                                                  hostname=None,
                                                  message=None)
        similar_service_checks = similar._build_similar_elements(
            expected_service_check, aggregator._service_checks)

        # expect similar metrics in a similarity order
        assert similar_service_checks[0][
            1].name == 'test.most_similar_service_check'
        assert similar_service_checks[1][
            1].name == 'test.second_similar_service_check'
        assert similar_service_checks[2][
            1].name == 'test.very_different_service_check'
        assert similar_service_checks[3][1].name == 'test.very_very_different'
Ejemplo n.º 3
0
    def assert_service_check(self, name, status=None, tags=None, count=None, at_least=1, hostname=None, message=None):
        """
        Assert a service check was processed by this stub
        """
        tags = normalize_tags(tags, sort=True)
        candidates = []
        for sc in self.service_checks(name):
            if status is not None and status != sc.status:
                continue

            if tags and tags != sorted(sc.tags):
                continue

            if hostname is not None and hostname != sc.hostname:
                continue

            if message is not None and message != sc.message:
                continue

            candidates.append(sc)

        expected_service_check = ServiceCheckStub(
            None, name=name, status=status, tags=tags, hostname=hostname, message=message
        )

        if count is not None:
            msg = "Needed exactly {} candidates for '{}', got {}".format(count, name, len(candidates))
            condition = len(candidates) == count
        else:
            msg = "Needed at least {} candidates for '{}', got {}".format(at_least, name, len(candidates))
            condition = len(candidates) >= at_least
        self._assert(
            condition=condition, msg=msg, expected_stub=expected_service_check, submitted_elements=self._service_checks
        )
Ejemplo n.º 4
0
 def service_checks(self, name):
     """
     Return the service checks received under the given name
     """
     return [
         ServiceCheckStub(
             ensure_unicode(stub.check_id),
             ensure_unicode(stub.name),
             stub.status,
             normalize_tags(stub.tags),
             ensure_unicode(stub.hostname),
             ensure_unicode(stub.message),
         ) for stub in self._service_checks.get(to_string(name), [])
     ]
    def test__build_similar_elements__service_check_status(self, aggregator):
        check = AgentCheck()

        check.service_check('test.similar1', AgentCheck.OK)
        check.service_check('test.similar2', AgentCheck.CRITICAL)
        check.service_check('test.similar3', AgentCheck.WARNING)

        expected_service_check = ServiceCheckStub(
            None, "test.similar", status=AgentCheck.CRITICAL, tags=None, hostname=None, message=None
        )
        similar_service_checks = similar._build_similar_elements(expected_service_check, aggregator._service_checks)

        # expect similar metrics in a similarity order
        assert similar_service_checks[0][1].name == 'test.similar2'
    def test__build_similar_elements__service_check_hostname(self, aggregator):
        check = AgentCheck()

        check.service_check('test.similar1', AgentCheck.OK, hostname="aa")
        check.service_check('test.similar2', AgentCheck.OK, hostname="bb")
        check.service_check('test.similar3', AgentCheck.OK, hostname="cc")
        check.service_check('test.similar4', AgentCheck.OK, hostname="dd")

        expected_service_check = ServiceCheckStub(
            None, "test.similar", status=AgentCheck.OK, tags=None, hostname="cc", message=None
        )
        similar_service_checks = similar._build_similar_elements(expected_service_check, aggregator._service_checks)

        # expect similar metrics in a similarity order
        assert similar_service_checks[0][1].name == 'test.similar3'
Ejemplo n.º 7
0
 def submit_service_check(self, check, check_id, name, status, tags,
                          hostname, message):
     self._service_checks[name].append(
         ServiceCheckStub(check_id, name, status, tags, hostname, message))