Пример #1
0
 def test_update_job_status(self, et_scanner_fixture):
     # Simple test for now
     scanner = et_scanner_fixture
     row = FakeScheduledJob(SCHEDULED_JOB_INPUT_DICT)
     assert scanner._update_job_status_conditionally(row)
     assert row.get(
         et_status=None)['et_status'] == JOBS_ETL_STATUS_SCHEDULED
Пример #2
0
 def test_max_complete_data_available(self, get_base_scanner):
     scanner = get_base_scanner
     row = copy(SCHEDULED_JOB_INPUT_DICT)
     row_obj = FakeScheduledJob(row)
     with mock.patch.object(
             scanner, '_get_max_complete_date', autospec=True, return_value='2015-03-20') as \
             mocked_get_max_complete_date:
         assert scanner._get_max_available_date(row_obj) == '2015-03-20'
         assert mocked_get_max_complete_date.call_count == 1
Пример #3
0
    def test_create_work_update_failed(self, et_scanner_fixture):
        scanner = et_scanner_fixture
        row = FakeScheduledJob(SCHEDULED_JOB_INPUT_DICT)
        with mock.patch.object(scanner,
                               '_update_job_status_conditionally',
                               autospec=True,
                               return_value=False) as mocked_scanner:
            scanner._create_work_for_job(row)
            assert mocked_scanner.call_count == 1

        assert scanner.worker_queue._published_msg is None
Пример #4
0
    def test_should_process_job_data_available_now(self, et_scanner_fixture,
                                                   last_et_date,
                                                   availability_time, result):
        scanner = et_scanner_fixture
        row = copy(SCHEDULED_JOB_INPUT_DICT)
        row['et_last_successful_date'] = last_et_date
        if availability_time is not None:
            row['time_log_need_to_be_available'] = availability_time
        row = FakeScheduledJob(row)

        assert scanner._should_process_job(row) == result
Пример #5
0
 def test_get_max_complete_date(self, get_base_scanner):
     row = copy(SCHEDULED_JOB_INPUT_DICT)
     row_obj = FakeScheduledJob(row)
     with mock.patch(
             'mycroft.backend.scanners.base_scanner.get_log_meta_data',
             autospec=True,
             return_value={'log': {
                 'max_complete_date': '2015-03-15'
             }}) as mocked_get_log_meta_data:
         assert get_base_scanner._get_max_available_date(
             row_obj) == '2015-03-15'
         assert mocked_get_log_meta_data.call_count == 1
Пример #6
0
    def test_data_available_for_date_available_case(self, get_base_scanner):
        scanner = get_base_scanner
        row = copy(SCHEDULED_JOB_INPUT_DICT)
        row['time_log_need_to_be_available'] = '22:59'

        row_obj = FakeScheduledJob(row)
        ret = datetime.datetime(2014, 9, 3, 23, 0, 0)
        with mock.patch.object(
                scanner, '_get_utc_now', autospec=True, return_value=ret) as \
                mocked_time:
            assert scanner._data_available_for_date(row_obj, '2014-09-01')
            assert mocked_time.call_count == 1
Пример #7
0
    def test_create_work(self, et_scanner_fixture, start_date, end_date,
                         et_status, last_et, res_start, res_end):
        scanner = et_scanner_fixture
        row = copy(SCHEDULED_JOB_INPUT_DICT)
        row['start_date'] = start_date
        row['end_date'] = end_date
        row['et_status'] = et_status
        row['et_last_successful_date'] = last_et
        row_dbobj = FakeScheduledJob(row)

        scanner._create_work_for_job(row_dbobj)
        msg = scanner.worker_queue._published_msg
        assert msg is not None
        assert msg['start_date'] == row['start_date']
        assert msg['end_date'] == row['end_date']
        assert msg['job_type'] == 'ET'
        assert msg['script_start_date_arg'] == res_start
        assert msg['script_end_date_arg'] == res_end
Пример #8
0
    def test_create_work_job_range_current_run_till_yesterday_data_unavail_now(
            self, et_scanner_fixture):
        scanner = et_scanner_fixture
        row = copy(SCHEDULED_JOB_INPUT_DICT)
        row['start_date'] = '2014-09-01'
        row['end_date'] = None
        row['et_status'] = 'null'
        yesterday = (datetime.datetime.utcnow() - timedelta(days=1))\
            .strftime("%Y-%m-%d")
        row['et_last_successful_date'] = '2014-09-03'
        next_min = (datetime.datetime.utcnow() + timedelta(minutes=1)).\
            strftime("%H:%M")
        row['time_log_need_to_be_available'] = next_min
        row = FakeScheduledJob(row)

        scanner._create_work_for_job(row)
        msg = scanner.worker_queue._published_msg
        assert msg is not None
        assert msg[
            'script_start_date_arg'] == '2014-09-04'  # et_last_success plus 1
        assert msg[
            'script_end_date_arg'] == yesterday  # today's data is not available
        assert msg['job_type'] == 'ET'
Пример #9
0
 def test_time_log_need_to_be_avail_from_additional_arguments(
         self, get_base_scanner):
     scanner = get_base_scanner
     entry = FakeScheduledJob(
         SCHEDULED_JOB_INPUT_DICT_CUSTOM_TIME_LOG_AVAIL)
     assert scanner._get_time_log_need_to_be_available(entry) == '12:30'
Пример #10
0
 def test_time_log_need_to_be_avail(self, get_base_scanner):
     scanner = get_base_scanner
     entry = FakeScheduledJob(SCHEDULED_JOB_INPUT_DICT)
     assert scanner._get_time_log_need_to_be_available(entry) == '48:00'
Пример #11
0
 def test_should_process_job(self, et_scanner_fixture, job_dict, result):
     scanner = et_scanner_fixture
     row = FakeScheduledJob(job_dict)
     assert scanner._should_process_job(row) == result
Пример #12
0
 def test_action_pending(self, et_scanner_fixture, actions, result):
     scanner = et_scanner_fixture
     row = FakeScheduledJob(SCHEDULED_JOB_INPUT_DICT)
     ret = row.update(**actions)
     assert ret is True
     assert scanner._action_pending(row) == result
Пример #13
0
 def test_should_process_job_start_in_future(self, get_base_scanner):
     scanner = get_base_scanner
     entry = FakeScheduledJob(SCHEDULED_JOB_WITH_FUTURE_START_DATE)
     assert not scanner._should_process_job(entry)
Пример #14
0
 def test_should_process_job_start_in_past(self, get_base_scanner):
     scanner = get_base_scanner
     entry = FakeScheduledJob(SCHEDULED_JOB_INPUT_DICT)
     assert scanner._should_process_job(entry)
Пример #15
0
 def test_update_job_status(self, et_scanner_fixture):
     # Simple test for now
     scanner = et_scanner_fixture
     row = FakeScheduledJob(SCHEDULED_JOB_INPUT_DICT)
     assert scanner._update_job_status_conditionally(row)
     assert row.get(et_status=None)['et_status'] == JOBS_ETL_STATUS_SCHEDULED
Пример #16
0
 def test_action_pending(self, et_scanner_fixture, actions, result):
     scanner = et_scanner_fixture
     row = FakeScheduledJob(SCHEDULED_JOB_INPUT_DICT)
     ret = row.update(**actions)
     assert ret is True
     assert scanner._action_pending(row) == result