def test_update_task_with_models(meta: MetadataRepository, project: Project, task: Task, model: Model): task.project = meta.create_project(project) task = meta.create_task(task) assert task is not None id = task.id model.task = task model = meta.create_model(model) task.add_model(model) task = update_object_fields(task, excepted_fields=['id', 'models', 'project_id']) model = update_object_fields(model, excepted_fields=[ 'id', 'wrapper', 'artifact', 'output_meta', 'input_meta', 'requirements', 'transformer', 'task_id' ]) updated_task = meta.update_task(task) assert id == task.id assert updated_task is task assert task == meta.get_task_by_id(task.id) assert len(task.models) == 1 assert model.id in task.models assert model == meta.get_model_by_id(model.id) assert meta.get_model_by_id(model.id).name == 'Test Model2' assert task.has_meta_repo
def test_update_task_is_reference(meta: MetadataRepository, project: Project, model: Model): task_entity = Task("Test Task") task_entity.project = meta.create_project(project) task = meta.create_task(task_entity) assert task is not None id = task.id model.task_id = task.id model = meta.create_model(model) task.name = "Test Task 2" task.add_model(model) task = meta.update_task(task) assert id == task.id assert "Test Task 2" == task.name assert model == task.models.get(model.id) task.name = "KEK" actual_task = meta.get_task_by_id(task.id) assert_objects_equal_except_fields(task, actual_task, excepted_fields=['name'])
def delete_pipeline_ok(ebnt: Ebonite, task_b: Task, pipeline: Pipeline): task_b.add_pipeline(pipeline) assert ebnt.meta_repo.get_task_by_id(task_b.id) is not None assert ebnt.meta_repo.get_pipeline_by_id(pipeline.id) is not None ebnt.delete_pipeline(pipeline) assert ebnt.meta_repo.get_pipeline_by_id(pipeline.id) is None
def factory(saved=False): nonlocal counter counter += 1 task = Task('Test Task-{}'.format(counter)) if saved: project = project_factory(True) project.add_task(task) task.bind_dataset_repo(dataset_repo) return task
def delete_task(self, task: Task): if task.id is None: raise NonExistingTaskError(task) if self.get_models(task) or self.get_pipelines( task) or self.get_images(task): raise TaskWithFKError(task) self.data.remove_task(task.id) self.save() task.unbind_meta_repo()
def test_task__delete_model(task_b: Task, model): task_b.add_model(model) assert model.id is not None assert model.task_id is not None task_b.delete_model(model) assert len(task_b.models) == 0 assert model.id is None assert model.task_id is None
def test_save_not_existing_task(meta: MetadataRepository, project: Project): project = meta.create_project(project) task = Task("Task") task.project = project saved_task = meta.save_task(task) assert saved_task.name == task.name assert saved_task.project_id == task.project_id assert task.name == meta.get_task_by_id(saved_task.id).name assert task.has_meta_repo
def test_save_task_is_reference(meta: MetadataRepository, project: Project): project = meta.create_project(project) task = Task("Task") task.project = project saved_task = meta.save_task(task) saved_task.name = "KEK" actual_task = meta.get_task_by_id(saved_task.id) assert_objects_equal_except_fields(saved_task, actual_task, excepted_fields=['name'])
def test_create_existing_task(meta: MetadataRepository, project: Project, task: Task, task2: Task): project_id = meta.create_project(project).id task.project_id = project_id task = meta.create_task(task) assert task is not None task2.name = task.name task2.project_id = project_id with pytest.raises(ExistingTaskError): meta.create_task(task2)
def test_create_task_is_reference(meta: MetadataRepository, project: Project, task: Task): task.project_id = meta.create_project(project).id expected_task = meta.create_task(task) assert expected_task is not None task.name = "KEK" actual_task = meta.get_task_by_id(expected_task.id) assert_objects_equal_except_fields(expected_task, actual_task, excepted_fields=['name'])
def test_task__add_model__new(set_task_id, meta: MetadataRepository, task_b: Task, model_factory): assert len(task_b.models) == 0 model: Model = model_factory() if set_task_id: model.task = task_b task_b.add_model(model) assert len(task_b.models) == 1 model_id = model.id assert model_id is not None assert model == meta.get_model_by_id(model_id) assert model == task_b.models[model_id] assert model == task_b.models(model.name)
def test_task__add_models(task_b: Task, model_factory, meta: MetadataRepository): models = [model_factory() for _ in range(5)] assert len(task_b.models) == 0 task_b.add_models(models) assert len(task_b.models) == 5 for m in models: model_id = m.id assert model_id is not None assert m == meta.get_model_by_id(model_id) assert m == task_b.models[model_id] assert m == task_b.models(m.name)
def test_save_updated_existing_task(meta: MetadataRepository, project: Project): project = meta.create_project(project) task = Task("Task") task.project = project task = meta.create_task(task) task = update_object_fields(task, excepted_fields=['id', 'models', 'project_id']) saved_task = meta.save_task(task) assert saved_task == task assert task == meta.get_task_by_id(saved_task.id)
def test_pipeline_buildable(metadata_repo, pipeline): proj = Project('proj') task = Task('Test Task') proj = metadata_repo.create_project(proj) task.project = proj task = metadata_repo.create_task(task) pipeline.task = task pipeline = metadata_repo.create_pipeline(pipeline) buildable = PipelineBuildable(pipeline, server_type=FlaskServer.type) assert buildable.get_provider().get_python_version( ) == platform.python_version() assert buildable.task.name == 'Test Task' assert buildable.pipeline == pipeline
def test_update_model_source_is_changed(meta: MetadataRepository, project: Project, task: Task, model: Model): task.project = meta.create_project(project) task = meta.create_task(task) assert task is not None model.task_id = task.id saved_model = meta.create_model(model) assert saved_model is not None id = saved_model.id saved_model = update_object_fields(model, excepted_fields=[ 'id', 'wrapper', 'artifact', 'output_meta', 'input_meta', 'requirements', 'transformer', 'task_id' ]) saved_model = meta.update_model(saved_model) assert id == saved_model.id assert model == meta.get_model_by_id(saved_model.id) assert model is saved_model
def test_update_not_existing_task(meta: MetadataRepository, project: Project, task: Task): project = meta.create_project(project) assert project is not None task.project = project with pytest.raises(NonExistingTaskError): meta.update_task(task)
def test_get_task_by_name(meta: MetadataRepository, project: Project, task: Task): project = meta.create_project(project) task.project = project task_new = meta.create_task(task) assert task_new is not None assert task_new == meta.get_task_by_name(project, task.name) assert task.has_meta_repo
def test_get_models(meta: MetadataRepository, project: Project, task: Task, model: Model): task.project = meta.create_project(project) created_task = meta.create_task(task) model.task = created_task created_model = meta.create_model(model) actual_models = meta.get_models(created_task) assert actual_models == [created_model]
def to_obj(self) -> Task: task = Task(id=self.id, name=self.name, author=self.author, creation_date=self.creation_date, project_id=self.project_id) for model in self.models: task._models.add(model.to_obj()) return self.attach(task)
def test_get_task_by_id(meta: MetadataRepository, project: Project, task: Task): project = meta.create_project(project) task.project_id = project.id task_new = meta.create_task( task) # Assume that we do not change the task var in the create_task. assert task_new is not None assert task_new == meta.get_task_by_id(task_new.id) assert task.has_meta_repo
def test_delete_task(meta: MetadataRepository, project: Project, task: Task): task.project = meta.create_project(project) task = meta.create_task(task) assert task is not None meta.delete_task(task) assert meta.get_task_by_id(task.id) is None assert not task.has_meta_repo assert task.id is None
def test_update_not_existing_model(meta: MetadataRepository, project: Project, task: Task, model: Model): task.project = meta.create_project(project) task = meta.create_task(task) assert task is not None model.task_id = task.id with pytest.raises(NonExistingModelError): meta.update_model(model)
def test_create_model_source_is_changed(meta: MetadataRepository, project: Project, task: Task, model: Model): task.project = meta.create_project(project) task = meta.create_task(task) assert task is not None model.task_id = task.id saved_model = meta.create_model(model) assert saved_model is model
def test_create_model(meta: MetadataRepository, project: Project, task: Task, model: Model): task.project = meta.create_project(project) task = meta.create_task(task) assert task is not None model.task_id = task.id model = meta.create_model(model) assert model is not None assert model.has_meta_repo
def test_multimodel_buildable(metadata_repo): # Dunno why, but it only worked w/o fixtures proj = Project('proj') task = Task('Test Task') mdl = Model.create(lambda data: data, 'input', 'test_model') proj = metadata_repo.create_project(proj) task.project = proj task = metadata_repo.create_task(task) mdl.task = task mdl = metadata_repo.create_model(mdl) with pytest.raises(ValueError): MultiModelBuildable([], server_type=FlaskServer.type) assert mdl.has_meta_repo mm_buildable = MultiModelBuildable([mdl], server_type=FlaskServer.type) assert mm_buildable.task.name == 'Test Task' assert mm_buildable.get_provider().get_python_version( ) == platform.python_version() assert len(mm_buildable.models) == 1
def test_save_existing_model(meta: MetadataRepository, project: Project, task: Task, model: Model): project = meta.create_project(project) task.project = project task = meta.create_task(task) model.task_id = task.id model = meta.create_model(model) saved_model = meta.save_model(model) assert saved_model.id == model.id assert saved_model.task_id == model.task_id assert model == meta.get_model_by_id(saved_model.id)
def test_create_existing_model(meta: MetadataRepository, project: Project, task: Task, model: Model, model2: Model): task.project = meta.create_project(project) task = meta.create_task(task) assert task is not None model.task_id = task.id model = meta.create_model(model) assert model is not None model2.task_id = task.id model2.name = model.name with pytest.raises(ExistingModelError): meta.create_model(model2)
def create_task(self, task: Task) -> Task: self._validate_task(task) existing_project = self.get_project_by_id(task.project_id) if existing_project is None: raise NonExistingProjectError(task.project_id) existing_task = self.get_task_by_name(existing_project, task.name) if existing_task is not None: raise ExistingTaskError(task) task._id = self.data.get_and_increment('next_task_id') self.data.add_task(copy.deepcopy(task)) self.save() return task
def test_save_model_is_reference(meta: MetadataRepository, project: Project, task: Task, model: Model): project = meta.create_project(project) task.project = project task = meta.create_task(task) model.task_id = task.id saved_model = meta.save_model(model) saved_model.name = "KEK" actual_model = meta.get_model_by_id(saved_model.id) assert_objects_equal_except_fields(saved_model, actual_model, excepted_fields=['name'])
def test_get_or_create_task_exists(meta: MetadataRepository, project: Project, task: Task): task.project = meta.create_project(project) expected_task = meta.create_task(task) actual_task = meta.get_or_create_task(project.name, expected_task.name) assert actual_task is not None assert expected_task == actual_task assert id(expected_task) != id(actual_task) project = meta.get_project_by_name(project.name) assert expected_task in project.tasks.values() assert expected_task.project_id == actual_task.project_id assert actual_task.has_meta_repo