def test_gather_deps(): tsk = luigi.Task() deps = gather_deps(tsk) assert deps == set() class T1(luigi.Task): def requires(self): return luigi.Task() pass class T2(luigi.Task): def requires(self): return T1() pass class T3(luigi.Task): def requires(self): return [T2(), T1()] pass tsk = T3() deps = gather_deps(tsk) assert deps == {T2(), T1(), luigi.Task()}
def test_success_empties_queue(self): """Test success event empties the failure queue""" bot = SlackBot(self.token, events=[SUCCESS, FAILURE], channels=self.channels) bot.set_handlers() task1 = luigi.Task() # task1 and task2 have the same task_id task2 = luigi.Task() self.assertEqual(len(bot.event_queue.get(FAILURE, [])), 0) task2.trigger_event(luigi.event.Event.FAILURE, task2, Exception()) self.assertEqual(len(bot.event_queue.get(FAILURE)), 1) task1.trigger_event(luigi.event.Event.SUCCESS, task1) self.assertEqual(len(bot.event_queue.get(FAILURE)), 0)
def test_success(self): """Test successful task if queued""" bot = SlackBot(self.token, events=[SUCCESS], channels=self.channels) bot.set_handlers() task = luigi.Task() self.assertEqual(len(bot.event_queue.get(SUCCESS, [])), 0) task.trigger_event(luigi.event.Event.SUCCESS, task) self.assertEqual(len(bot.event_queue.get(SUCCESS)), 1)
def test_missing(self): """Test missing dependency event adds task in queue""" bot = SlackBot(self.token, events=[MISSING], channels=self.channels) bot.set_handlers() task = luigi.Task() self.assertEqual(len(bot.event_queue.get(MISSING, [])), 0) task.trigger_event(luigi.event.Event.DEPENDENCY_MISSING, task) self.assertEqual(len(bot.event_queue.get(MISSING)), 1)
def test_failure(self): """Test failure event adds task in queue""" bot = SlackBot(self.token, events=[FAILURE], channels=self.channels) bot.set_handlers() task = luigi.Task() self.assertEqual(len(bot.event_queue.get(FAILURE, [])), 0) task.trigger_event(luigi.event.Event.FAILURE, task, Exception()) self.assertEqual(len(bot.event_queue.get(FAILURE)), 1)
def test_start(self): """Test start event adds task in queue""" bot = SlackBot(self.token, events=[START], channels=self.channels) bot.set_handlers() task = luigi.Task() self.assertEqual(len(bot.event_queue.get(START, [])), 0) task.trigger_event(luigi.event.Event.START, task) self.assertEqual(len(bot.event_queue.get(START)), 1)
def test_event_not_implemented(self): """Test processing time event is not implemented yet""" bot = SlackBot(self.token, events=[PROCESSING_TIME], channels=self.channels) bot.set_handlers() task = luigi.Task() self.assertRaises( NotImplementedError, task.trigger_event(luigi.event.Event.PROCESSING_TIME, task))
def test_serialize(): task = luigi.Task() param = DictParameterPlus(default={ 'first': 1, 'second': 'a', 'third': task }) _json = param.serialize(task) assert type(_json) is str assert len(_json) > 0
def test_no_unpicklable_properties(self): task = luigi.Task() task.set_tracking_url = lambda tracking_url: tracking_url task.set_status_message = lambda message: message with task.no_unpicklable_properties(): pickle.dumps(task) self.assertIsNotNone(task.set_tracking_url) self.assertIsNotNone(task.set_status_message) tracking_url = task.set_tracking_url('http://test.luigi.com/') self.assertEqual(tracking_url, 'http://test.luigi.com/') message = task.set_status_message('message') self.assertEqual(message, 'message')
def test_different_task_doesnt_empty_queue(self): """Test a successful task doesn't empty queue with different task""" class CustomTask(luigi.Task): pass bot = SlackBot(self.token, events=[SUCCESS, FAILURE], channels=self.channels) bot.set_handlers() task1 = luigi.Task() # task1 and task2 have different task_id task2 = CustomTask() self.assertEqual(len(bot.event_queue.get(FAILURE, [])), 0) task2.trigger_event(luigi.event.Event.FAILURE, task2, Exception()) self.assertEqual(len(bot.event_queue.get(FAILURE)), 1) task1.trigger_event(luigi.event.Event.SUCCESS, task1) self.assertEqual(len(bot.event_queue.get(FAILURE)), 1)
def test_externalized_task_picklable(self): task = luigi.task.externalize(luigi.Task()) pickled_task = pickle.dumps(task) self.assertEqual(task, pickle.loads(pickled_task))
def test_encoder(): encoder = _DictParamEncoderPlus() task = luigi.Task() for value in [1, 1.0, 'a', (1, 2), task]: encoder.default(value)
def requires(self): return luigi.Task()