def test_build_and_run_instance(ebnt: Ebonite, regression_and_data, container_name, mock_env): reg, data = regression_and_data mock_env = ebnt.meta_repo.create_environment(mock_env) check_ebonite_port_free() model = ebnt.create_model(reg, data, 'test_model') p = mock_env.params with p.builder.build_image.called_within_context( ), p.runner.run.called_within_context(): instance = ebnt.build_and_run_instance(model, container_name, environment=mock_env) assert ebnt.get_environment( instance.environment.name) == instance.environment assert ebnt.get_image(instance.image.name, instance.image.task) == instance.image assert ebnt.get_instance(instance.name, instance.image, instance.environment) == instance with pytest.raises(ImageWithInstancesError): ebnt.delete_image(instance.image) with pytest.raises(EnvironmentWithInstancesError): ebnt.delete_environment(instance.environment) with p.runner.stop.called_within_context( ), p.runner.remove_instance.called_within_context(): ebnt.delete_instance(instance)
def test_delete_image__not_only_meta_ok(ebnt: Ebonite, image_to_delete: Image, mock_env_params): assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is not None assert image_to_delete.builder == mock_env_params.builder with mock_env_params.builder.delete_image.called_within_context(times=1): ebnt.delete_image(image_to_delete, False) assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is None
def test_delete_image__only_meta_ok(ebnt: Ebonite, image_to_delete: Image, instance: RuntimeInstance, mock_env_params): assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is not None instance.image = image_to_delete instance.environment = image_to_delete.environment ebnt.meta_repo.save_instance(instance) with mock_env_params.builder.delete_image.called_within_context(times=0): ebnt.delete_image(image_to_delete, True, True) assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is None
def delete_image_ok(ebnt: Ebonite, model: Model): task = ebnt.get_or_create_task('Project', 'Task') model = ebnt.push_model(model, task) image = Image(task_id=task.id, name='Image', source=BuildableMock()) image = ebnt.meta_repo.create_image(image) assert ebnt.meta_repo.get_task_by_id(task.id) is not None assert ebnt.meta_repo.get_model_by_id(model.id) is not None assert ebnt.meta_repo.get_image_by_id(image.id) is not None ebnt.delete_image(image) assert ebnt.meta_repo.get_image_by_id(image.id) is None
def test_delete_image__with_repo_ok(ebnt: Ebonite, image_to_delete: Image): assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is not None env = ebnt.get_default_environment() env.params = MockEnvironmentParams() ebnt.delete_image(image_to_delete, env, False) assert ebnt.meta_repo.get_image_by_id(image_to_delete.id) is None