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'
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'
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 )
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'
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))