def test_update_autoclassification_bug(test_job, test_job_2, classified_failures): # Job 1 has two failure lines so nothing should be updated assert test_job.update_autoclassification_bug(1234) is None failure_lines = create_failure_lines(test_job_2, [(test_line, {})]) failure_lines[0].best_classification = classified_failures[0] failure_lines[0].save() classified_failures[0].bug_number = None lines = [(item, {}) for item in FailureLine.objects.filter(job_guid=test_job_2.guid).values()] create_text_log_errors(test_job_2, lines) assert test_job_2.update_autoclassification_bug(1234) == classified_failures[0] classified_failures[0].refresh_from_db() assert classified_failures[0].bug_number == 1234
def test_update_autoclassification_bug(jm, test_repository, classified_failures): # Job 1 has two failure lines so nothing should be updated assert jm.update_autoclassification_bug(1, 1234) is None job = jm.get_job(2)[0] failure_lines = create_failure_lines(test_repository, job["job_guid"], [(test_line, {})]) failure_lines[0].best_classification = classified_failures[0] failure_lines[0].save() classified_failures[0].bug_number = None lines = [(item, {}) for item in FailureLine.objects.filter(job_guid=job["job_guid"]).values()] create_text_log_errors(test_repository.name, job["id"], lines) create_bug_suggestions_failures(test_repository.name, job, lines) assert jm.update_autoclassification_bug(2, 1234) == classified_failures[0] classified_failures[0].refresh_from_db() assert classified_failures[0].bug_number == 1234
def text_log_error_lines(test_job, failure_lines): from treeherder.model.models import FailureLine from autoclassify.utils import create_text_log_errors lines = [(item, {}) for item in FailureLine.objects.filter(job_guid=test_job.guid).values()] errors = create_text_log_errors(test_job, lines) return errors
def text_log_error_lines(test_job, failure_lines): from tests.autoclassify.utils import create_text_log_errors from treeherder.model.models import FailureLine lines = [(item, {}) for item in FailureLine.objects.filter(job_guid=test_job.guid).values()] errors = create_text_log_errors(test_job, lines) return errors
def test_update_failure_lines(mock_autoclassify_jobs_true, test_repository, text_log_errors_failure_lines, classified_failures, eleven_jobs_stored, test_user): jobs = (Job.objects.get(id=1), Job.objects.get(id=2)) MatcherManager.register_detector(ManualDetector) client = APIClient() client.force_authenticate(user=test_user) lines = [(test_line, {}), (test_line, {"subtest": "subtest2"})] new_failure_lines = create_failure_lines(jobs[1], lines) new_text_log_errors = create_text_log_errors(jobs[1], lines) for text_log_error, failure_line in zip(new_text_log_errors, new_failure_lines): TextLogErrorMetadata.objects.create(text_log_error=text_log_error, failure_line=failure_line) failure_lines = FailureLine.objects.filter( job_guid__in=[job.guid for job in jobs]).all() text_log_errors = TextLogError.objects.filter( step__job__in=jobs).all() for text_log_error, failure_line in zip(text_log_errors, failure_lines): assert text_log_error.metadata.best_is_verified is False assert failure_line.best_is_verified is False body = [{"id": failure_line.id, "best_classification": classified_failures[1].id} for failure_line in failure_lines] resp = client.put(reverse("failure-line-list"), body, format="json") assert resp.status_code == 200 for text_log_error, failure_line in zip(text_log_errors, failure_lines): text_log_error.refresh_from_db() text_log_error.metadata.refresh_from_db() failure_line.refresh_from_db() assert failure_line.best_classification == classified_failures[1] assert failure_line.best_is_verified assert text_log_error.metadata.best_classification == classified_failures[1] assert text_log_error.metadata.best_is_verified for job in jobs: assert job.is_fully_verified() # will assert if we don't have exactly one job, which is what we want note = JobNote.objects.get(job=job) assert note.failure_classification.id == 4 assert note.user == test_user
def test_update_failure_lines(mock_autoclassify_jobs_true, test_repository, text_log_errors_failure_lines, classified_failures, eleven_jobs_stored, test_user): jobs = (Job.objects.get(id=1), Job.objects.get(id=2)) MatcherManager.register_detector(ManualDetector) client = APIClient() client.force_authenticate(user=test_user) lines = [(test_line, {}), (test_line, {"subtest": "subtest2"})] new_failure_lines = create_failure_lines(jobs[1], lines) new_text_log_errors = create_text_log_errors(jobs[1], lines) for text_log_error, failure_line in zip(new_text_log_errors, new_failure_lines): TextLogErrorMetadata.objects.create(text_log_error=text_log_error, failure_line=failure_line) failure_lines = FailureLine.objects.filter( job_guid__in=[job.guid for job in jobs]).all() text_log_errors = TextLogError.objects.filter( step__job__in=jobs).all() for text_log_error, failure_line in zip(text_log_errors, failure_lines): assert text_log_error.metadata.best_is_verified is False assert failure_line.best_is_verified is False body = [{"id": failure_line.id, "best_classification": classified_failures[1].id} for failure_line in failure_lines] resp = client.put(reverse("failure-line-list"), body, format="json") assert resp.status_code == 200 for text_log_error, failure_line in zip(text_log_errors, failure_lines): text_log_error.refresh_from_db() text_log_error.metadata.refresh_from_db() failure_line.refresh_from_db() assert failure_line.best_classification == classified_failures[1] assert failure_line.best_is_verified assert text_log_error.metadata.best_classification == classified_failures[1] assert text_log_error.metadata.best_is_verified for job in jobs: assert job.is_fully_verified() # will assert if we don't have exactly one job, which is what we want note = JobNote.objects.get(job=job) assert note.failure_classification.id == 4 assert note.user == test_user
def text_log_errors_failure_lines(test_job, failure_lines): from tests.autoclassify.utils import test_line, create_text_log_errors lines = [(test_line, {}), (test_line, {"subtest": "subtest2"})] text_log_errors = create_text_log_errors(test_job, lines) for error_line, failure_line in zip(text_log_errors, failure_lines): TextLogErrorMetadata.objects.create(text_log_error=error_line, failure_line=failure_line) return text_log_errors, failure_lines
def text_log_errors_failure_lines(test_job, failure_lines): from tests.autoclassify.utils import test_line, create_text_log_errors lines = [(test_line, {}), (test_line, {"subtest": "subtest2"})] text_log_errors = create_text_log_errors(test_job, lines) for error_line, failure_line in zip(text_log_errors, failure_lines): TextLogErrorMetadata.objects.create(text_log_error=error_line, failure_line=failure_line) return text_log_errors, failure_lines
def text_log_errors_failure_lines(test_job, failure_lines): from tests.autoclassify.utils import test_line, create_text_log_errors lines = [(test_line, {}), (test_line, {"subtest": "subtest2"})] text_log_errors = create_text_log_errors(test_job, lines) for error_line, failure_line in zip(text_log_errors, failure_lines): error_line.failure_line = failure_line error_line.save() return text_log_errors, failure_lines
def test_update_autoclassification_bug(test_job, test_job_2, classified_failures): # Job 1 has two failure lines so nothing should be updated assert test_job.update_autoclassification_bug(1234) is None lines = [(test_line, {})] create_failure_lines(test_job_2, lines) error_lines = create_text_log_errors(test_job_2, lines) error_lines[0].mark_best_classification(classified_failures[0]) assert classified_failures[0].bug_number is None assert test_job_2.update_autoclassification_bug(1234) == classified_failures[0] classified_failures[0].refresh_from_db() assert classified_failures[0].bug_number == 1234
def test_update_autoclassification_bug(test_job, test_job_2, classified_failures): # Job 1 has two failure lines so nothing should be updated assert test_job.update_autoclassification_bug(1234) is None lines = [(test_line, {})] create_failure_lines(test_job_2, lines) error_lines = create_text_log_errors(test_job_2, lines) error_lines[0].mark_best_classification(classified_failures[0]) assert classified_failures[0].bug_number is None assert test_job_2.update_autoclassification_bug(1234) == classified_failures[0] classified_failures[0].refresh_from_db() assert classified_failures[0].bug_number == 1234
def test_update_autoclassification_bug(test_job, test_job_2, classified_failures): classified_failure = classified_failures[0] # Job 1 has two failure lines so nothing should be updated assert test_job.update_autoclassification_bug(1234) is None lines = [(test_line, {})] create_failure_lines(test_job_2, lines) error_lines = create_text_log_errors(test_job_2, lines) error_lines[0].mark_best_classification(classified_failures[0].id) assert classified_failure.bug_number is None metadata = TextLogErrorMetadata.objects.get(text_log_error__step__job=test_job_2) metadata.failure_line = FailureLine.objects.get(pk=3) metadata.save() assert test_job_2.update_autoclassification_bug(1234) == classified_failures[0] classified_failures[0].refresh_from_db() assert classified_failures[0].bug_number == 1234
def test_update_autoclassification_bug(test_job, test_job_2, classified_failures): classified_failure = classified_failures[0] # Job 1 has two failure lines so nothing should be updated assert test_job.update_autoclassification_bug(1234) is None lines = [(test_line, {})] create_failure_lines(test_job_2, lines) error_lines = create_text_log_errors(test_job_2, lines) error_lines[0].mark_best_classification(classified_failures[0].id) assert classified_failure.bug_number is None metadata = TextLogErrorMetadata.objects.get(text_log_error__step__job=test_job_2) metadata.failure_line = FailureLine.objects.get(pk=3) metadata.save() assert test_job_2.update_autoclassification_bug(1234) == classified_failures[0] classified_failures[0].refresh_from_db() assert classified_failures[0].bug_number == 1234