def test_no_tags(self, get_rules_fn, categorize_fn): project = self.create_project(name='test', slug='project-slug') build = self.create_build(project, result=Result.failed, target='D1', label='Some sweet diff') job = self.create_job(build=build, result=Result.failed, status=Status.finished) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource(step=step, name='loglog') self.create_logchunk(source=logsource, text='Some log text') fake_rules = object() get_rules_fn.return_value = fake_rules # one tag was applicable, but none matched. categorize_fn.return_value = (set(), {'tag1'}) tags_by_step = None with mock.patch('changes.listeners.analytics_notifier._incr') as incr: with mock.patch('changes.listeners.analytics_notifier.logger.warning') as warn: tags_by_step = _categorize_step_logs(job) warn.assert_any_call(mock.ANY, extra=mock.ANY) incr.assert_any_call("failing-log-uncategorized") categorize_fn.assert_called_with('project-slug', fake_rules, 'Some log text') self.assertSetEqual(tags_by_step[step.id], set())
def test_no_tags(self, get_rules_fn, categorize_fn): project = self.create_project(name='test', slug='project-slug') build = self.create_build(project, result=Result.failed, target='D1', label='Some sweet diff') job = self.create_job(build=build, result=Result.failed, status=Status.finished) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource(step=step, name='loglog') self.create_logchunk(source=logsource, text='Some log text') fake_rules = object() get_rules_fn.return_value = fake_rules # one tag was applicable, but none matched. categorize_fn.return_value = (set(), {'tag1'}) tags_by_step = None with mock.patch('changes.listeners.analytics_notifier._incr') as incr: with mock.patch( 'changes.listeners.analytics_notifier.logger.warning' ) as warn: tags_by_step = _categorize_step_logs(job) warn.assert_any_call(mock.ANY, extra=mock.ANY) incr.assert_any_call("failing-log-uncategorized") categorize_fn.assert_called_with('project-slug', fake_rules, 'Some log text') self.assertSetEqual(tags_by_step[step.id], set())
def test_tagged_log(self, get_rules_fn, categorize_fn): project = self.create_project(name='test', slug='project-slug') build = self.create_build(project, result=Result.failed, target='D1', label='Some sweet diff') job = self.create_job(build=build, result=Result.failed, status=Status.finished) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource(step=step, name='loglog') chunks = ['Some log text\n', 'Hey, some more log text.'] offset = 0 for c in chunks: self.create_logchunk(source=logsource, text=c, offset=offset) offset += len(c) fake_rules = object() get_rules_fn.return_value = fake_rules categorize_fn.return_value = ({"tag1", "tag2"}, {'tag1', 'tag2'}) tags_by_step = None with mock.patch('changes.listeners.analytics_notifier._incr') as incr: tags_by_step = _categorize_step_logs(job) incr.assert_any_call("failing-log-processed") incr.assert_any_call("failing-log-category-tag1") incr.assert_any_call("failing-log-category-tag2") categorize_fn.assert_called_with('project-slug', fake_rules, ''.join(chunks)) self.assertSetEqual(tags_by_step[step.id], {'tag1', 'tag2'})
def test_tagged_log(self, get_rules_fn, categorize_fn): project = self.create_project(name='test', slug='project-slug') build = self.create_build(project, result=Result.failed, target='D1', label='Some sweet diff') job = self.create_job(build=build, result=Result.failed, status=Status.finished) phase = self.create_jobphase(job=job) step = self.create_jobstep(phase=phase) logsource = self.create_logsource(step=step, name='loglog') chunks = ['Some log text\n', 'Hey, some more log text.'] offset = 0 for c in chunks: self.create_logchunk(source=logsource, text=c, offset=offset) offset += len(c) fake_rules = object() get_rules_fn.return_value = fake_rules categorize_fn.return_value = ({"tag1", "tag2"}, {'tag1', 'tag2'}) tags_by_step = None with mock.patch('changes.listeners.analytics_notifier._incr') as incr: tags_by_step = _categorize_step_logs(job) incr.assert_any_call("failing-log-processed") incr.assert_any_call("failing-log-category-tag1") incr.assert_any_call("failing-log-category-tag2") categorize_fn.assert_called_with('project-slug', fake_rules, ''.join(chunks)) self.assertSetEqual(tags_by_step[step.id], {'tag1', 'tag2'})