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
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
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
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
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
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
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
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'
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'
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'
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
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
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)
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)
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