コード例 #1
0
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
コード例 #2
0
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
コード例 #3
0
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
コード例 #4
0
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
コード例 #5
0
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])
コード例 #6
0
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])
コード例 #7
0
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])
コード例 #8
0
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])
コード例 #9
0
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])
コード例 #10
0
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
コード例 #11
0
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
コード例 #12
0
ファイル: conftest.py プロジェクト: EdgarChen/treeherder
def job_sample():
    return job_data()
コード例 #13
0
ファイル: conftest.py プロジェクト: serious6/treeherder
def job_sample():
    return job_data()