def test_action_on_event(self): with job_config('task_1'): o1 = ops.user_define_operation(processor=None, a='a', name='1') with job_config('task_2'): o2 = ops.user_define_operation(processor=None, b='b', name='2') ops.action_on_event(job_name='task_1', sender='task_2', event_key='a', event_value='a') self.assertEqual(1, len(current_graph().edges)) edge: ControlEdge = current_graph().edges.get('task_1')[0] self.assertEqual('task_1', edge.destination) events = edge.scheduling_rule.event_condition.events event = next(iter(events)) self.assertEqual('task_2', event.sender) self.assertEqual('a', event.event_key) self.assertEqual('a', event.event_value)
def test_push_model(self): with job_config('task_1'): ops.push_model(pushing_model_processor=None, model_info=ModelMeta(name='model'), name='a') self.assertEqual(1, len(current_graph().nodes)) n = self.get_node_by_name('a') self.assertEqual('model', n.node_config.get('model_info').name)
def test_transform(self): with job_config('task_1'): o = ops.read_dataset(read_dataset_processor=None, dataset_info=DatasetMeta(name='dataset')) t = ops.transform(input=o, transform_processor=None) ops.write_dataset(input=t, dataset_info=DatasetMeta(name='dataset')) self.assertEqual(3, len(current_graph().nodes)) self.assertEqual(2, len(current_graph().edges))
def test_action_on_status(self): with job_config('task_1'): o1 = ops.user_define_operation(processor=None, a='a', name='1') with job_config('task_2'): o2 = ops.user_define_operation(processor=None, b='b', name='2') ops.action_on_job_status(job_name='task_1', upstream_job_name='task_2', upstream_job_status=Status.FINISHED, action=JobAction.START) self.assertEqual(1, len(current_graph().edges)) edge: ControlEdge = current_graph().edges.get('task_1')[0] self.assertEqual('task_1', edge.destination) events = edge.scheduling_rule.event_condition.events event = next(iter(events)) self.assertEqual('task_2', event.sender) self.assertEqual(AIFlowInternalEventType.JOB_STATUS_CHANGED, event.event_type) self.assertEqual(JobAction.START, edge.scheduling_rule.action)
def test_user_define_operation(self): with job_config('task_1'): o = ops.user_define_operation(processor=None, a='a', name='1') ops.user_define_operation(input=o, b='b', name='2') self.assertEqual(2, len(current_graph().nodes)) self.assertEqual(1, len(current_graph().edges)) node_0 = list(current_graph().nodes.values())[0] node_1 = list(current_graph().nodes.values())[1] self.assertEqual('mock', node_0.config.job_type) self.assertEqual('mock', node_1.config.job_type) self.assertEqual('a', self.get_node_by_name('1').node_config.get('a')) self.assertEqual('b', self.get_node_by_name('2').node_config.get('b'))
def test_model_validate(self): with job_config('task_1'): o = ops.read_dataset(read_dataset_processor=None, dataset_info=DatasetMeta(name='dataset')) t = ops.model_validate(input=o, model_validation_processor=None, model_info=ModelMeta(name='model'), name='a') self.assertEqual(2, len(current_graph().nodes)) self.assertEqual(1, len(current_graph().edges)) n = self.get_node_by_name('a') self.assertEqual('model', n.node_config.get('model_info').name)
def test_read_write_dataset(self): with job_config('task_1'): o = ops.read_dataset(read_dataset_processor=None, dataset_info=DatasetMeta(name='source')) ops.write_dataset(input=o, dataset_info=DatasetMeta(name='sink')) self.assertEqual(2, len(current_graph().nodes)) self.assertEqual(1, len(current_graph().edges)) node_list = list(current_graph().nodes.values()) for node in node_list: if isinstance(node, ReadDatasetNode): self.assertEqual('source', node.node_config.get('dataset').name) elif isinstance(node, WriteDatasetNode): self.assertEqual('sink', node.node_config.get('dataset').name) self.assertEqual('mock', node.config.job_type)
def test_train(self): with job_config('task_1'): o = ops.read_dataset(read_dataset_processor=None, dataset_info=DatasetMeta(name='dataset')) t = ops.train(input=o, training_processor=None, output_num=1, model_info=ModelMeta(name='model'), name='a') ops.write_dataset(input=t, dataset_info=DatasetMeta(name='dataset')) self.assertEqual(3, len(current_graph().nodes)) self.assertEqual(2, len(current_graph().edges)) n = self.get_node_by_name('a') self.assertEqual('model', n.node_config.get('model_info').name)
def test_job_context(self): workflow_config = current_workflow_config() workflow_config.job_configs['job_1'] = JobConfig(job_name='job_1') with job_config('job_1') as jc: self.assertEqual(jc.job_name, current_job_name())