def test_calculate_durations(jm, test_repository, mock_log_parser): """ Test the calculation of average job durations and their use during subsequent job ingestion. """ rs = result_set() jm.store_result_set_data([rs]) now = int(time.time()) first_job_duration = 120 first_job = job_data(revision=rs['revision'], start_timestamp=now, end_timestamp=now + first_job_duration) jm.store_job_data([first_job]) # Generate average duration based on the first job. call_command('calculate_durations') # Ingest the same job type again to check that the pre-generated # average duration is used during ingestion. second_job_duration = 142 second_job = job_data(revision=rs['revision'], start_timestamp=now, end_timestamp=now + second_job_duration, job_guid='a-different-unique-guid') jm.store_job_data([second_job]) ingested_second_job = jm.get_job(2)[0] assert ingested_second_job['running_eta'] == first_job_duration # Check that the average duration is updated now that there are two jobs. call_command('calculate_durations') durations = JobDuration.objects.all() assert len(durations) == 1 expected_duration = int(round((first_job_duration + second_job_duration) / 2)) assert durations[0].average_duration == expected_duration
def test_calculate_durations(test_repository, failure_classifications, result_set_stored, mock_log_parser): """ Test the calculation of average job durations and their use during subsequent job ingestion. """ now = int(time.time()) first_job_duration = 120 first_job = job_data(revision=result_set_stored[0]['revision'], start_timestamp=now, end_timestamp=now + first_job_duration) store_job_data(test_repository, [first_job]) # Generate average duration based on the first job. call_command('calculate_durations') # Ingest the same job type again to check that the pre-generated # average duration is used during ingestion. second_job_duration = 142 second_job = job_data(revision=result_set_stored[0]['revision'], start_timestamp=now, end_timestamp=now + second_job_duration, job_guid='a-different-unique-guid') store_job_data(test_repository, [second_job]) ingested_second_job = Job.objects.get(id=2) assert ingested_second_job.running_eta == first_job_duration # Check that the average duration is updated now that there are two jobs. call_command('calculate_durations') durations = JobDuration.objects.all() assert len(durations) == 1 expected_duration = int( round((first_job_duration + second_job_duration) / 2)) assert durations[0].average_duration == expected_duration # Add a fake job with an end time > start time, verify that it is # ignored and average duration remains the same third_job = job_data(revision=result_set_stored[0]['revision'], start_timestamp=now, end_timestamp=now - second_job_duration, job_guid='another-unique-guid') store_job_data(test_repository, [third_job]) call_command('calculate_durations') durations = JobDuration.objects.all() assert len(durations) == 1 assert durations[0].average_duration == expected_duration
def test_calculate_durations(test_repository, failure_classifications, result_set_stored, mock_log_parser): """ Test the calculation of average job durations and their use during subsequent job ingestion. """ now = int(time.time()) first_job_duration = 120 first_job = job_data(revision=result_set_stored[0]['revision'], start_timestamp=now, end_timestamp=now + first_job_duration) store_job_data(test_repository, [first_job]) # Generate average duration based on the first job. call_command('calculate_durations') # Ingest the same job type again to check that the pre-generated # average duration is used during ingestion. second_job_duration = 142 second_job = job_data(revision=result_set_stored[0]['revision'], start_timestamp=now, end_timestamp=now + second_job_duration, job_guid='a-different-unique-guid') store_job_data(test_repository, [second_job]) ingested_second_job = Job.objects.get(id=2) assert ingested_second_job.running_eta == first_job_duration # Check that the average duration is updated now that there are two jobs. call_command('calculate_durations') durations = JobDuration.objects.all() assert len(durations) == 1 expected_duration = int(round((first_job_duration + second_job_duration) / 2)) assert durations[0].average_duration == expected_duration # Add a fake job with an end time > start time, verify that it is # ignored and average duration remains the same third_job = job_data(revision=result_set_stored[0]['revision'], start_timestamp=now, end_timestamp=now - second_job_duration, job_guid='another-unique-guid') store_job_data(test_repository, [third_job]) call_command('calculate_durations') durations = JobDuration.objects.all() assert len(durations) == 1 assert durations[0].average_duration == expected_duration
def test_bad_date_value_ingestion(jm, initial_data, mock_log_parser): """ Test ingesting an blob with bad date value """ rs = result_set() blob = job_data(start_timestamp="foo", revision_hash=rs["revision_hash"]) jm.store_result_set_data([rs]) jm.store_job_data([blob])
def test_bad_date_value_ingestion(test_repository, failure_classifications, sample_push, mock_log_parser): """ Test ingesting a job blob with bad date value """ blob = job_data(start_timestamp="foo", revision=sample_push[0]['revision']) store_push_data(test_repository, sample_push[:1]) store_job_data(test_repository, [blob])
def test_bad_date_value_ingestion(jm, test_repository, mock_log_parser): """ Test ingesting an blob with bad date value """ rs = result_set() blob = job_data(start_timestamp="foo", revision=rs['revision']) jm.store_result_set_data([rs]) jm.store_job_data([blob])
def test_bad_date_value_ingestion(jm, initial_data, mock_log_parser): """ Test ingesting an blob with bad date value """ rs = result_set() blob = job_data(start_timestamp="foo", revision_hash=rs['revision_hash']) jm.store_job_data([blob]) jm.store_result_set_data([rs]) jm.process_objects(1) # Confirm that we don't get a ValueError when casting a non-number last_error = get_objectstore_last_error( jm) == u"invalid literal for long() with base 10: 'foo'" assert last_error == False
def test_bad_date_value_ingestion(jm, initial_data, mock_log_parser): """ Test ingesting an blob with bad date value """ rs = result_set() blob = job_data(start_timestamp="foo", revision_hash=rs['revision_hash']) jm.store_job_data([blob]) jm.store_result_set_data([rs]) jm.process_objects(1) # Confirm that we don't get a ValueError when casting a non-number last_error = get_objectstore_last_error( jm) == u"invalid literal for long() with base 10: 'foo'" jm.disconnect() assert last_error == False
def job_sample(): return job_data()